新手求教:ADS8668为什么配置不成功?
各位大侠们,小弟有问题求教。
最近在调试ADS8668芯片,工作在人工MAN_Ch_n模式,每次读取数据都需要改变通道的电压变化范围。但是我按照要求的片选时钟,选用的是30.72MHZ的外部时钟,产生的SCLK是15.36MHZ的(时序是没有问题的),做了一下几个步骤:
1)上电复位,给出两个时钟周期的的低电平(65ns)进行硬件复位;
2)对程序寄存器DEVICE FEATURES SELECTION CONTROL(03h),进行设置,实际上用的就是默认00H;
3)输入需要采集的数据通道chN,同时读取出转换的通道(N-1)的AD数据(第一个数据无效),
4)对第N个通道的Range Select Registers进行电压范围的设置;
5)重复3)、4)步操作;
我的问题是 为什么我设置了采集的电压范围,可是最后AD的输出管脚SDO ,输出的都是高电平(1111_1111),即使我把某一个通道直接接GND,输出的还是都是高电平。这到底是哪里出问题了?
对了,我把3.3v的电平接到AUX输入关键(AUX的参考电压4.096),这个时候输出的采集数据时正确的。我只能怀疑是我的配置出问题了,但是我仔细读了好几遍的手册,感觉就是这个配置流程呀!
实在不知道怎么办了,求各位大侠指点一下,小弟不胜感激!谢谢了!
看样子总线通信也是可以了, 我看还是有必要检查一下通信波形, 验证一下时序, 我觉得特别是高低电平的幅度
谢谢版主的回复,时序是没有问题的,高低电平幅度也正常,今天又研究了下,终于发现了问题的所在,但是目前还没有解决问题。
发现的问题是:ADS8668芯片的单个通道的电压范围配置有问题,貌似是写入的配置不生效。
就是:如果我对寄存器地址03h(03h对应AD的0通道电压设置),进行电压范围配置,用示波器观察的AD的输入端口SDI是按照给出的数据,在对应的时钟下降沿,写入到芯片中的,观察的SDO反馈的写入数据也是想要写入的数据,但是AD芯片就是不按照我设置的范围进行工作,输出的都是(1111_1111),即使我接入的是GND信号,好像我只要对地址进行配置,就输出(1111_1111)。
于是,我就按照通道的初始化复位默认状态000(-10.24v~+10.24v),不对通道的电压范围进行任何配置,这时接入的GND、3.3V信号都能被AD接入的通道准确的采集到数据。这就意味着我配置的范围是有问题的,进一步说就是只要我对相关通道的配置寄存器进行电压范围的配置,就会出问题!这是什么逻辑呀?
我还有一个疑问就是:ADS8668的芯片资料,通篇都没有写在MAN_ChN(人工)模式下,对选择的通道进行电压范围配置的,具体步骤流程时序图。我是按照自己的理解,先写通道,再在下一个CS下降沿写入该通道对应的寄存器的电压范围设置。会不会是我这个操作时序有问题,希望版主能给点建议,谢谢!
这个问题我会持续更新我的问题解决进度的,希望各位大侠也多提一点宝贵的建议,谢谢
芯片的问题已经解决了,原因是,如果在采集数据的过程中,更改指定的某个通道的电压范围,更改后的配置寄存器的生效时间,不是在下一个CS上升沿立刻生效的(CS上升沿立刻生效,只针对通道的选择),那么这个配置生效的时间是多久呢?
这正是我遇到的问题的关键点!
TI给的芯片手册竟然没有写出,不知道是为什么,经过我的测试,发现配置生效的时间大约为25us,这个时间,是根据我给出的循环采集通道次数N,查看示波器输出的SDO数据发现的。所以,如果使用这片芯片,如果你想写入电压范围后,在接下来的CS下降沿时就能采集到准确数据,是不可行的。也就是,不适用于电压范围需要来回调整,且立刻生效的数据采集,只能适用于初始化配置完各个通道的电压范围后,就不再改变电压范围的数据采集(当然,前几个采集的数据是不对的,因为要过25us左右,配置才生效)。
这就是我的ADS8668芯片使用心得,希望对以后使用的人有所帮助,少走弯路,谢谢!