低速通訊介面(二)I2C

2021-10-23 13:29:24 字數 2082 閱讀 2071

i2c引腳定義:都是雙向i/o線,介面電路為開漏輸出,需通過上拉電阻接電源。當匯流排空閒時,兩根線都是高電平,連到匯流排上的任一器件輸出的低電平,都將使匯流排的訊號變低。

起始訊號與終止訊號

scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號;

scl線為高電平期間,sda線由低電平向高電平的變化表示終止訊號。

(連線到i2c匯流排上的器件,若具有i2c匯流排的硬體介面,則很容易檢測到起始和終止訊號,若接受器件需要等待,可以先將scl拉成低電平,從而使主機處於等待狀態,直到接受器件準備好,再釋放scl線為高電平,使資料傳送可以繼續進行)

資料傳輸格式,7-bit定址資料傳輸

(1)位元組的傳送與應答

每乙個位元組必須保證是8位長度。資料傳送時,先傳送最高位(msb),每乙個被傳送的位元組後面都必須跟隨一位應答位(即一幀共有9位)

由於某種原因從機不對主機定址訊號應答時(如從機正在進行實時性的處理工作而無法接收匯流排上的資料),它必須將資料線置於高電平,而由主機產生乙個終止訊號以結束匯流排的資料傳送。

如果從機對主機進行了應答,但在資料傳送一段時間後無法繼續接收更多的資料時,從機可以通過對無法接收的第乙個資料位元組的「非應答」【sda處於高電平】通知主機,主機則應發出終止訊號以結束資料的繼續傳送。

當主機接收資料時,它收到最後乙個資料位元組後,必須向從機發出乙個結束傳送的訊號。這個訊號是由對從機的「非應答」【拉高sda】來實現的。然後,從機釋放sda線,以允許主機產生終止訊號

資料幀格式

i2c匯流排上傳送的資料訊號是廣義的,即包括位址訊號,又包括真正的資料訊號。

在起始訊號後必須傳送乙個從機的位址(7位),第8位數資料的傳送方向位(r/t),用「0」表示主機傳送資料(t),「1」表示主機接收資料(r)。每次資料傳送總是由主機產生的終止訊號結束。在匯流排的一次資料傳送過程中,可以有以下幾種組合方式:

a) 主機向從機傳送資料:

注1:有陰影部分表示資料由主機向從機傳送,無陰影部分則表示資料由從機向主機傳送。

a表示應答, a非表示非應答(高電平)。s表示起始訊號,p表示終止訊號。

注2:i2c匯流排協議有明確的規定:採用7位的定址位元組(定址位元組是起始訊號後的第乙個位元組)

b) 主機從從機中讀取資料

c)主機從從機中既有讀資料也有寫資料

10-bit定址資料傳輸

採用10位位址位擴充了i2c的位址範圍,7位和10位位址裝置都可以共存於同乙個i2c匯流排系統(但是使用10位的i2c裝置不多)

10位從機位址由start或者repeated start 後兩個位元組決定。第乙個位元組的前7位格式為1111 0xx,其中xx代表10位位址最高兩位(msb),第乙個位元組的第8位代表r/w位。

(1)主機寫資料-從機接收,傳輸方向不變

(2)主機讀資料-從機傳送,傳輸方向改變

I2C通訊技術

對於嵌入式開發的朋友來說,i2c協議實在是再熟悉不過了,有太多的器件,採用的都是通過i2c來進行相應的設定。今天,我們就隨便聊聊這個i2c協議。i2c協議中最重要的一點是i2c位址。這個位址有7位和10位兩種形式。7位能夠表示127個位址,而在實際使用中基本上不會掛載如此多的設定,所以很多裝置的位址...

I2C匯流排通訊

uart 屬於非同步通訊,比如電腦傳送給微控制器,電腦只負責把資料通過txd 傳送出來即可,接收資料是微控制器自己的事情。而 i2c 屬於同步通訊,scl 時鐘線負責收發雙方的時鐘節拍,sda 資料線負責傳輸資料。i2c 的傳送方和接收方都以 scl 這個時鐘節拍為基準進行資料的傳送和接收。i2c匯...

i2c通訊的詳細講解 I2C匯流排簡介

本文介紹了內部積體電路 aka i2c 序列通訊協議的基本特性和突出優點。元件之間的通訊 通訊協議 毫無疑問,電子系統的共同特徵是需要在兩個或三個或十個單獨的元件之間共享資訊。工程師已經開發出許多標準協議,可以幫助不同的晶元成功通訊 當您在微控制器或數字訊號處理器的功能列表中 通訊 下面對縮略語時,...