TI论坛
直播中

维生素B2

13年用户 1093经验值
私信 关注
[问答]

用cc2530 SPI驱动ADS8862读取它采集到的值,为什么那个值一直在那变化而且还很大的那种?


  • 我用cc2530SPI驱动ADS8862读取它采集到的值,确定已经驱动成功了也能采集到值,但不知道为什么那个值一直在那变化而且还很大的那种,ADS8862采集的模拟信号的变化应该是很微小的,这应该不是驱动程序的问题吧?
    SPI1_CS = 0;
    U0DBUF = 0x00;
    while(!(U0CSR & 0x02));
    U0CSR &= 0xFD;
    void readdata(void)
    {
    U0DBUF = 0xff;
    while(!(U0CSR & 0x02));
    U0CSR &= 0xFD;
    SPI1_CS = 1;
    for(uint8 i = 0; i < 2; i++)
    {
    U0DBUF = 0x00;
    while(!(U0CSR & 0x02));
    U0CSR &= 0xFD;
    BufferData = U0DBUF;
    }
    SPI1_CS = 0;
    }
    这程序应该没问题吧,寄存器已经初始化好了,就不放上来了。SPI1_CS = 1后面用不用继续通过MOSI给ADS8862发送数据,给它留出足够的转换时间?(不过这我也试了,也没用)望大佬指点!谢谢!

回帖(2)

李猛

2024-12-10 11:37:31
这里也许真的反映信号输入里, 有大的纹波. 你检查一下输入信号,
另外还有电源或者基准的纹波也会引起 ADC 结果的波动
举报

马占云

2024-12-10 17:41:04
从您提供的代码片段来看,您已经成功地驱动了CC2530 SPI接口,并从ADS8862读取数据。然而,您提到读取到的值一直在变化且幅度很大。这可能是由以下几个原因导致的:

1. 模拟信号输入:请检查您的模拟信号输入是否稳定。如果输入信号不稳定,那么采集到的值自然会有很大的变化。您可以尝试使用一个稳定的参考信号来测试您的系统。

2. 采样率:请检查您的采样率是否设置正确。如果采样率过高或过低,可能会导致采集到的值不稳定。您可以尝试调整采样率,看看是否能够改善问题。

3. 滤波:请检查您的系统中是否有滤波器。如果没有滤波器,那么采集到的信号可能会受到噪声的影响,导致值的变化。您可以尝试添加一个低通滤波器来减少噪声。

4. 代码问题:虽然您认为驱动程序没有问题,但仍然建议您检查代码中的逻辑。例如,您可以尝试使用不同的SPI读取方法,或者检查是否有其他代码可能导致值的变化。

5. 硬件问题:请检查您的硬件连接是否正确。如果连接不稳定,可能会导致采集到的值不稳定。您可以尝试重新连接硬件,并检查是否有短路或断路的问题。

总之,要解决这个问题,您需要从多个方面进行排查。首先检查模拟信号输入和采样率,然后检查滤波器和代码逻辑,最后检查硬件连接。希望这些建议能帮助您找到问题的原因并解决它。
举报

更多回帖

×
20
完善资料,
赚取积分