ADS1248DOUT/DRDY引脚共用一个I/O口遇到的问题
IDAC0:0X0F;DOUT/DRDY引脚既做数据输出,又做DRDY,寄存器读写都有效,为什么做DRDY时,DOUT/DRDY引脚低不下来为什么?这样操作与DOUT/DRDY引脚只做DOUT的操作有什么不同的地方?START一直高,CS一直低,对吗?
有没有发送RDATAC命令,否则的话DOUT/DRDY的数据得不到更新,一直保持一个状态。
Start应该是从低跳到高,然后一直维持高。~CS按照手册第10页所示,应该是高跳低,然后SPI操作在~CS为低时进行,操作结束后~CS跳高。
另外,是不是写了什么寄存器,或者做了其他什么操作,让DRDY被force high了?
之前,DOUT与DRDY分开用的时候,cs一直低,start一开始置高后一直保持高,调试通过了的,由于I/O口线不够,所以DOUT与DRDY功能共用DOUT/DRDY引脚,start直接硬件拉高。我在有的地方加了NOP,DOUT/DRDY引脚会低下来,但是在ad_calibration操作时加NOP不管用
ad校准程序如下:标红的两处低不下来。采集数据的时候可以低下来
AD_calibration()
{
writeregister(0x02, 0x01); //自校准模式
dalay(ms50); //等待稳定
writecommand(0x62); //自偏移校准
while(0 != ad1248_dout_drdy); //等待校准完成
writeregister(0x02, 0x02) //切换至增益校准模式
dalay(ms50); //等待稳定
writecommand(0x61); // 增益校准
while(0 != ad1248_dout_drdy); //等待校准完成
}
手册54页图82,ADC校准时,~DRDY一直为高,这是芯片本身决定的。