TI论坛
直播中

李英

7年用户 1448经验值
私信 关注
[问答]

ADS1259进行信号采样,为什么获取的数值总是单端的?


  • 你好,我ADS1259进行信号采样,使用外部基准源,输入的是差分信号。不知为何,获取的数值总是单端,事实上我已经开启了AINP - AINN的偏置电压。
    比如输入电压    AINP - AINN  < 0 时转换的数值应当     < 0x7fffff ,事实上结果却是该AINP 的单端电压值。还请各位大侠指教一二,谢谢!

回帖(2)

王燕

4 天前

您输入的AINP

和AINN管脚电压分别是多少?ADS1259输出数据格式是二进制补码形式,当采集负值电压时,输出code最高位是1,如下datasheet截图:


举报

张龙祥

3 天前
你好!关于你的问题,我将从以下几个方面进行分析和解答:

1. 确认ADS1259的配置:
首先,请确保你已经正确配置了ADS1259的寄存器,以便正确地处理差分信号。你需要检查以下几个寄存器:

- 通道配置寄存器(CFG1):确保你已经将AINP和AINN设置为正确的通道。
- 通道设置寄存器(CFG2):确保你已经将差分模式(DIFF)位设置为1,以便启用差分输入。

2. 检查外部基准源:
请确保你的外部基准源是正确配置的,并且其输出电压范围与ADS1259的输入范围相匹配。如果基准源输出电压范围不正确,可能会导致采样结果不准确。

3. 检查输入信号:
请确保你的差分信号输入是正确的,并且AINP和AINN之间的电压差是有效的。如果输入信号有问题,可能会导致采样结果不准确。

4. 检查代码逻辑:
请检查你的代码逻辑,确保你正确地读取了差分信号的采样值。你需要从ADS1259读取两个通道的采样值,然后计算它们之间的差值。以下是计算差分信号采样值的示例代码:

```c
uint32_t ainp_value = read_adc_value(AINP_CHANNEL);
uint32_t ainn_value = read_adc_value(AINN_CHANNEL);
int32_t diff_value = (ainp_value - ainn_value) << 1; // 将差值左移1位,以获得正确的差分值
```

5. 检查硬件连接:
请检查你的硬件连接,确保AINP和AINN引脚正确连接到你的信号源。如果连接有问题,可能会导致采样结果不准确。

综上所述,你需要检查ADS1259的配置、外部基准源、输入信号、代码逻辑和硬件连接,以确保正确地获取差分信号的采样值。希望这些建议能帮助你解决问题!
举报

更多回帖

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