1. 程式人生 > >微控制器之IIC通訊協議

微控制器之IIC通訊協議

概念

I2C(IIC,Inter-Integrated Circuit),兩線式序列匯流排,由PHILIPS公司開發用於連線微控制器及其外圍裝置。它是由資料線SDA和時鐘SCL構成的序列匯流排,可傳送和接收資料。在CPU與被控IC之間、IC與IC之間進行雙向傳送,高速IIC匯流排一般可達400kbps以上。

硬體IIC:硬體IIC速度比模擬快,並且可以用DMA。硬體IIC會自動匹配與從機的通訊時序,只需配置好硬體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位表示主裝置下面要寫入還是讀出(由從裝置決定)到匯流排(主裝置是以廣播的形式傳送的,只要是總線上的所有從裝置其實都能收到這個資訊)。然後總線上的每個從裝置都能收到這個地址,並且收到地址後和自己的裝置地址比較看是否相等。如果相等說明主裝置本次通訊就是給我說話,如果不想等說明這次通訊與我無關,不用聽了不管了。

IIC時序 

空閒狀態:SDA與SCL匯流排都處於高電平狀態

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

應答訊號時序

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

資料的有效性

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

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