This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS:我需要带MSP430的ADS8332示例代码.... plz plz帮助我

Guru**** 2601915 points
Other Parts Discussed in Thread: ADS8332

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/639609/ccs-i-want-to-need-example-code-of-ads8332-with-msp430-plz-plz-help-me

在“线程:ADS8332”中讨论的其它部件

工具/软件:Code Composer Studio

我需要带MSP430的ADS8332示例代码....plz plz帮助我....... 过去一周我尝试了,但我找不到解决方案,所以… 请帮我

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    以下资源(尽管未使用所需的确切器件)演示了MSP430 SPI与ADSxx ADC的通信

    e2e.ti.com/.../47.4562万
    www.ti.com/.../430boost-ads1118
    www.ti.com/.../BOOST-ADS7042

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Ryan:

    我写了代码并浪费了3天,但无法读取CFR寄存器.......... 这是代码......

    SPI初始化中是否有任何问题..........................

    我 使用了24MHZ晶体....

    如果您有示例代码,请发送我................

    在EMAIL-hitesh.mathukiya@gmail.com中

    #include<MSP430-h>

    #include"sps_ppm.h"(包括"sps_ppm.h")

    #include"sps_clock.h"

    #include"sps_gPI.h"

    //------------------ Hitesh------------------

    #定义     无操作     0x00

    #定义     conv_high    P3OUT |= BIT6

    #定义     conv_low    P3OUT &=~ BIT6

    #定义     RESET_HIGH P3OUT |= BIT5

    #定义     RESET_LOW P3OUT &=~ BIT5

    #定义     CS_LOW   P4OUT &=~ BIT0

    #定义     Cs_high  P4OUT |= BIT0

    #定义     SCLK    BIIT2                //UCA0CLK

    #定义     SDI     BIT0                //UCA0SIMO

    #定义     SDO     BIT1.                //UCA0SOMI

    /*WRITE CFR=1110=E

    选择analog channel=0111=7

    阅读CFR=1100=C

    */

    unsigned char select_manual_channel[4]={0xE2,0XFD};//make D11=0 for manual CHANNNEL//internal   reference=FFFc 4.096 ,范围为:选择Vref*FFC=5.12V ,因此在5.12V时提供1.25 ,在0V时提供0000

    unsigned char select_Auto_channel[4]={0xE2,0XFD};//make D11=1 for Auto channel

    无符号字符        write_CFR[4]={0xE0XAA,0X00,0X00);//使用手动通道写入CFR

    unsigned char select_analog_channel[4]={0x72,0XFD};//选择模拟通道

    unsigned char read_CFR[8]={0xC0,0X00,0X00,0X00};//读取CFR

    unsigned char channel_0[4]={0X02,0XFD};//选择CHANNEL0

    unsigned char channel_1[4]={0X12,0XFD};//选择Channel1

    unsigned char channel_2[4]={0X220XFD};//选择CHANNEL2

    unsigned char channel_3[4]={0X32,0XFD};//选择CHANNEL3

    unsigned char channel_4[4]={0X42,0XFD};//选择CHANNEL4.

    unsigned char channel_5[4]={0X52,0XFD};//选择CHANNEL5

    unsigned char channel_6[4]={0X62,0XFD};//选择CHANNEL6.

    unsigned char channel_7[4]={0X72,0XFD};//选择CHANNEL7

    unsigned char rec;

    unsigned char response_buffer1[300];

    unsigned char j=0,xoo,data_comin=0,jj=0;

    unsigned int iii=0;

    unsigned char byte[5],pin_init=1;

    无符号char标志=0;

    unsigned char nop_flag=0;

    unsigned int next数据[11];

    浮点con_data;

    long next数据1;

    长avg_data=0;

    unsigned int adc_data1,final_data=0;

    unsigned char data_hitesh[5];

    无符号int计数,n;

    unsigned char all_channel=1;

    unsigned char send_all_data=0,data_is_receive =0,send_one_data=0,no_send_data=0,channel=0,select_mix_4067=0,select_mix_4067_flag=0,switch_all_channel=1;

    无符号字符enigma=0;

    unsigned int Get_Get=0;

    unsigned char response_buffer2[50];

    unsigned int next _inc = 0;

    void reset();

    void round-off-the_bit();

    void nop();

    void write_range_sel_REG_Register1();

    void transfer_frame(unsigned char frame_data);

    void spi_init();

    void con_all_channel();

    void Get_data (无符号int hh);

    void pheonix_execute_default_ip_sequence();

    //---------------- Hitesh------------------

    //________________________________________________________________ 时钟相关功能

    void pheonix_set_pMM_lever_of_24_MHz();

    void pheonix_initialize_the_clock();

    //________________________________________________________________ 时钟相关变量

    bool bReturn = status_fail;

    内部主(无效)

      WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器

      pheonix_initalize_all_gpio_ports();

      pheonix_set_PMM_levate_of_24_MHz();

      pheonix_initialize_the_clock();

      //----------- SPI-------------------------------------------------------------------------------------

      SPI_init();

      reset();

      write_range_sel_REG_Register1();

      //----------- Hitesh------------------

      __bis_sr_register (GIE);

      同时(1)

      {

           对于(i=0;i<=3;i++){

             transfer_frame (write_CFR[I]);

           }

        对于(i=0;i<=1;i++){

          transfer_frame (read_CFR[I]);

        }

      }

    }

    void reset()

    // reset_high;

      低;

        RESET_LOW;

         __DELAY周期(1万);

         //reset_low;

         RESET_HIGH;

         __DELAY周期(2万);

         // reset_high;

         高;

    }

    //________________________________________________________________ 时钟________________________________________________________________

    void pheonix_set_pMM_lever_of_24_MHz()

      pheonix_set_v_core_to_lever(PMM_core_lever_1);

      __DELAY周期(10万);

      pheonix_set_v_core_to_lever( PMM_core_lever_2);

      __DELAY周期(10万);

      pheonix_set_v_core_to_lever( PMM_core_lever_3);

      __DELAY周期(10万);

    }

    void pheonix_initialize_the_clock()

      UCS_setExternalClockSource (3.2768万,24000000);// XT1CLK输入,// XT2CLK输入

      UCS_TurnOffXT1();

      bReturn = STATUS_FAIL;

      做

      {

        bReturn = UCS_turnOnXT2WithTimeout (UCS_XT2_DRIVE_24MHZ_32MHz,5万);

        __DELAY周期(5万);

      }

      同时(!bReturn);

      如果(bReturn == status_fail)

      {

        同时(1);

      }

      UCS_initClockSignal (UCS_ACLK,UCS_REFOCLK_SELECT,UCS_CLock_diver_1);

      UCS_initClockSignal (UCS_MCLK,UCS_XT2CLK_SELECT,UCS_CLock_diver_1);

      UCS_initClockSignal (UCS_SMCLK,UCS_XT2CLK_SELECT,UCS_CLock_diver_1);

    }

    //________________________________ Hitesh________________________________________________________

    //------------------

    void spi_init(){

      UCB0CTL1 |= UCSWRST;            //**将状态机置于复位**

      UCB0CTL0 |= UCMST+UCSYNC+UCMODE_1+UCMSB+UCCKPL;  // 3引脚,8位SPI主控  UCCKPL+

      UCB0CTL0 &=~(UC7BIT+UCPEN+UCCKPH);          //gettinng设备ID正确

      //时钟极性高,MSB

      UCB0CTL1 || UCSSEL_1;           // SMCLK

      UCB0BR0 = 0x02;              ///2

      UCB0BR1 = 0;                //

      UCB0CTL1 &=~UCSWRST;           //**初始化USCI状态机**

      //UCA0IE |= UCRXIE;             //启用USI_A0 RX中断

    }

    void nop()

      NOP_FLAG=1;

      int i=0;

     // CS_LOW;

      对于(i=0;i<=3;i++){

        transfer_frame (NOP);

      }

     // CS_HIGH;

      NOP_FLAG=0;

      //RESET_HIGH;

      // reset_low;

    }

    void write_range_sel_REG_Register1()

      int i=0;

     //  reset_high;

     // reset_low;

      // _延迟周期(1万);

      // reset_high;

     // CS_HIGH;

      对于(i=0;i<=8;i++){

        transfer_frame (read_CFR[I]);

      }

      //nop();

      i=0;

    // CS_LOW;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (write_CFR[I]);

      }

      i=0;

      高;

      低;

      对于(i=0;i<=4;i++){

        transfer_frame (read_CFR[I]);

      }

      //nop();

      i=0;

      高;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (select_manual_channel[i]);

      }

      i=0;

      高;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (write_CFR[I]);

      }

      i=0;

      高;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (select_analog_channel[i]);

      }

      i=0;

      高;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (read_CFR[I]);

      }

      i=0;

      NOP ();

      高;

      低;

      对于(i=0;i<=3;i++){

        transfer_frame (channel_3[i]);

      }

      i=0;

      高;

    }

    void transfer_frame(unsigned char frame_data){

      while (!(UCB0IFG和UCTXIFG));

      UCB0TXBUF=frame_data;//WFP 3.3  

      while (!(UCB0IFG和UCRXIFG));

      REC=UCB0RXBUF;

      //byte[iii]= UCB0RXBUF; // WFP 3.4

      III++;

      如果(iii>1){

        III=0;

        next数据[j]=(int)((byte[1]<0)& 0xFF)+(byte[0]<8)& 0xff);

        AVG_DATA=NEXT_DATA[j]+AVG_DATA;

        J++;

        如果(j>5){

          final_data=avg_data/6; ///用6个数据求平均值

          J=0;

          AVG_DATA=0;

          COUNT++;

          Enigma=1;

        }

        next _data1=((((Long) final_data)*4300); //REFERANCE 6.144 VOLT (4.3 数据=REFERANCE 4.3 电压)

        con_data=(float)((next数据1)/0xffff); //devide by=FFFC

        adc_data1=con_data;

        //data[3]=((ADC_data1 % 10))+0x30;

        DATA_Hitesh[0]=(ADC_DATa1/1万)+0x30;  //将小数转换为ASCI  5 ASCI值0x35

        DATA_Hitesh[1]=((ADC_DATa1 % 1万)/1000)+0x30;  //将十进制数转换为ASCI  5十六进制值0x35

        DATA_Hitesh[2]=((ADC_data1 % 1000)/ 100)+0x30;

        DATA_Hitesh[3]=((ADC_data1 % 100)/ 10)+0x30;

        DATA_Hitesh[4]=((ADC_data1 % 10))+0x30;

      }

    }

    void Get_data (无符号int hh)

      /*unsigned char Lexi_1,Lexi_2;

      Lexi_1=(all_channel/10)+0x30;

      Lexi_2=(all_channel%10)+0x30;*/

      response_buffer1[hh]=data_hitesh[0];

      Response_buffer1[h+1]=data_hitesh[1];

      response_buffer1[h+2]='.';

      //Response_buffer1[h+2]=;

      Response_buffer1[h+3]=data_hitesh[2];

      Response_buffer1[h+4]=data_hitesh[3];

      Response_buffer1[h+5]=',';

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Hitesh,您好!

    您使用的MSP430器件系列是什么?您遇到的具体问题是什么? 您能否提供示波器或逻辑分析仪的通信屏幕截图? 如果时钟极性较高,则应在第一个UCLK边缘(UCCKPH集)上捕获数据。 UCSSEL_1也是ACLK源选择,而不是SMCLK。 我看不到您在何处初始化SPI功能的GPIO (设置P3SEL.x位)。

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于不活动,此线程正在关闭。

    Ryan