TI论坛
直播中

李郝荫

8年用户 1414经验值
私信 关注
[问答]

ADS1256差分输入,AINn接地,此时输出值1.2V为异常,为什么?


  • ADS1256,借用SPI实现的数据传输,VREF=2.5V。差分输入,AINp不接,AINn接地,此时输出值1.2V,异常。AINp接地或接其他电压时,能正常输出0V或其他值。是初始化问题吗?
    附带初始化代码:(STM32的)
    int ADS1256_Init(void)
    {
    ADS_CS_LOW();
    RESET_HIGH();
    delay_us(100);
    SPI_SendByte(SPI2,ADS1256_CMD_REST);
    delay_ms(10);
    while(ADS_DRDY);
    SPI_SendByte(SPI2,ADS1256_CMD_SYNC);
    delay_ms(20);
    SPI_SendByte(SPI2,ADS1256_CMD_WAKEUP);
    delay_us(5);
    while(ADS_DRDY);
    SPI_SendByte(SPI2,ADS1256_CMD_WREG | ADS1256_STATUS);
    SPI_SendByte(SPI2,3);
    SPI_SendByte(SPI2,0x04);
    SPI_SendByte(SPI2,ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3);
    delay_us(5);
    SPI_SendByte(SPI2,ADS1256_GAIN_1);
    delay_us(5);
    SPI_SendByte(SPI2,ADS1256_DRATE_2_5SPS);
    delay_us(100);

    ADS1256WREG(ADS1256_MUX,ADS1256_MUXP_AIN2 | ADS1256_MUXN_AIN3);
    while(ADS_DRDY);
    SPI_SendByte(SPI2,ADS1256_CMD_SELFCAL);
    delay_us(5);
    ADS_CS_HIGH();
    delay_ms(100);
    return 0;

    }

回帖(2)

李培珠

2024-12-31 15:19:40
AINp不接,AINn接地 作为模拟输入, 你怎么可以不接悬空呢?
不出错才怪了呢
举报

听我讲

2024-12-31 17:33:46
从您提供的代码和描述来看,ADS1256在差分输入模式下,AINn接地,AINp不接时输出1.2V可能是由于以下几个原因导致的:

1. 初始化问题:请确保您的初始化代码正确设置了ADS1256的寄存器值。根据您的代码,您已经发送了恢复命令(ADS1256_CMD_REST),同步命令(ADS1256_CMD_SYNC)和唤醒命令(ADS1256_CMD_WAKEUP)。请检查这些命令是否正确执行,以及是否正确设置了其他必要的寄存器值。

2. 电路连接问题:请检查您的电路连接是否正确。确保AINp和AINn引脚没有短路或接触不良的情况。同时,检查电源和地线是否连接正确。

3. 参考电压问题:您提到VREF=2.5V,请确保您的参考电压设置正确。如果参考电压设置不正确,可能会导致输出值异常。

4. 代码逻辑问题:请检查您的代码逻辑是否正确。例如,您在发送命令后使用了while(ADS_DRDY);来等待数据就绪。请确保这个逻辑是正确的,并且ADS_DRDY引脚的电平变化正确地反映了数据就绪状态。

5. 硬件故障:如果以上原因都排除了,那么可能是ADS1256本身存在硬件故障。您可以尝试更换一个ADS1256芯片来排除这个可能性。

综上所述,您需要检查初始化代码、电路连接、参考电压设置以及代码逻辑,以确定导致输出值异常的原因。如果问题仍然存在,您可以尝试更换一个ADS1256芯片来排除硬件故障的可能性。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分