過完元旦假期的第一天就開始進入緊張的測試環節,硬件焊接參差不齊,對於調試測試環節的任務更加艱巨,不曾想一個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線么有那么遠,所以影響不大。