一、概述
在我們的各種硬件產品中,經常會用到IIC總線,IIC是一種兩線接口(Inter-Integrated Circuit)。它是一種串行通信總線,使用多主從架構,是由飛利浦公司在1980年代初設計的,方便主板、嵌入式系統或手機與周邊設備組件之間的通訊。由于使用簡單,它被廣泛用于微控制器與傳感器陣列、顯示器、EEPROM、IOT等設備之間的通信。
圖1 IIC常用鏈路拓撲
IIC的主要特點如下:
只需要兩條總線,串行數據線(SDA),串行時鐘線(SCL);
沒有嚴格的波特率要求,主設備生成總線時鐘;
所有組件之間都存在簡單的主/從關系,連接到總線的每個設備均可通過唯一地址進行軟件尋址;
IIC是多主設備總線,可提供仲裁和沖突檢測;
SDA 線上的數據必須在時鐘的高電平周期保持穩定,數據線的高或低電平狀態只有在 SCL 線的時鐘信號是低電平時才能改變;
常用速率如下:普通模式:100kHz;快速模式:400kHz;高速模式:3.4MHz;
二、物理及協議層
2.1 硬件層
SDA和SCL都是雙向線路,都通過一個電流源或上拉電阻連接到正的電源電壓,連接到總線的接口數量主要受總電容限制(一般小于400pF),最大從機數理論上是127個;
由于SDA、SCL為漏極開路結構(OD),因此它們必須接有上拉電阻,阻值的大小可以是 1k8、 4k7 、10k等,當總線空閑時,兩根線均為高電平;
圖2 IIC總線內部OD門
當主設備決定開始或結束通訊時,需要執行以下動作:
當 SCL 是高電平時
SDA 線由高電平向低電平切換當 SCL 是高電平時
SDA 線由低電平向高電平切換
通信開始條件通信停止條件
圖3 通信開始/停止條件IIC總線的數據有效性
IIC總線既不是上升沿采樣也不是下降沿采樣,而是高電平采樣;IIC 使用 SDA 信號線來傳輸數據,使用 SCL 信號線進行數據同步;
SDA在SCL的每個時鐘周期傳輸一位數據。SCL為高電平的時候SDA表示的數據有效,即此時的 SDA 為高電平時表示數據“1”,為低電平時表示數據“0”。
當 SCL為低電平時, SDA 的數據無效,一般在這個時候 SDA 進行電平切換,為下一次表示數據做好準備。
圖3 數據有效性
IIC總線的F/S模式器件的時序定義
在測試IIC總線的時候時序測試尤為重要,也是IIC信號完整性測試的主要模塊,很多情況下IIC通信問題都是時序不對導致的。IIC總線在快速模式和普通模式下的時序定義如下圖;
圖5 IIC總線在F/S模式時序定義
重復起始條件的建立時間(tSU;SAT)
起始條件的保持時間(tHD;SAT)
數據保持時間(tHD;DAT)
數據建立時間(tSU;DAT)
SDA和SCL信號的上升時間(tr)
SDA和SCL信號的下降時間(tf)
停止條件的建立時間(tSU;STO)
停止和啟動條件之間的總線空閑時間(tBUF)
測試信號時序時需要注意具體的波形卡點位置,卡點位置不對情況下會導致測出來的數據不是真正的實際數據;具體的卡點位置還要參考被測單板所使用的芯片規格書的要求,根據具體的datasheet要求來測試卡點,一般情況下這三種情況較多:【10%,90%】、【0.8V,2.0V】、【0.3VDD,0.7VDD】;
F/S模式IIC總線器件SDA和SCL總線時序標準
在標準模式和快速模式情況下,總線的時序標準是一致的,無論在哪種產品都要以如下標準來判定時序測試的通過與否。
圖6 F/S模式IIC總線器件SDA和SCL總線時序標準
IIC總線的數據傳輸格式(7位尋址)
IIC總線尋址方式分為7位尋址和10位尋址,因為目前我們硬件產品所用到的都是7位尋址方式,所以介紹一下7位尋址模式的數據傳輸格式。
圖7. 7位尋址方式數據傳輸格式
如上圖所示:在起始條件 S 后,主機發送了一個從機地址,這個地址共有 7 位;第8位是數據方向位 R/ W; 0 表示發送 (寫), 1 表示請求數據 (讀);第9位為應答位(ACK),應答位低電平有效;后面為數據傳輸,每一組數據對應一個應答位。
如果主機仍希望在總線上通訊,可以產生重復起始條件 Sr(restart)和尋址另一個從機或寄存器,而不是首先產生一個停止條件,在這種傳輸中,一個數據串中可能既包括讀也包括寫的格式。
圖8 帶重復起始條件的7位尋址方式數據傳輸格式
IIC總線器件SDA和SCL的I/O級的特性
1、使用非標準電源電壓(不遵從IIC 總線系統電平規定)的器件必須將輸入電平連接到有上拉電阻Rp 的 VDD 電壓;
2、 最大的 VIH=VDDmax+0.5V;
圖9 F/S 模式 IIC 總線器件 SDA 和 SCL I/O 級的特性
標準模式IIC總線器件電阻Rp和RS的最大和最小值
1. 電源電壓限制了電阻 Rp 的最小值 ,因為輸出級在 VOLmax=0.4V 時指定的最小下拉電流是 3mA ;
2. 低電平要求的 0.1VDD 噪聲容限限制了 RS 的最大值;
3. 總線規定的上升時間及電容的存在限制了 Rp 的最大值 ;
Rp:總線的上拉電阻值;
Rs:總線的串阻值;
圖10 IIC上拉和電源供電示意圖
最小上拉電阻vs電壓串阻vs上拉電阻
2.2 IIC總線固件工作過程
在通信之初,主從機必須根據自己的要求約定好通信規則:command的定義和位置、address的位數和位置。
以讀寫從機的寄存器數據為例:假設主機寄存器地址為8位、從機寄存器也為8位;約定讀寄存器的command為0x01,寫寄存器command為0x02;約定主機發起通信后,第一個slave address字節收到ack后,緊跟的一個字節為command,再下面一個字節為寄存器地址address
寫(主往從設備寫數據)
主機:發起通信,按約定依次寫入command、要寫入的從機寄存器地址address和要寫入的數據data;
從機:分別提取command、address和data,根據command做出判斷是讀還是寫,將data存入入與到接收的address對應的寄存器;
圖13 主設備往從設備寫數據格式
讀(主設備讀取從設備數據)
主機:先發起一次通信,將讀command(0x01)和需要讀取的寄存器地址address寫入總線;
從機:分別提取command和address提取;判讀command的定義;根據收到的address,將對應的寄存器數據放入從機的IIC輸出buffer;
主機:再次發起一次通信(restart),讀取從機的數據;
主設備讀取從設備數據格式
restart讀取從設備數據格式
三、IIC總線測試分析
幾乎所有的iot產品、it產品、攝像機、服務器產品等在單板和整機通信中都會使用到IIC總線用于信息傳輸,所以對總線的可靠性、穩定性的要求也是非常高,測試的把關需嚴格要求。
IIC總線測試主要包括主機對從機的讀測試和寫測試、總線信號的信號質量測試和信號時序測試等。根據所使用的芯片不同,一般需要查找芯片規格書的參數,以制定不同的測試用例參數。
以下是關于IIC總線測試的一些典型問題。
波形畸變
White或Read時發現時鐘信號畸變,測試時鐘頻率約為367kHz。
測試發現SCL波形畸變
整改后SCL波形正常
原因分析:固件配置IIC傳輸速率錯誤,沒有按照要求的速率配置,實際速率與IC和硬件電路的參數不匹配,導致波形畸變。
時序問題
MCU和從機之間IIC的SCL上升時間為1.2us,指標要求1us以下。
SCL的上升時間超標
整改后SCL上升時間正常
原因分析:由于此鏈路的IIC總線的上拉電阻選用太大;導致了SCL的上升時間太大(上拉電阻太大還可能導致電平時間低于預期)。
時序問題
數據保持時間不符合要求,數據超前時鐘。
時鐘在SDA之外變化
整改后SCL在SDA內變化
原因分析:slave芯片部分批次存在固有缺陷,使用舊批次芯片問問題解決。
信號質量問題
測試發現IIC總線存在過沖現象,最大電壓能達到4.1V;超過芯片能承受的最大3.6V和最小-0.3V電壓。
SCL存在過沖現象
整改后SCL在標準內
原因分析:接收端信號震蕩導致,存在一定的信號反射導致scl存在尖峰波形超過標準。(注意:探頭接地線太長也會導致類似過沖現象)解決方案:接收端加一個22歐姆的電阻作為阻抗匹配,后效果明顯改善;
審核編輯:湯梓紅
評論
查看更多