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.

[参考译文] ADS124S08:无法读取内部温度传感器

Guru**** 2595805 points
Other Parts Discussed in Thread: ADS124S08

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/835754/ads124s08-unable-to-read-internal-temperature-sensor

器件型号:ADS124S08

您好!

遵循主题:

e2e.ti.com/.../2653786

借助原理图:

e2e.ti.com/.../RTD2W3Wx4.JPG

尝试从 ADS124S08中的内部二极管读取温度、但接下来会丢失什么操作、无法读取有效数据。

我在做什么:

*下拉复位

*释放复位

此时、我可以读取寄存器内容、它们与数据表中定义的默认寄存器值相匹配。

*等待 RDY 位

*清除 FL_POR

*启用温度传感器(寄存器0x09)

*启用 PGA (寄存器0x03)

*将 PGA 增益限制为4 (寄存器0x03)

*发送启动操作码

*将 START 引脚设置为高电平

*检查 DRDY

*发送 RDATA 操作码

*读出数据

此时我会得到空白数据。

我可以确认 SPI 总线上的相同数据(SCLK 和 MISO 线路)。 我是否需要做更多的设置,以便从温度传感器获取有效数据?

已经浏览过数据表、查找温度传感器的特定设置。 我找不到任何内容。

有人能告诉我我我出了什么问题吗?

读取传感器:

void ads124xxx_reset (void)
{
printf ("*%s:ADC Reset\r"、__func__);
__adc_RST_ENA ();
delay (5);
__adc_RST_REL ();
delay (5);
}

void ads124xxx_dump_regs (spi_typedef * SPIx)
{
uint16_t i、dat;

printf (")------- \r");
printf ("寄存器映射\r");
printf ("-------- \r");
for (i = 0;i < 0x12;i++){
dat = ads124xxx_spi_regrd (SPI1、i);/*读取寄存器*/
printf (" Reg %02xh:%02xh\r"、i、dat);
}
printf ("------ \r");
}

void ads124xxx_init (spi_typedef * SPIx)
{
uint8_t tmp;

printf (*%s:正在初始化\r"、__func_);
while (ads124xxx_spi_regrd (SPI1、0x01)& 0x40);//等待 RDY */

tmp = ads124xxx_spi_regrd (SPI1、0x01);
ads124xxx_spi_regwr (SPI1、0x01、(tmp &~(1 << 6)));//清除 FL_POR *//

*在此处写入所有相关的 ADC 配置*//
*回读配置,并检验 SPi_void *








温度*/spi_t_sense***(t_t)

/**
*测量内部温度传感器时
,*模拟输入与 ADC 断开连接,
并且*温度传感器的输出电压被路由
到 ADC,以便使用选定的 PGA 增益、
*数据速率和电压基准进行测量。 如果启用、
则必须将 PGA 增益*限制为4才能使温度传感器测量
*保持在
PGA 允许的绝对输入电压范围*内。
//
tmp = ads124xxx_spi_regrd (SPI1、0x09);
tmp |=(0x02 << 5);//启用温度传感器*/
ads124xxx_spi_regwr (SPI1、0x09、tmp);

tmp = ads124xxx_spi_regrd (SPI1、0x03);
tmp |=(0x01 <<3);//启用 PGA *
tmp |= 0x02;//将 PGA 增益限制为4 */
ads124xxx_spi_regwr (SPI1、0x03、tmp);

ads124xxx_spi_cmd (SPI1、start_opcode_mask);/* START (0x08)转换*/
GPIO_SetBits (GPIOC、GPIO_Pin_10);/* START 引脚使能*/
printf ("*%s:ADC 设置为连续转换\r\n、__func__);






重定向}int main (void){SysTK_Config (SystemCoreClock / 1000);/* SyARTstick event @1ms (*-/-/_Inetup);


\r");
printf (" ADS124xxx Test\r");
printf ("-------- \r\n);

ads124xxx_reset ();//重置 ADC */
ads124xxx_dump_regs (SPI1);
ads124xxx_init (SPI1);//开始转换*/
ads124xxx_temp_sense (SPI1);

while (1){
GPIOB->ODR ^= GPIO_Pin
(SPI1);
* 124xxx (SPI1);toggle * 1);tog_600 */ADDIODR (SPI1)

谢谢、

制造商

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

    错误: 帖子中的链接不正确、

    此处提供了更新后的原理图链接。 该帖子中提及的是旧版本。 下面是最后一个:

    e2e.ti.com/.../R2.pdf

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

    您好、Manu、

    您必须具有有效的基准电压才能生成转换结果。  您似乎正在使用基准控制寄存器(0x05)的默认设置。  默认设置是使用原理图中已断开连接的 REF0输入对。  ADS124S08数据表的第78页显示了用于参考的配置位。  默认设置为0x10。  尝试通过将寄存器内容写入0x1A 来打开和使用内部基准。

    此致、

    Bob B

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

    尊敬的 Bob:

    你是对的。 启用基准就实现了这一目的。 关于默认设置为 REF0、我将尝试保持在我的脑中。 谢谢!

    随着变革、

    /**
    *测量内部芯片温度
    */
    void ads124xxx_temp_sense (spi_typedef *SPIx)
    {
    uint8_t tmp;
    
    /**
    *您必须具有有效的基准电压才能生成转换结果。
    * e2e.ti.com/.../3090752
    *尝试通过写入0x1A 来打开并使用内部基准。
    //
    ads124xxx_spi_regwr (SPI1、0x05、0x1a);
    
    //*
    测量内部温度传感器时
    ,*模拟输入与 ADC 断开连接,
    *温度传感器的输出电压被路由
    到 ADC,以便使用选定的 PGA 增益、
    *数据速率和电压基准进行测量。 如果启用、
    则必须将 PGA 增益*限制为4才能使温度传感器测量
    *保持在
    PGA 允许的绝对输入电压范围*内。
    //
    tmp = ads124xxx_spi_regrd (SPI1、0x09);
    tmp |=(0x02 << 5);//启用温度传感器*/
    ads124xxx_spi_regwr (SPI1、0x09、tmp);
    
    tmp = ads124xxx_spi_regrd (SPI1、0x03);
    tmp |=(0x01 <<3);//启用 PGA *
    tmp |= 0x02;//将 PGA 增益限制为4 */
    ads124xxx_spi_regwr (SPI1、0x03、tmp);
    
    ads124xxx_spi_cmd (SPI1、start_opcode_mask);/* START (0x08)转换*/
    GPIO_SetBits (GPIOC、GPIO_PIN_10);/* START 引脚使能*/
    printf ("*%s:ADC 设置为连续转换\r\n、__func__);
    }
    

    我看到了变化:

    但之后出现了问题。 我看不出什么…… 读取刚刚停止

    检查所有的问题...

    谢谢、

    制造商

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

    尊敬的 Bob:

    这是一些松动的电缆。 好!

    此致、

    制造商

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

    您好、Manu、

    我很高兴听到修复很简单。  然而、最简单的问题可能是最难诊断的问题。   

    此致、

    Bob B

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

    尊敬的 Bob:

    尤其是、当有一个代码变小时、您始终怀疑代码。

    但很多时候、犯罪者是有点傻的。

    我在将数据转换为摄氏度时遇到了一些问题。 发布了这个。 我在数据表中找不到答案。 请提供帮助吗?

    谢谢、

    制造商