我用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[i] = U0DBUF; }
SPI1_CS = 0;
}
这程序应该没问题吧,寄存器已经初始化好了,就不放上来了。SPI1_CS = 1后面用不用继续通过MOSI给ADS8862发送数据,给它留出足够的转换时间?(不过这我也试了,也没用)望大佬指点!谢谢!
user151383853:
这里也许真的反映信号输入里, 有大的纹波. 你检查一下输入信号,
另外还有电源或者基准的纹波也会引起 ADC 结果的波动
Amy Luo:
您好,
楼上说的对,先确认下输入信号、参考电压、供电电源是不是有其他干扰,另外输出走线附近有没有其他高频信号耦合进取。