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.

[参考译文] ADS1256:读取值有巨大的峰值

Guru**** 2549100 points
Other Parts Discussed in Thread: ADS1256

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/665427/ads1256-read-value-has-huge-spikes

部件号:ADS1256

您好,

我正在使用ADS1256进行一个项目,在这个项目中,我可以无限循环读取3个差分信道。 IC的大部分功能都运行良好。 但是,有时我会看到我读到的一些巨大的价值峰值。 这只会发生在除第一个信道(AD0-AD1配置为AINP-AINN)之外的其他信道。 在底部的图像中,我给了10mVP-P正弦波,直流偏移50mV到第二个差分通道,在图像中显示为蓝线。 正如您所看到的,存在巨大的峰值。 这与信号源无关,因为我尝试了很多备选方案。 我以为可能会有噪音,但当我切换频道时,同一频道上出现了峰值。   

  

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

    您是否可以与ADC的原始数据(输出代码)共享文本文件?

    另外,您如何读取ADC数据?
    -您是使用中断来检测/DRDY下降沿,还是轮询ADC以确定数据何时就绪?
    -读取数据时,您是在RDATAC模式下直接超时数据,还是在每次超时数据之前使用SDATAC模式并发送“RDATA”命令?

    最好查看逻辑分析仪或示波器上的SPI通信,以查看是否存在任何计时问题。 以下E2E线程中存在类似问题,您可能会发现这很有帮助:
    e2e.ti.com/.../160.3346万

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

    我附上了一个包含ADC原始数据的文件。 在第一列中,RF信号中的值不会出现这些峰值。 在第二列中,有30mVP-P正弦信号值,带15mV直流偏移,因此不会呈负值。 我正在读取间隔为5000us的值,以建立200Hz的采样频率。  

    我正在使用Raspberry Pi和C语言编程。 这是我捕获DRDY状态的方式。

     

    静态void ADS1256_WaitDRDY (void)
    {
    while (BCM2835_GPIO _LEV(RPI_GPIO _P1_11)!=0);
    } 

    关于最后一个问题,我是在每次计时数据出时发送RDATA命令,而不是使用RDATAC命令。

    e2e.ti.com/.../file.txt

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

    您好,

    感谢您提供原始数据!

    我无法确定在读取数据时是否存在位移错误,因为输入信号是正弦波。 输入直流电压时是否会遇到此问题?如果是,您是否能够共享该数据?

    另外,在读取数据(或写入设备寄存器)之前,是否发送SDATAC命令?

    此致,
    Chris

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

    您好 ,Christopher:

    我附上了一个包含200mV直流信号原始数据的文件。  

    由于我不使用连续数据读取模式,因此我不会在代码中的任何位置调用SDATAC命令。 我是否应该使用SDATAC命令,即使我不使用连续模式?

    最后,我认为我的问题与数据表中指定的T6计时有关。 我使用7.68MHz的振荡器作为时钟频率。 因此,T6的最小等待时间应该在6.5 微秒左右。 每当我使用大约15-20微秒的等待时间时,这些峰值会更频繁地出现。 我尝试了许多数值,发现10微秒是正确的选择。 峰值发生的情况较少,但它们仍然存在。

    e2e.ti.com/.../5340.file.txt

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

    您好,

    感谢您提供额外数据!

    作为设备通电后的最佳做法,我建议发送reset命令,延迟几个mircoseconds,然后发送SDATAC命令,以确保ADS1256在启动后不处于RDATAC模式。 因此,请尝试将SDATAC命令作为您发送到ADC的第一个命令之一添加...

    有趣的关于T6计时的观察! 只要您在RDATA命令和开始计时数据之间至少等待6.5 微秒,就不会有任何问题。 但是,您可能会遇到在下一次转换完成期间读取数据的情况(即,在发送RDATA命令时,/DRDY正在转换为低电平)。 发生这种情况时,可以读出新旧数据的组合,这种结果没有多大意义...

    如果您的软件经常忙于运行其他进程(或返回到轮询功能的速度较慢),使用/DRDY的轮询例程可能会有问题。 您可能在转换周期后期捕获/DRDY低电平,并且在下一次转换完成时才开始读取数据。

    您的SCLK频率是多少? 如果它明显低于最大1.92 MHz限制,您是否可以加速它以更快地读取SPI数据?

    另外,为了排除故障,您可以尝试降低ADC的数据速率,以查看在以较慢的数据速率运行时数据峰值是否消失(即在下一次转换完成之前,您给MCU更多的时间读取ADC数据)。 如果这样可以解决问题,那么您很可能需要找到一种方法来响应/DRDY下降边缘并更快地读取ADC数据。

    此致,
    Chris