新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > I2C總線測試和分析

I2C總線測試和分析

作者: 時間:2011-02-23 來源:網(wǎng)絡(luò) 收藏

1、I2C總線簡介

I2C((Inter-Integrated Circuit bus))總線是一種由飛利浦公司開發(fā)的串行總線,產(chǎn)生于上個世紀(jì)80年代,最初為音頻和視頻設(shè)備開發(fā),現(xiàn)已廣泛應(yīng)用到通信、計算機、工業(yè)控制、多媒體等多個行業(yè),主要作為設(shè)備管理承載使用。它由兩條串行線(一條地址線和一條時鐘線)構(gòu)成總線網(wǎng)絡(luò),用于連接微控制器及低速的外圍設(shè)備通信。I2C總線包括一個兩端接口,通過一個帶有緩沖區(qū)的接口,數(shù)據(jù)可以被I2C發(fā)送或接受。利用I2C技術(shù)可以對連接在總線的所有部件進行集中管理,可隨時監(jiān)控風(fēng)扇、內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個參數(shù),增加了系統(tǒng)的安全性,方便了管理。主要的優(yōu)點是其簡單性和有效性。圖1是 I2C總線架構(gòu)示意圖。

圖1 I2C 總線架構(gòu)

I2C總線是由數(shù)據(jù)線SDA和時鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進行雙向傳送,傳送速率從100kbps到最高3.4Mbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機一樣只有撥通各自的號碼才能工作,所以每個電路和模塊都有唯一的地址,地址碼用來選址,即接通需要控制的IC部件,確定總線上哪個部件需要接收數(shù)據(jù);同時發(fā)送端設(shè)備(CPU或外設(shè))還要發(fā)出“讀”或“寫”的操作指示,以及具體的消息內(nèi)容。I2C協(xié)議的報文內(nèi)容可分成以下幾部分:

* 開始位--Start Bit

* 地址 -- Address :7 或 10比特

* 讀/寫標(biāo)志位-- Read/Write Bit:

指示數(shù)據(jù)方向

讀 = 數(shù)據(jù)從從設(shè)備讀到主設(shè)備

寫 = 數(shù)據(jù)從主設(shè)備寫到從設(shè)備

* 確認位 -- Acknowledge Bit

* 字節(jié)數(shù)據(jù) -- Data Byte(s)

除EEPROM數(shù)據(jù)讀/寫外,通常數(shù)據(jù)長度都=4

* 重啟動位 -- ReStart Bit

出現(xiàn)在組合的讀/寫消息內(nèi)容中

* 停止位 -- Stop Bit

下圖2是7位和10位兩種地址長度的 I2C協(xié)議幀結(jié)構(gòu)。

圖2 7位和10位兩種地址長度的 I2C協(xié)議幀結(jié)構(gòu)

2、I2C總線的需求

工程師對I2C總線和分析的需求主要涵蓋以下三個方面:

2.1了解總線正在發(fā)生什么

軟件工程師設(shè)計了I2C主控設(shè)備發(fā)出的消息內(nèi)容,但硬件工程師需要確定消息是不是被準(zhǔn)確無誤的傳送到物理線路上,需要了解總線上真正在發(fā)生什么。傳統(tǒng)的使用示波器的方式是先用探頭把信號捕獲下來,然后根據(jù)電平特點轉(zhuǎn)換成“1”或“0”,然后再去對比I2C協(xié)議,將其還原成有意義的消息幀。這種方式費時費力,對工程師的業(yè)務(wù)能力要求很高,而且儀器使用效率很低。工程師需要儀器能提供一種自動化的方式,直接將采集到的波形翻譯成容易識別的內(nèi)容,再根據(jù)不用類別工程師的需求,以不同的方式動態(tài)顯示在儀器屏幕上。比如硬件工程師可能希望以二進制的方式查看I2C消息內(nèi)容,底層驅(qū)動工程師希望以16進制方式分析波形,而應(yīng)用軟件工程師則希望以ASCII文本的方式去了解總線上實際運行的數(shù)據(jù)內(nèi)容

2.2調(diào)試總線上有故障的節(jié)點

I2C是由多個節(jié)點組成的總線網(wǎng)絡(luò),每一個節(jié)點都用唯一的地址符加以識別。主控設(shè)備發(fā)出的消息會被總線上所有節(jié)點接收到,但只有目標(biāo)地址和本節(jié)點匹配的消息才會被該節(jié)點送入上層軟件接口處理,因此當(dāng)某個特點的節(jié)點出了故障,或我們僅對該節(jié)點收發(fā)的數(shù)據(jù)感興趣時,我們希望僅觀測到目標(biāo)地址為該節(jié)點的 I2C消息幀,而忽略其他地址節(jié)點的信息。

