网上所说的START引脚拉低,ADS1258就停止采样,这个是不正确的。
硬件上CLKSEL引脚接高电平,外部16M时钟匹配50欧电阻输入到ADS1258,如下图所示:(ADS1258手册17页)
我的1258初始化为:u8_1258_Reg[Num] Num:0-9对应ADS1258的寄存器,自动扫描模式,采样0-8通道。
u8_1258_Reg[0] = 0x52;
u8_1258_Reg[1] = 0x93;
u8_1258_Reg[2] = 0;
u8_1258_Reg[3] = 0;
u8_1258_Reg[4] = 0xff;
u8_1258_Reg[5] = 0x01;
u8_1258_Reg[6] = 0x00;
u8_1258_Reg[7] = 0xff;
u8_1258_Reg[8] = 0;
u8_1258_Reg[9] = 0x8b;
因为我需要使用START引脚控制采样速率,故需要在读取到一个完整的通道扫描后,把START拉低,停止采样。然后在某个时间使用定时器把START拉高,启动采样。
理论上我应该在START还未拉高时,DRDY产生9个下降沿,采集9个通道的数据,但是DRDY实际却产生了10个下降沿,故又把START接入示波器,发现了问题为啥START为低了,还会有一个DRDY的下降沿。我百思不得其解,一直以为我测试代码,程序相应逻辑的问题。直到下面的图片(手册27页),我觉得我应该找到了问题:当START为低时,还会产生一个DRDY的中断,读取0通道的数据,故一切问题都解释通了,相应的示波器波形也能解释清楚了。只能说有点坑,当时看手册的时候也没注意到。我是自动扫描模式下测得的结果,指定通道的测试结果并未测试。