问题:读取AD转换结果为0x7FFFFF,MFLAG指示始终为高,似乎为输入信号超量程的结果。
自制的ADS1282样板,并通过DSP的SPI接口驱动。已经完成驱动程序,经验证可正常读写各种寄存器(可读到各寄存器默认值,改写后回读正确)。但在读取AD转换结果(连续读数、RDATA指令读数两种方式都试过)时,始终为上述结果。
硬件方面:ADS1282供电DVDD=+3.3V, AVDD/AVSS=±2.5V, VREFP/VREFN=±2.5V,CLK为4.096MHz有源晶振,两路差分输入都用BAT54S钳位,SYNC/nPWDN/nRESET均上拉,未用的M0/M1/MCLK均下拉。
不解之一,按照手册,只有当输入电压超过参考电压时,MFLAG才会置高。但实际上电测试,即使不跟DSP连接,MFLAG始终为高。在VIN=0(AINN1、AINP1短接),或VIN为很小的输入电压,或设置MUX=010b(输入内部短接测试)等各种条件下,结果都一样。
目前同一批样板做了两块板子并反复测试,应该可以排除硬件连接问题。
不解之二,按手册流程执行零偏和增益自动校正,然后读取寄存器,结果为OFC=0x20012C,FSC=0x3FFFFF。并且按照手册,在执行在OFSCAL和GANCAL命令前应分别接零输入和满量程输入,但实际发现不管输入怎么接,回读结果都一样,可见芯片内部也没读到正确的转换结果。尤其是OFC值,难以理解。
目前卡在这里,希望得到些启发~
maidong:
简单看下时序。输入短接,上电测试。释放RESET,此时MFLAG即变高,经过~63ms后DRDY指示出现有效数据。
急啊,继续求解答。。
Luke Sun:
Hi maidong,
你可以检查下各个输入端口和电源的DC电压值是否正确,时钟信号是否有正确接入,模拟输入信号的电压值如果不在AVSS + 0.7~AVDD – 1.25之内也会引起转换不正确。
maidong:
回复 Luke Sun:
多谢回复。
这些都是仔细检查过的。4.096Mhz时针正常,DVDD、AVDD、AVSS供电正常,VREFP、VREFN、CAPP、CAPN可测到参考电压,BYPASS为1.8V,两路差分输入分别短接并可测到为0V,RESET、PWDN、SYNC等各控制引脚上拉均正常。读写时DRDY时序正确,就是MFLAG不知道为什么一直为高。。没辙了。
pan pan1:
回复 Luke Sun:
你好,问下那个ADS1282的RESET,PWEN,M1和SYNC引脚必须要上拉吗?