工程師可能還面臨這樣一種情況:我不清楚I2C總線上有無故障節(jié)點,或不清楚是哪個節(jié)點收發(fā)數(shù)據(jù)有誤,但我希望一旦總線上有出錯狀態(tài)時,我能立即定位到故障來源。

2.3分析EEPROM內(nèi)存單元的有效性

EERPOM是在各類系統(tǒng)單板上廣泛使用的存儲器件,主要作用是存儲系統(tǒng)上電時需要導(dǎo)入的信息,比如主內(nèi)存地址、容量、模式,CPU初始化狀態(tài)等,EEPROM器件一般都采用I2C總線與CPU建立通信傳遞數(shù)據(jù)。當(dāng)讀寫EEPROM配置信息出錯的情況下,我們就不僅僅需要知道是哪片EEPROM出問題,更有意義的是要深入到器件內(nèi)部,定位具體是哪個地址單元出了問題,是讀數(shù)據(jù)過程中有問題還是寫數(shù)據(jù)過程中有問題。

3、力科示波器充分滿足工程師 I2C總線的需求

廣大工程師用戶日益需要能處理各種通用測量任務(wù)、同時又能滿足分析 I2C總線等低速串行總線的專用需求、且符合有限預(yù)算的解決方案,力科基于Windows操作系統(tǒng)的全系列示波器產(chǎn)品滿足了這些需求,這些系列包括WaveSurfer Xs、WaveRunner Xi、WavePro 7Zi和WaveMaster 8Zi,這些產(chǎn)品一個很重要的的應(yīng)用方面就是調(diào)試串行總線。示波器不僅要能測量信號電平、頻率等常規(guī)項目,還要能提供專門的軟件包以更深入分析和調(diào)試I2C總線。

  力科 I2C測試軟件包主要包括三大功能,完全涵蓋了嵌入式開發(fā)工程師分析I2C的以上需求,分別是總線協(xié)議解碼、總線觸發(fā)和EEPROM內(nèi)存單元調(diào)試。

3、1總線觸發(fā)

在力科示波器界面下進入菜單項“Trigger”->”Serial Data”->”I2C”,彈出的界面中允許用戶按照特定的模式去觸發(fā)I2C消息幀,如下圖3所示。比如你只關(guān)心地址為0x20節(jié)點上讀寫的數(shù)據(jù),那就可以設(shè)置以”地址”方式觸發(fā);或者你希望看到所有幀長度為4的I2C消息,那就可以設(shè)置以“幀長度”為觸發(fā)方式;更復(fù)雜的情況是既要隔離特定地址的消息,還要隔離該地址節(jié)點上接收到的特定數(shù)據(jù)內(nèi)容,那就可以設(shè)置”地址+數(shù)據(jù)”。

“No Ack”觸發(fā)方式提供給用戶專門捕獲總線出錯狀態(tài),通過這種方式,工程師可以快速定位到有故障的節(jié)點和出錯狀態(tài)。

圖3 力科示波器 I2C軟件包設(shè)置觸發(fā)界面

3、1總線協(xié)議解碼

在力科示波器界面下進入菜單項“Analysis”->”Serial Decode”->”I2C”,用戶對總線正在傳輸?shù)臄?shù)據(jù)內(nèi)容進行實時解碼,解碼后的內(nèi)容能選擇以“二進制”、“十六進制”和“ASCII”三種方式直接顯示在波形上方。由于I2C消息由多個協(xié)議字段組成,因此解碼時軟件會自動地把不同的協(xié)議字段以不同的顏色框加以標(biāo)準(zhǔn),比如地址字段是紅色框,而數(shù)據(jù)字段則對應(yīng)成藍色框,如下圖4所示

圖4 I2C總線解碼

一種更直觀的方式以表格化形式列出全部捕獲到消息幀的所有協(xié)議字段,然后用戶可以根據(jù)需要單獨方法顯示表格中特定的消息幀,如下圖5所示。

圖5 表格顯示 I2C協(xié)議幀結(jié)構(gòu)數(shù)據(jù)

3、3EERPOM調(diào)試

力科I2C軟件包專門提供 EERPOM內(nèi)存單元地址的觸發(fā)方式,以滿足工程師升入調(diào)試EEPROM器件的需求。在這種情形下,不僅需要設(shè)置器件作為 I2C節(jié)點的地址符,還要設(shè)置器件內(nèi)部某個具體內(nèi)存單元的地址。完成這些設(shè)置后,觸發(fā)顯示在示波器屏幕上的波形即使該內(nèi)存單元上讀寫的數(shù)據(jù)內(nèi)容。如下圖6所示。

圖6 I2C軟件包調(diào)試EEPROM界面



關(guān)鍵詞: 測試 測試測量

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