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/ADS1220:如何使用ADS1220读取温度?

Guru**** 2534260 points
Other Parts Discussed in Thread: MSP430F2132, ADS1220, MSP-TS430PW28, ADS1220EVM

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/591756/ccs-ads1220-how-to-use-ads1220-to-read-temperature

部件号:ADS1220
主题中讨论的其他部件:MSP430F2132,, TIDA-0.0018万MSP-TS430PW28

工具/软件:Code Composer Studio

大家好,  

我想知道如何将ADS1220与MSP430F2132配合使用来读取温度。  

我使用示例代码TIDA-0.0018万,我尝试写入ADS寄存器并读回。  

我看不到我的注册数据。  

这里有我的代码。

感谢您的帮助,

Anaelle  

e2e.ti.com/.../MSP_5F00_ADC.zip

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

    您好Anaelle:

    欢迎参加论坛! 我认为代码中的任何内容对我来说都不是问题,除非您应确保重置和通信之间的延迟足够长。  这将在ADS1220数据表的8.5 .3.1 一节中讨论。  因此,我要在ADS1220_Reset和寄存器配置写入之间添加一些延迟。

    一个良好的故障排除做法是使用示波器或逻辑分析仪验证您与ADS1220之间的通信(涉及CS,SCLK,DIN和DOUT)。  这将有助于确保您的功能按所需工作,并且外围设备已正确设置。  很遗憾,如果没有原理图,我无法帮助您验证外围设备的代码。

    此致,

    Bob B

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

    感谢Bob回复我,

    对于此项目,我将ADS1220EVM用于ADS1220模块,将MSP-TS430PW28用于MSP430F2132。 我将UCB0SPI连接到ADS1220。

    你好,我的代码有效。 我找不到合适的地方

    但是 ,在检查我的读/写寄存器后,我想测量我的内部温度传感器。

    我在中断模式下使用DRDY引脚来指示新转换数据的可用性。 但我从他那里得不到任何东西。

    让我们看看我的代码。

    此致,

    Anaelle

    e2e.ti.com/.../0005.MSP_5F00_ADC.zip

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

    您好Anaelle:

    您是否已使用示波器/逻辑分析仪检查您的通信 ,以验证 您的通信是否正常?  您还应该能够探测DRDY信号,并在发送启动命令后验证DRDY信号是否处于活动状态。  您是否已经完成了此操作,或者您是否仅依赖您的代码/调试器?  我很好奇,想知道您是如何根据代码中的while循环确定DRDY不工作的。  一旦将ReadConversionData设置为高,则不会再次将其设置为低,并且它将忽略任何进一步的中断触发器。

    此致,

    Bob B

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

    感谢Bob的回复,  

    我遇到SPI配置问题。

    查看数据表后,我发现SPI配置之间存在不一致。

    例如,第34页:  

    我们建议您在CPOL =0,CPHA =1 mod中配置SPI,而当进一步查看第37页上的信号定时时,配置应为CPOL =0,CPHA =0。

    修改此项之后,我的ADC工作正常。

    此致,  

    Anaelle

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

    您好Anaelle:

    感谢您的更新。  仅就SPI接口而言,摩托罗拉建立的原始标准设置了一系列时钟极性和相位,在这些极性和相位中数据被更改或锁定。  使用这种标准记法,ADS1220使用的模式是模式1,其中时钟停留在较低的位置,并在SCLK的上升沿上变化,保持在下降沿上。   根据本公约,CPOL =0,CPHA =1。

    但是,MSP430 SPI外设使用不同的方法,相位实际上与原始定义相反。  因此,在使用MSP430器件时,您必须非常小心,确保您实际遵循正确的相位。  MSP430术语是CKPL和CKPH。  TKPH与原始Motorola定义中使用的描述相反。  据我所知,MSP430是唯一使用 反相定义的微外设。

    此致,

    Bob B

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

    Bob,您好!

    我现在了解更多了:)  

    我有其他问题,我想计算这一点:

    mesure =|Vsens (AIN1–AIN2)|/ Vref (AIN0-AIN3)

    如何恢复AIN0-AIN3和AIN1-AIN2的结果?

    我这样做,当我观看我的VOUT数据时,值每次都改变,我没有得到我的2V

    int msb;
    int data;
    int lsb;
    volatile unsigned char ReadConversionData =0;
    unsigned int lpm_bits;
    static volatile unsigned tempchar Data[3];
    volatile long ADS1220代码;
    long int bit24,bit32;
    float VOUT;
    
    void main (void)
    {
    WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
    __disable_interrupt ();
    config_clock ();
    PortsInit ();
    //配置SPI组件
    Setup_SPI_Master ();
    __enable_interrupt ();
    //重置ADS1220
    ADS1220_Reset();
    __Delay_Cycles (CPT_CLK);
    同时(1)
    {
    //为张力参考配置ADS1220
    SETUP_ADS1220 (ADS1220_MUX_AIN0_AIN3,ADS1220_GANGE_1,ADS1220_USE_PGA,
    ADS1220_DATA_RATE_600SPS,ADS1220_OP_MODE_NORMAL,ADS1220_TRANSION_SINGLE_Shot,ADS1220_TEMP_SENSOR_OFF,ADS1220_burn_out电流关闭,
    ADS1220_FIR_NONE,ADS1220_VREF_INTERNAL,ADS1220_LOW_SIDE_POWER_CLOSE,ADS1220_IDAC_CURRENT_OFF,
    ADS1220_IDAC1_disabled,ADS1220_IDAC2_disabled,ADS1220_DRDY_ON_DRDY_ON);
    __DELAY_CYCLES (CPU_CLK/10);
    ReadConversionData = 0;
    ADS1220_Start ();
    while (!ReadConversionData);//等待数据就绪中断
    ADS1220_Get_Conversion_Data((unsigned char *)tempdata);
    MSB=tempdate[0];
    Data=tempdate[1];
    LSB = tempdate[2];
    位24=MSB; //将3个字节转换为24位int
    bit24=(bit24<8)|数据;
    bit24=(bit24<8)|LSB;
    bit24=(bit24<<8);
    bit32=(bit24>>8);//将24位二的补码转换为32位二的补码
    		VOUT=bit32;
    LED_pout || LED_GREG_BIT;
    }
    } 

    感谢您的帮助,  

    Anaelle

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

    您好Anaelle:

    我不确定您打算衡量什么。  从您的绘图和代码中,您尝试仅测量AIN0和AIN3。  由于这是单端输入(参考AVSS),您需要禁用并绕过PGA。  这应有助于获得更稳定的读数。  但是,测量结果会产生噪音,您的电压源可能会产生噪音。  返回的值将是与引用相关的代码数,您使用的是内部引用2.048V。  计算结果显示在数据表第35页的第8.5 2节中。

    关于噪音,您可以轻松地从转换器中看到1000个或更多的代码变化。  请参阅数据表第17页上的表3和表4。

    现在,您的代码将重复向ADS1220寄存器写入相同的信息,开始转换并读取结果。  您需要更改mux以读取另一组输入,重新开始转换,然后读取新结果。  

    此致,

    Bob B