微控制器之IIC通訊協議

2021-08-30 17:55:00 字數 1657 閱讀 8869

i2c(iic,inter-integrated circuit),兩線式序列匯流排,由philips公司開發用於連線微控制器及其外圍裝置。它是由資料線sda和時鐘scl構成的序列匯流排,可傳送和接收資料。在cpu與被控ic之間、ic與ic之間進行雙向傳送,高速iic匯流排一般可達400kbps以上。

硬體iic:硬體iic速度比模擬快,並且可以用dma。硬體iic會自動匹配與從機的通訊時序,只需配置好硬體iic的一些函式就可以了。

軟體iic:用軟體模擬iic的時序圖,從而與從機實現通訊

1.半雙工:半雙工通訊允許訊號在兩個方向上傳輸,但某一時刻只允許訊號在乙個通道上單向傳輸,可切換方向的單工通訊

2.序列同步通訊:資料通過一根sda線傳輸,scl提供同步時鐘。同步通訊的最大特點就是通訊雙方的scl時鐘線連在一起。

3.主從式通訊:每乙個通訊週期的發起和結束都是由主裝置來做的,從裝置只有被動的響應主裝置,沒法自己自發的去做任何事情。有主機從機之分,支援多個從機。

4.傳輸順序:高位在前,低位在後

5.只有sda與scl兩根線,但是主機與從機之間還需要一根共地線,不然從機怎麼知道主機發過來的電平時序是高還是低呢!

6.sda與scl匯流排一定要接上拉電阻。

7,傳輸速率:i2c協議v2.1規定了三種速率(bps)

-100k

-400k

-3.4m

通訊速率是按照主機的scl的速度來通訊,scl上的通訊速度要同時小於主從規定的最大通訊速度

一主多從的通訊過程:主裝置在每個通訊週期會先發8位的從裝置位址,其實8位中只有7位是從裝置位址(datasheet有裝置位址),還有1位表示主裝置下面要寫入還是讀出(由從裝置決定)到匯流排(主裝置是以廣播的形式傳送的,只要是匯流排上的所有從裝置其實都能收到這個資訊)。然後匯流排上的每個從裝置都能收到這個位址,並且收到位址後和自己的裝置位址比較看是否相等。如果相等說明主裝置本次通訊就是給我說話,如果不想等說明這次通訊與我無關,不用聽了不管了。

空閒狀態:sda與scl匯流排都處於高電平狀態

起始訊號時序與結束訊號時序

應答訊號時序

傳送器每傳送乙個位元組,就在時鐘脈衝9期間釋放資料線,由接收器反饋乙個應答訊號。 應答訊號為低電平(0)時,規定為有效應答位(ack簡稱應答位),表示接收器已經成功地接收了該位元組;應答訊號為高電平(1)時,規定為非應答位(nack),一般表示接收器接收該位元組沒有成功。 

資料的有效性

scl處於高電平期間,sda的資料不能發生變換;scl處於低電平期間,sda的資料才允許發生變換。

對從機的讀位元組與寫位元組時序需要按照從機的時序圖來寫

微控制器通訊協議

現在大部分的儀器裝置都要求能過通過上位機軟體來操作,這樣方便除錯,利於操作。其中就涉及到通訊的過程。在實際製作的幾個裝置中,筆者總結出了通訊程式的通用寫法,包括上位機端和下位機端等。1 自定義資料通訊協議 這裡所說的資料協議是建立在物理層之上的通訊資料報格式。所謂通訊的物理層就是指我們通常所用到的 ...

微控制器通訊協議

微控制器 通訊協議 現在大部分的儀器裝置都要求能過通過上位機軟體來操作,這樣方便除錯,利於操作。其中就涉及到通訊的過程。在實際製作的幾個裝置中,筆者總結出了通訊程式的通用寫法,包括上位機端和下位機端等。1 自定義資料通訊協議 這裡所說的資料協議是建立在物理層之上的通訊資料報格式。所謂通訊的物理層就是...

IIC 通訊協議

原文 i2c匯流排進行資料傳送時,時鐘訊號為高電平期間,資料線上的資料必須保持穩定,只有在時鐘線上的訊號為低電平期間,資料線上的高電平或低電平狀態才允許變化。起始和終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電平的變化表示終止...