TI论坛
直播中

李春梅

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

ADS1247工作在单端模式读出数据异常的原因?


  • 项目中用到了贵司的ADS1247芯片,驱动程序移植自“Example_ADS1248FW“(原本为MSP430,移植到STM8上)。
    ADS1247用作单端3通道ADC,模拟信号分别从AIN0、AIN1、AIN2、输入,AIN3接模拟地,参考源为外部REF0供给的4.096V(LM4030AMF-4.096)。
    目前在使用ADS1247时遇到以下问题:
    1、芯片可以正常读写寄存器,也可以读取ADC的转换结果。但MCU运行后第一次读取的结果总是0(MCU硬上电或者复位)。
    2、循环依次读取0、1、2三个模拟输入通道的结果,结果发现切换通道后读取的结果是上一通道的结果,
          即:读0通道时是0(仅运行后第一次,后面就不是0),读1通道时结果却和0通道的实测结果吻合,读2通道时又与1通道实测结果一致,依次类推。

    问题1可以根据问题2的实验推知第一次的0是复位后的初始值,无意义数据。因此主要问题集中在问题2,为什么读出的是上一次的数据。

    请问我将ADS1247用作3通道单端模式时的用法是否正确?
    正确的循环读取三个单通道数据的操作步骤是怎样的?
    以上问题的原因是什么?需要做什么样的实验确认问题所在?

    目前还没找出问题来,有些急,请尽快回复下。多谢!

回帖(2)

苏天兰

2024-12-31 15:29:48
1.在复位后不要立即读,要等待一段时间再读取。具体时间可以参考datasheet table 14  data conversation time
2.这个可能跟你程序有关系,具体你要在多做些实验来看一下。
举报

贾飞小

2024-12-31 18:09:10
根据您提供的信息,您在使用ADS1247芯片时遇到了两个问题:1)第一次读取的结果总是0;2)切换通道后读取的结果是上一通道的结果。以下是可能的原因和解决方案:

1. 第一次读取结果为0:
   - 原因:可能是由于ADS1247芯片在上电或复位后需要一定的时间来稳定其内部电路。在这段时间内,ADC的输出可能不稳定,导致读取结果为0。
   - 解决方案:在读取ADC值之前,等待一段时间(例如10ms)以确保芯片稳定。您可以在代码中添加一个延时函数来实现这一点。

2. 切换通道后读取的结果是上一通道的结果:
   - 原因:可能是由于在切换通道时,ADS1247芯片需要一定的时间来完成通道切换。在这段时间内,ADC的输出可能仍然是上一通道的结果。
   - 解决方案:在切换通道后,等待一段时间(例如10ms)以确保通道切换完成。您可以在代码中添加一个延时函数来实现这一点。

此外,您还可以检查以下几点:
1. 确保您的驱动程序正确配置了ADS1247芯片。请参考ADS1247的数据手册,确保您正确设置了通道、采样率、增益等参数。
2. 检查您的模拟信号是否稳定。如果模拟信号不稳定,可能会导致ADC读取结果异常。
3. 检查您的参考源是否稳定。如果参考源不稳定,可能会导致ADC读取结果异常。

希望以上建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们进一步分析。
举报

更多回帖

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