IIC總線測試總結
對于Current Address Read,其操作過程為:
1、主設備發出START信號;
2、主設備發出DEV SEL信號,之后“R/W”位置1,表示接下來執行讀操作;
3、從設備應答ACK;
4、從設備從當前指針所指單元發出數據;
5、主設備應答位,不應答從數據設備讀入(NO ACK,高電平);
6、主設備發出STOP信號,結束此次讀操作。
Sequential Current Read一次可讀出多個數據,每8位數據讀出后,主設備進行一次ACK應答,最后一個數據,主設備不進行應答,應答位置高,之后發出STOP信號結束操作。
對于Random Address Read,其操作過程為:
1、主設備發出START信號;
2、主設備發出DEV SEL信號,之后“R/W”位置0,表示接下來仍執行寫操作;
3、從設備應答ACK;
4、主設備發出Byte addr信號,從設備對每8位Byte addr進行一次應答ACK;
5、主設備再次發出START信號;
6、主設備再次發出DEV SEL信號,之后“R/W”位置1,表示接下來執行讀操作;
7、從設備應答ACK;
8、從設備從之前寫入的Byte addr地址中讀出數據;
9、主設備不進行應答,應答位置高(NO ACK);
10、主設備發出STOP信號,結束此次操作。
三、IIC總線測試項目
1、時鐘SCL信號質量測試
包括高電平電壓、低電平電壓、上沖、下沖、上升時間、下降時間、時鐘頻率、高電平脈寬、低電平脈寬。
2、數據SDA信號質量測試
包括高電平電壓、低電平電壓、上沖、下沖、上升時間、下降時間。
3、寫保護WC信號質量測試
包括高電平電壓、低電平電壓、上沖、下沖。
4、時序測試
需要測試的時序如下圖所示:


圖4 IIC總線時序測試項目圖
(1) tHD:STA:START信號保持時間。IIC總線是在SCL信號為高電平時,SDA下降沿作為START信號的。該參數是指SDA信號由高變低后,SCL還需要維持高電平的最短時間,以確保START信號成功采樣;
(2) tHD:DAT:數據保持時間。IIC總線是在時鐘SCL上升沿的時候對數據進行采樣,SDA需在時鐘上升沿來臨前保持穩定;同時SDA需在時鐘SCL為低電平時才能進行轉換。該參數即是時鐘SCL由高變低后,SDA還需要維持上一位數據電平的最短時間;
(3) tSU:DAT:數據建立時間。指在SCL上升沿來臨之前,SDA此次采樣數據電平需要提前維持的最短時間,以確保此次數據的采樣成功;
(4) tSU:STA:START信號建立時間。指在SDA下降沿來臨之前,SCL需要提前維持高電平的最短時間,以確保START信號的成功建立;
(5) tSU:STO:STOP信號建立時間。IIC總線是在SCL信號為高電平時,SDA上升沿作為STOP信號的。該參數是指在SDA上升沿來臨之前,SCL需要提前維持高電平的最短時間,以確保STOP信號的成功建立;
(6) tBUF:總線釋放最短時間。本次IIC操作結束和下次IIC操作開始需要對總線進行釋放的最短時間;
(7) tWLDL(tSU:WC):WC信號建立時間。WC信號需要在START信號發出前便完成建立。該參數即在START信號SDA下降沿來臨之前,WC信號需要提前維持低電平以確保成功建立的最短時間;
(8) tDHWH(tHD:WC):WC信號保持時間。WC信號需要在STOP信號發出后仍維持一段時間。該參數即在STOP信號SDA上升沿發出之后,WC信號仍需維持低電平以確保STOP操作成功完成的最短時間。
以上便是需要進行測試的項目。
四、IIC總線測試注意事項
自己之前在進行IIC總線測試時,由于急于完成,誤認為讀過程就是完全的數據讀出。其實從IIC讀操作過程就可以很明確的得知,讀過程也包含著數據寫入的階段,比如START信號發出,DEV SEL信號發出和Byte addr信號的發出;
另一方面,由于START信號和STOP信號均是由主設備發出的,因此在測試IIC讀操作時序的時候,僅需要測試tSU:DAT和tHD:DAT兩項參數。而寫操作才需要測試所有時序參數;
最后在測試過程中,尤其是在讀操作過程中,由于前面先要執行設備識別、地址寫入等寫操作,之后才會出現數據的讀出,如果要用示波器去抓整個讀操作過程,然后再放大局部去讀取時序參數,可能會由于時基過大,局部分辨率不夠,導致讀取的時序參數并不準確。
對于示波器,自己覺得比較重要的幾個參數包括:帶寬、采樣速率和存儲深度。
帶寬主要針對的是示波器支持的輸入波形頻率范圍;
采樣速率主要是指示波器內部對波形的采樣速率,根據香農采樣定理,要想不失真地恢復模擬信號,采樣頻率應該不小于模擬信號頻譜中最高頻率的2倍。而實際上對于輸入的波形,其最高頻率取決于波形的邊沿,可以用5~7倍信號頻率來評估;
存儲深度主要指示波器存儲采樣點的多少。之所以說在IIC讀操作測試中,為了獲取整個操作過程中的波形,將時基調大,然后再局部放大,受限于存儲深度,局部的波形可能就會失真,讀取出來的參數會有較大誤差。
因此在讀測試時,可以采用脈寬采樣,由于我們的測試中,用到的是Random Address Read和Sequential Random Read兩種模式,在讀出數據前,主設備還要再發出一次DEV SEL信號,tSU:STA便是在此時測量,但此時的SCL信號脈寬也不同于之前,如下圖紅色框中的波形所示:

圖5 tSU:STA測試時對應的SCL脈沖波形
可以先將時基調大,初步測出紅色框中SCL脈寬長度,然后用脈寬采樣,劃定波形脈寬范圍,然后采出波形,這樣得到的讀數據波形便有足夠的采樣點,讀取的參數值也更有參考價值。
tSU:STA和tBUF也可按此方法采樣測試。
通過這次測試,使自己更加明白,在做任何事情,不要急于著手,而是先想想看計劃是怎樣,采用什么樣的方法,從總體上理清了頭緒再著手,遇到細節問題再深究。
評論