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.

[参考译文] ADS1218:ADS1218的代码示例

Guru**** 2560390 points
Other Parts Discussed in Thread: ADS1218, ADS1220, MSP430F5528, MSP430F149

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/625061/ads1218-code-examples-of-ads1218

部件号:ADS1218
主题中讨论的其他部件: MSP430F5528ADS1220MSP430F149

大家好,我尝试将ADS1218与MSP430配合使用。 但是,我找不到ADS1218的任何代码示例。 是否有人可以将代码发布或发送到我的电子邮件(wt2009.4324万@1563.com)1563.)? 非常感谢。

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

    您好,用户490.8522万,

    遗憾的是,我们没有用于ADS1218的MSP430示例代码。  尽管该项目适用于不同的处理器,但在该项目的某些部分中可能会有一些有用的代码来帮助您入门:

    https://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/ads1216

    下面的链接用于介绍MSP430F5528 MSP430外设的使用和设置的ADS1220示例代码。  这可能有助于了解SPI通信的设备设置。

    https://e2e.ti.com/support/data_converters/precision_data_converters/w/design_notes/2635.ads1220-example-code</s>1220

    此致,

    Bob B

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

    非常感谢您的回复。 您提供的代码示例对我有很大帮助。 现在,我要对ADS1218进行实验。 如果测试正常,我将发布最终代码。

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

    Bob,您好!

    很抱歉再次打扰你。 最近,我开始使用MSP430F149测试ADS1218。 但是 ,ADC不起作用。 我配置ADC设置寄存器并将电压参考电压设置为1.25V。 但电压参考输出始终为2.5V。  我发现SPI在发送命令时使用示波器观察DOUT,DIN,SCLK,CS线,工作良好。 ADC的电源为3V。 ADC的POL引脚设置为高电平。 和下面的SPI程序和ADC配置程序列表。 您能否就这个问题提供一些建议,非常感谢。

    //**** SPI初始化代码******* //

    #include <msp430x14x.h>

    #include "SPI.h"

    void SPI_Init()

    //将引脚设置为USART端口

     P3sel|=BIT1+BIT2+BIT3;

    //停止USART  

     UCTL0|=SWRST;   

    // 8位模式,SPI主控

     UCTL0|=char+sync+mm;   

    //将SMCLK作为USART时钟,在此程序中,SMCLK=1MHz

     UTCTL0|=SSEL1;  

    //设置SCLK=100kHz  

     UBR00=0x0A;

     UBR10=0x00;

    //在SPI主模式下禁用UMCTL0  

     UMCTL0=0x00;

    // 3线SPI  

     UTCTL0|=STC;    

    //配置SCLK相位和极性,01

     UTCTL0&=~(TKPH);

     UTCTL0|=CKPL;  

    //启用USART模块  

     U0ME=USPIE0;   

     UCTL0&=~SWRST;  

    //启用传输和接收中断  

     IE1|=URXIE0+UTXIE0; //使能发送和接收中断

    }

    //******** ADS1218初始化和配置代码******* //

    //

    //        MSP430F149

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

    //      |          |

    //      |          |

    //      |       WFP 3.6 |<--DRDY

    //      |          |     

    //      |       WFP 3.3 |-->SCLK.     

    //      |          |

    //      |       WFP 3.2 |<--SOMI (DOUT)

    //      |          |

    //      |       WFP 3.1 |<--SIMO (DIN)

    //      |          |

    //      |       WFP 3.0 |-->CS

    //      |          |

    //      |          |

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

    //

    //

    //       

    //       日期:2017/09/26

    #include <msp430x14x.h>

    包含"ADS1218.h"

    包含"delay.h"

    void ADS1218_Init()

     ADS1218_CSHigh; //禁用ADS1218

     P3DIR|=BIT0;   // ADS1218的CS引脚

     P3DIR&=~BIT6;  // ADS1218的DRDY引脚  

    }

    void ADS1218_Config()

     无符号char Temp;

     TEMP=ADS1218P0|ADS1218NCOM;</s>1218

     ADS1218_WRReg (ASD1218_MUX,0x01,&Temp);//chosse channel AIN0-Acom

     TEMP=REFEN;            // IRV=1.25V,FMod=fosc/128,Buffer Disabled,MSB transmitted first

     temp&=~REFHI;

     ADS1218_WRReg (ADS1218_Setup,0x01& Temp);

     temp=ADS1218PGA1;

     ADS1218_WRReg (ADS1218_ACR,0x01& Temp);

     temp=SMODE3|Ub|0x03;          //选择sinc3过滤器,非生物聚合物数据格式,小数高3位

     ADS1218_WRReg (ADS1218_DEC1,0x01,&Temp);

     temp=0xFF;

     ADS1218_WRReg (ADS1218_DEC0,0x01,&Temp);

    }

    void ADS1218_WRReg (unsigned char StartAddress,unsigned char NumReg,unsigned char *pData)

     无符号字符I;

     ADS1218_CSLow;

     ADS1218_Send(WREG|(StartAddress&0x0F));

     ADS1218_Send((NumReg-1)&0x0F);

     用于(i=0;i<NumReg;i++)

     {

      ADS1218_Send(*pData+);

     }

     ADS1218_CSHigh;

    }

    void ADS1218_Send(无符号CHAR数据)

     无符号char伪;

     同时(!UTXIFG0);

     TXBUF0=数据;

     while (!URXIFG0);  

     虚拟=RXBUF0;

     // SCLK频率延迟8次

     DELAY _Us (80);

    }

    //******** ADS1218和MSP430F149*********的电路图 //

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

    您好,用户490.8522万,

    您提供了许多有用的信息。  但是,在通信方面,我可以实际看到示波器的通信镜头逻辑分析仪,尤其是CS,SCLK,DIN和DOUT。  在整个通信事务中,CS必须保持低电平并保持低电平。  根据信息,ADS1218似乎没有对通信作出响应。  首先要首先读取寄存器,以查看是否获得默认的通电值。  您还需要检查到ADS1218的所有电源连接是否有效(包括模拟和数字电源), 并且RESET ,PDWN,DSYNC引脚 为高电压。  此外,您必须具有有效的时钟,因此请验证 晶体是否真正振荡。

    此致,

    Bob B

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

    我再次检查了您提到的所有要点,一切都正常。 然后逐步运行代码,电压参考输出变为1.25V,与设置值相同。 但是,如果我一次运行所有代码,电压参考输出将变为2.5V。 这似乎太奇怪了。 我怀疑SPI发送和接收函数的延迟时间过短。 因此,我在发送和接收功能中将延迟时间从80us设置为200us (SCLK为100kHz),但这种现象仍然存在。

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

    Bob,您好!

    非常感谢您耐心回答。 我发现这种奇怪现象的原因。 由于电源由PCB板中的MSP430数字IO控制,因此在为ADC通电后,它需要等待一些微感应器来写入和读取ADC。  最后的代码结构如下所示,然后ADC工作正常。  

    包含"I2C.h"
    #include "SPI.h"
    包含"ADS1218.h"
    //#包括"MyChar.h"
    uchar dFlag=0;
    void main()


    UCHAR I;
    长数据;
    WDT_Init();

    Clock_Init();

    Port_Init();

    Timer_Init();

    SPI_Init();

    ADS1218_Init();//为ADC启用电源,配置DRDY引脚,禁用CS
    delay_ms(600);

    ADS1218_Config();

    .....

    此致!

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

    您好,用户490.8522万,

    很高兴听到您发现了问题。  感谢您的回复和分享您的解决方案。  这可能会在将来帮助其他人解决类似问题。

    此致,

    Bob B