IIC協議使用

2021-03-04 09:50:01 字數 3740 閱讀 6766

2.2 i2c工作原理

sda和scl都是雙向線路,各通過乙個電流源或上拉電阻連線到正的電源電壓。當匯流排空閒時這兩條線路都是高電平,連線到匯流排的器件輸出必須是漏極開路或集電極開路才能執行線與的功能。i2c匯流排上資料的傳輸速率在標準模式下可達100kb/s,在快速模式下可達400kb/s,在高速模式下可達3.

4mb/s。連線到匯流排的介面數量由匯流排電容是400pf的限制決定。

圖15-2(a)顯示了i2c匯流排上的資料穩定規則,scl為高電平時sda上的資料保持穩定,scl為低電平時允許sda變化。如果scl處於高電平時,sda上產生下降沿,則認為是起始位,sda上的上公升沿認為是停止位。通訊速率分為常規模式(時鐘頻率100khz)和快速模式(時鐘頻率400khz)。

同一匯流排上可以連線多個帶有i2c介面的器件,每個器件都有乙個唯一的位址,既可以是單接收的器件,也可以是能夠接收傳送的器件。

圖15-2(b)顯示了i2c匯流排的起始位和停止位。

每次資料傳輸都是以乙個起始位開始,而以停止位結束。傳輸的位元組數由arm控制和決定,沒有限制。最高有效位將首先被傳輸,接收方收到第8位資料後會發出應答位。

資料傳輸通常分為兩種:主裝置傳送從裝置接收和從裝置傳送主裝置接收。這兩種模式都需要主機傳送起始位和停止位,應答位由接收方產生。

從裝置位址一般是1或2個位元組,用於區分連線在同一i2c上的不同器件。

3 i2c硬體電路設計

3.1 i2c串列埠儲存器

在嵌入式系統中會用到各種帶i2c介面的晶元,這裡以i2c串列埠儲存器csl24wc256為例,說明i2c電路在arm嵌入式系統中的應用。

csl24wc256是美國callalxst公司的一款晶元,是乙個256k位支援i2c匯流排資料傳送協議的序列cmos串列埠儲存器,可用電擦除,可程式設計自定時寫週期(包括自動擦除時間不超過10ms,典型時間為5ms),具有64位元組資料的頁面寫能力。序列儲存器一般具有兩種寫入方式,一種是位元組寫入方式,另一種是頁寫入方式。允許在乙個寫週期內同時對1個位元組到一頁的若干位元組的程式設計寫入,1頁的大小取決於晶元內頁暫存器的大小。

先進的cmos技術實質上降低了器件的功耗,可在電源電壓低到1.8v的條件下工作,等待電流和額定電流分別為0和3ma,特有的雜訊保護施密特觸發輸入技術,可保證晶元在極強的干擾下資料不丟失。

晶元管腳排列圖如圖15-3所示,其管腳功能描述如表15-l所示。

其中:·scl:序列時鐘。輸入管腳,用於產生器件所有資料傳送或接收的時鐘。

·sda:序列資料/位址。雙向傳輸端,用於傳送位址和所有資料的傳送或接收。

它是乙個漏極開路端,因此要求接乙個上拉電到vcc端(典型值為100khz時為10k,400khz時為lk)。對於一般的資料傳輸,僅在scl為低期間sda才允許變化;在scl為高期間變化,留給指示start(開始)和stop(停止)條件。

·ao/a1/a2:器件位址輸入端。這些輸入端用於多個器件級聯時設定器件位址,當這些腳懸空時預設值為空。

·wp:寫保護。如果wp管腳連線到vcc,則所有的內容都被寫保護(只能讀):當 wp管腳連線到vss或懸空時,則允許器件進行正常的讀/寫操作。

3.2電路原理圖

如圖15-4所示為序列儲存器電路原理圖,具有序列儲存的功能,速率為100khz,所r2/r3為iok。如果將編碼開關任一位開啟,則對應的位址線為「l」;如果將編碼開關任一位閉合則對應的位址線就為「0」。

4軟體設計

4.1 i2c讀寫過程設計

arm在系統中一直作為主裝置,所以在i2c匯流排中只有主傳送和主接收兩種操作方式。在系統初始化時,由指令控制cpu送出相關的資料,經介面送到i2c暫存器內。通過初始化這些暫存器,可以實現i2c匯流排的主模式控制,以及實現i2c匯流排上的從裝置讀寫。

當主裝置和其中的乙個從裝置交換資料時,主裝置首先發出乙個啟動start訊號,這個訊號被所有的從裝置接收。即從裝置準備接收cpu的訊號,然後主裝置再發出它要通訊的從裝置位址。接下來,所有的從裝置將收到的這個位址和它們自己的位址進行比較。

如果收到的位址和它們自己的位址不同,則什麼都不做,只是等待主裝置發出停止stop訊號;如果收到的位址和它自己的位址相同,它就發出乙個訊號給主裝置,這個訊號稱為應答acknowledge訊號。當主裝置收到應答訊號後,它就開始向從裝置傳送資料或者從從裝置接收資料。當所有操作都進行完畢時,主裝置發出乙個stop訊號,通訊完畢,釋放i2c匯流排;然後所有的從裝置都等待下一次start訊號的到來。

