过完元旦假期的第一天就开始进入紧张的测试环节,硬件焊接参差不齐,对于调试测试环节的任务更加艰巨,不曾想一个8通道的AD7606就把我这硬件水牛折腾的体无完肤,尽管是个小的问题,但是对我整个项目的进展造成了一定的影响,这里专门记录下来;
电路是MCU通过16并行数据线采集AD7606的数据,采用的是两块AD7606,之前采用的是第二块AD7606,新板子需要调整为第一块,问题就出在这里,尽管软件配置很简单,但是面对软件调整、硬件调整两个方面同时存在的情况下还是对问题的分析判断造成了一定的影响,我首先按照老的板子(硬件固定),修改测试软件部分的程序,测试数据接收是否正常,结果发现老版本的硬件存在一定的问题,说白了就是坏掉了,束手无策就调新板子的第二块AD这样不用修改程序,先测试我新板子AD能不能工作,各种修改测试之后发现还是可以工作的,好了,现在第一步完成,接下来就是修改程序,程序修改的并不多,主要是片选接口,中断接口、还有频率输出口需要调整下,其他的都不需要更改,数据总线是同样的16条,经过修改程序,通过ccs来测量数据的正确性,发现数据采集的并不好,没有第二片AD的数据好,然后就测试了这次做的所有AD采集版,发现问题一样,看来是硬件的问题,好,要是硬件的问题那就开始着手硬件问题的检测,用示波器看波形,看cs片选,查数据总线,初步检测发现数据总线,cs片选都挺好啊,没有出现异常的波形啊,怎么采集到固定的数据呢,这样不行,那就对比着看,将cs与数据总线一块采集,放在一起对比着看,这里没有保留当时的图片,但是可以看到cs跟数据之间还是有一定冲突,并且cs片选的时间很短,只有100ns不到的时间,因此数据的读取会存在问题,但是,当时并没有考虑到这方面的问题,我们又对比了下正常接收数据时的cs信号与数据的波形图,发现cs的片选时间相比偏长点,因此就考虑片选时间的问题,毕竟我们的数据总线是添加驱动芯片了,而且总线的开关是cs或门,驱动芯片的导通本身也会存在延时的情况,所以就决定从片选时间方面进行调整,这里又碰到一个问题,不论我怎么调整emif总线的时间(触发、建立、保持),程序执行的时候时间并没有变化,网上搜索之后发现是程序lib的问题,然后我直接通过寄存器的方式进行周期的配置,这样一来cs片选的时间就长了,数据也就可以了,我们本以为这样问题就解决了,也没有再考虑引起这个问题的主要原因,我按照这种方式调试其他板子的时候发现这样能够解决问题,但是每个cs 的片选时间并不是特别的固定,还是会出现采不到数据的问题,我们还是从cs这里分析问题,查看波形,发现数据建立与保持期间,cs并不是特别稳,会后很大的波动,设法降低这个波动会不会对数据的采集有影响呢,于是我们就在cs与地之间加了一个小的滤波电容,经过调整参数(选150nf)的电容对cs线进行纹波处理,效果就不一样了,cs平稳了,不会出现大的抖动,经过这样的修改采集到的数据就能够满足需求了,cs的周期也要求不那么高了,就一个cs的纹波,造成了这么大的问题,真是让我们始料未及啊,经过后面的分析,觉得之所以出现这种问题的原因应该是cs片选线太长,大概加起来有10多厘米所以就造成了天线的效应,造成cs上纹波比较多,cs相当于一条很长的天线,所以需要电容进行匹配,这样问题就解决了。
在这个解决过程中,确实学到不少东西,包括emif总线的配置,问题的分析方法等,但是上面还是走了很多弯路,今后在产品设计中一定要注意这个问题,不能让cs这种片选信号走太远,第二片AD之所以没有出现问题就是由于第二片AD的cs线么有那么远,所以影响不大。