Other Parts Discussed in Post:ADS8588S
簡介:ADS8588S是具有8通道16位精度同步采樣的SAR ADC,采樣速度最大為200KSPS, 廣泛應用于電力系統的采樣電路,具有高精度和高可靠性,ADS8588S有靈活的與主機通訊模式,同時支持串行(serial mode),并行(parallel mode)和并行字節(parallel byte mode)通訊。ADS8588S的通訊有特定的時序要求,必須完全滿足時序才能正確讀取數據。并行字節相對串行和并行而言稍復雜,這里介紹并行字節通訊的一些要點。
并行字節是把一個16位的數據分為兩個8位的字節來讀,并行的先讀高8位,再讀低8位,依次讀完8個通道,一共讀16次。讀完后再進行下一次轉換,下一個周期然后再讀16次。Datasheet中parallel byte mode的讀時序如下圖1: 其中CS是片選,RD是讀信號,一般CS和RD可以連在一起,DB[7:0]是8位并行字節信號,FRSTDATA信號指示開始讀第一通道, 根據datasheet, FRSTDATA會在RD的第一個下降沿變成高電平,表示這是讀一通道數據。
如果只遵守這個讀的時序仍然有可能出現讀數錯誤,我們讀的時候還需要參考另外一個時序,ADC的轉換時序,Datasheet中如下圖2:其中CONVSTA和CONVSTB是ADC開始轉換信號,BUSY表示正在轉換,如果BUSY是高,表示本次轉換還沒有結束,CS是上圖中的片選, RESET是復位信號。
這其中隱藏著一個潛在的邏輯,在圖1的時序中,在讀信號RD的第一個下降沿,FRSTDATA會升高指示第一個通道,但是前提是必須在BUSY由高到低之后的第一個下降沿,如果16次讀數的起始不是從BUSY變低之后開始讀,就有可能出現嚴重的錯誤,舉例如下:下圖3中CS就是RD信號,兩個連在一起,我們看到先是CONVST(A/B)信號上升表示ADC開始轉換,BUSY升高表示正在轉換,但是這時RD信號已經開始讀數,每一個脈沖是一個BYTE, 兩個脈沖表示一個16位數據,一共8個數據,所以每個周期RD是16個脈沖。這里RD在BUSY開始之前讀了,當BUSY結束(下降沿)后第一個RD讀數(為圖3CS/RD信號第6個脈沖下降沿)會讓系統認為這是第一個通道數據的高8位,后面的數據依次往下,然而實際MCU發出的卻是第3組信號的低8位,這時MCU認為的讀數邏輯不僅在通道的對應上出錯,連在每個16位數據的高8位低8位的順序也會出錯。
我們在第8通道加5V,對應的16進制數位0x7FFF,其余通道都是對地即0V, 對應的16進制數是0x0000,我們用圖3時序進行讀數,從MCU中看到的結果如下:我們發現MCU認為的第8通道數據并不是0x7FFF,其中高8位的7F變成了3通道的低8位,其中低8位的FF變成了2通道的高8位,另外本來應該是0x0001(1個bit的誤差很正常)的其他通道也變成了0x0100, 高8位和低8位也反了,和以上分析的邏輯完全吻合。
我們嘗試改變讀的時序,如下圖4:可以看到,RD的16次讀數起始點是在BUSY下降沿之后,第一個下降沿即FRSTDATA的上升沿。
改了時序之后的數據如下表2:讀數和預計的完全一致。
總結:
在使用ADS8588S的parallel byte mode讀數時一定要注意讀數的起始點要在BUSY信號下降沿之后,MCU認為的第一通道要與 FRSTDATA的上升沿指示的第一通道對應上,否則會出現讀數通道錯誤或者高低位順序錯誤的情況。
審核編輯:何安
-
模擬
+關注
關注
7文章
1423瀏覽量
83930
發布評論請先 登錄
相關推薦
評論