而在i2c串列埠儲存器中,主要涉及的是讀和寫過程。讀寫流程圖如圖15-5所示。

1.寫過程

(1)上電後等待乙個延時(1ms)。

(2)器件定址,給乙個起始訊號(scl為高電平時sda給乙個下降沿)。傳送從器件位址,高5位為10110,然後根據a1/a0(如果和器件的位址相同則那個器件會應答)進行讀/寫控制(o為讀)。

(3)應答,器件在scl的第9個週期時sda給出乙個低電平,作為應答訊號。

(4)開始寫有兩種模式:位元組寫模式和頁寫模式。

·位元組模式:給出a15~a8應答,給出a7~a0應答;然後給出data和停止訊號 (scl為高電平時,sda給出乙個上公升沿),接著要等待乙個擦寫時間。

·頁寫模式:給出位址以後連續給出64個資料。如果多於64個資料,則位址計數器自動翻轉。(如果少於64暱,估計是沒有問題的,但是需要實驗驗證。)

(5)判斷擦寫操作是否完畢的乙個方法(應答查詢),如果器件還處於擦寫狀態,則不會應答器件定址;如果有應答,則說明擦寫完畢。

2.讀過程

(1)上電以後等待乙個延時(lms)。

(2)器件定址。

(3)應答。

(4)開始讀有三種模式:立即當前位址讀、選擇/隨機讀、連續讀。

·立即當前位址讀:如果上次讀/寫的操作位址為n,則現在是n+1。不需要ack,但是需要stop訊號。

·選擇/隨機讀:先偽寫(用於給出乙個位址),然後再次啟動,讀取資料。

·連續讀:讀取乙個以後給乙個應答,這樣器件會再給出下乙個位址的資料內容。

(5)開始資料傳輸start後、停止資料傳輸stop前,scl高電平期間,sda上為有效資料。

4.2程式**說明

以下是i2c函式的程式**,其中databuff為讀寫資料輸入/輸出緩衝區的首址,bytequantity為要讀寫資料的位元組數量,address為i2c串列埠儲存器片內位址,controlbyte為i2c串列埠儲存器的控制位元組,具體形式為(1)(0)(1)(o)(a2)(a1)(a0)(e/w)。

其中r/w=1表示讀操作,r/w=0為寫操作。errorcount為允許最大次數,若出現errorcount次操作失效,則函式中止操作,並返回1。sda和scl由使用者自定義。

此程式設計時考慮了通用性,與arm cpu無關,與arm速度也無關。時序的等待時間嚴格按照晶元文件上描述的,定義在i2c.h檔案中。

使用時只需要定義scl和sdl的引腳,以及i2c使用的電壓(修改ⅱc_v巨集定義)。

5例項總結

i2c匯流排硬體電路結構簡單,符合系統設計向小型化低功耗方向發展的趨勢。在其軟體方面,由於使用平台模式的ⅱc軟體包,保證了在較短的時間內開發出高穩定性的驅動程式。同一匯流排上可以連線多個帶有i2c介面的器件,每個器件都有乙個惟一的位址,既可以是單接收的器件,也可以是能夠接收傳送的器件。

傳送器或接收器可以在主模式或從模式下操作,這取決於晶元是否必須啟動資料的傳輸還是僅僅被定址。

本章以i2c串列埠儲存器為例,給出了在arm平台中i2c匯流排的軟硬體實現方法,軟體設計上i2c匯流排讀和寫模組的函式流程圖,以及具體驅動程式的設計。實驗證明,i2c匯流排能很好地擴充套件arm系統的i/o互動能力。在設計i2c串列埠儲存器時需注意以下幾點問題。

·scl不能太快,這只要限制高低電平的時間就可以了。

·start訊號需要建立和保持一段時間。

·stop訊號需要一定的建立時間,之後就是匯流排空閒時間。

IIC匯流排協議

iic匯流排協議 i2c協議是微控制器與其它晶元常用的通訊協議,由於只需要兩根線,所以很好使用。1.i2c匯流排的特點 1 只要求兩條匯流排線路一條序列資料線 sda 一條序列時鐘線 scl 2 每個連線到匯流排的器件都可以通過唯一的位址和一直存在的簡單的主機 從機關系軟體設定位址 主機可以作為主傳...

公車使用協議

甲方 四川省武聯建築工程有限責任公司 乙方 1 為方便工作的開展,提供工作效率,甲方將型號為新凱牌 車牌號為 川aw643l 的汽車提供給乙方在工作期間使用。乙方從雙方簽字生效即日起擁有此車的使用權同時甲方將車輛鑰匙及機動車行駛證 標誌 保險影印件乙份提供給乙方。此車的所有權歸甲方所有。2 有如下情...

裝置使用協議

甲方 乙方 經雙方協商一致,就乙方使用甲方裝置事宜達成以下協議 一 使用裝置 在不影響甲方正常工作的情況下,乙方可以使用甲方裝置 杭州2t 電瓶叉車。二 使用期限 從二o一二年一月一日至二o一二年十二月三十一日。三 費用承擔 1 乙方使用甲方裝置需承擔12 的費用,該費用包括甲方裝置全年的保養維護費...