您好,
我正在使用ADS1256进行一个项目,在这个项目中,我可以无限循环读取3个差分信道。 IC的大部分功能都运行良好。 但是,有时我会看到我读到的一些巨大的价值峰值。 这只会发生在除第一个信道(AD0-AD1配置为AINP-AINN)之外的其他信道。 在底部的图像中,我给了10mVP-P正弦波,直流偏移50mV到第二个差分通道,在图像中显示为蓝线。 正如您所看到的,存在巨大的峰值。 这与信号源无关,因为我尝试了很多备选方案。 我以为可能会有噪音,但当我切换频道时,同一频道上出现了峰值。
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进行一个项目,在这个项目中,我可以无限循环读取3个差分信道。 IC的大部分功能都运行良好。 但是,有时我会看到我读到的一些巨大的价值峰值。 这只会发生在除第一个信道(AD0-AD1配置为AINP-AINN)之外的其他信道。 在底部的图像中,我给了10mVP-P正弦波,直流偏移50mV到第二个差分通道,在图像中显示为蓝线。 正如您所看到的,存在巨大的峰值。 这与信号源无关,因为我尝试了很多备选方案。 我以为可能会有噪音,但当我切换频道时,同一频道上出现了峰值。
我附上了一个包含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命令。
您好 ,Christopher:
我附上了一个包含200mV直流信号原始数据的文件。
由于我不使用连续数据读取模式,因此我不会在代码中的任何位置调用SDATAC命令。 我是否应该使用SDATAC命令,即使我不使用连续模式?
最后,我认为我的问题与数据表中指定的T6计时有关。 我使用7.68MHz的振荡器作为时钟频率。 因此,T6的最小等待时间应该在6.5 微秒左右。 每当我使用大约15-20微秒的等待时间时,这些峰值会更频繁地出现。 我尝试了许多数值,发现10微秒是正确的选择。 峰值发生的情况较少,但它们仍然存在。
您好,
感谢您提供额外数据!
作为设备通电后的最佳做法,我建议发送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