我采用的是MCU的GPIO口软件时序来读写ADS8363的,CONVST和RD信号共用一个引脚(CONVST&RD信号),ModeI模式读数,Half-Clock模式,只采集CHA0和CHB0通道。
由于CLOCK信号和CONVST&RD信号都是油GPIO口给出的,因此CONVST&RD信号的下降沿很难和CLOCK的上升沿做到完全同步,实际程序中CLOCK的上升比CONVST&RD信号的下降晚了约500ns。
从数据手册中读到:通过SDI引脚向ADS8363写入数据时,RD信号的下降沿会触发ADS8363向SDOx引脚送出数据的MSB(28页第1段),同时CONVST信号的上升沿会触发AD转换器进行采样保持(29页第2段)。也就是说,CONVST&RD信号的上升沿和下降沿会触发ADS8363进行不同的工作。
起初,如 http://www.deyisupport.com/question_answer/analog/data_converters/f/58/t/59937.aspx 中的时序图,如果CONVST&RD信号为高电平期间,CLOCK不跳变的话,SDOx上总是没有输出。现在时序已经更改,在CONVST&RD的上升沿和下降沿之间给一个CLOCK高电平脉冲,SDOx上就会有数据,而且读写CONFIG寄存器的时序也都有效。但问题来了:每个CONVST&RD信号上升沿间会有21个CLOCK脉冲,从CONVST&RD信号下降沿后的1个时钟周期开始读书,通过SDOx引脚读出的数据是对的,可是写CONFIG寄存器再读出的数据也是一样的,可是就是通过CONFIG寄存器Bit 6 PDE 位设置伪差分模式总是无效,短接CHx0和CHx1引脚输出的数据才会变成0。
这个问题很纠结,我又折腾了一天了。不知道是不是和讨厌的CONVST&RD信号与CLOCK信号的同步问题导致的21个时钟周期有关。求帮助~~~
最后,ADS8363这款芯片真的不适合用MCU操作,太麻烦了,小伙伴们做设计时一定要多加小心啊。。。
tao smith:
Hi
顶一下。
deyisupport:
回复 Jerry Hou:
谢谢您的分享!