IIC具體是什么這里我就不細說了,只收集一些關於IIC的原理。
IIC總線優點是節約總線數,穩定,快速, 是目前芯片制造上非常
流行的一種總線,大多數單片機已經片內集成了IIC總線接口,無
需用戶自己模擬,只需配置相關寄存器即可使用。
IIC總線有兩條串行線,其一是時鍾線SCK,其二是數據線SDA。
在尋常的應用之中,單片機常常作為主機,外圍器件作為從機使用。
每一個從機器件都擁有唯一的一個地址,這個地址在芯片手冊上會
有詳細的介紹,一般還需要自行配置芯片管腳上的高低電平,來實現確
定從機地址的目的。硬件設計上,SCK線和SDA線通過典型的4.7K電阻
進行上拉,保證兩條線空閑時保持高電平狀態。
IIC主要由一下幾部分組成(代碼可以看上一篇文章):
1.開始信號;
2.結束信號;
3.應答信號;
4.等待應答;
5.數據發送;
6.數據接收;
7.非應答信號
SDA上的數據在SCK高電平期間必須穩定,SDA上的數據在SCK期間才可以被更改。
起始信號:在SCK高電平期間,SDA一個下降沿,即構成了IIC的起始信號。
終止信號:在SCK高電平期間,SDA一個上升沿,即構成了IIC的終止信號。
IIC的一些時序就如上圖所示,信號的收發結合時序一起看更加容易理解。
下面就說一些IIC的通信過程。
1.發送啟動信號;
2.發送尋址地址(8位組成:前7位是從機地址,最后一位是讀寫確認位,
eg:1010101 0/1 ,若最后一位為0,則表示主機發送數據,若為1表示主機
接收數據。)主機發送地址時,總線上的每個從機都將這7位地址碼(這7位
地址碼前4位是固定的,后3位是可編程的 eg: 1010 xxx)與自己的地址進行
比較,若相同,則認為自己正在被主機尋址,根據R/T位將自己確定為發送器
和接收器;
3.等待應答;
4.發送 / 讀取 數據;
5.發送停止信號。
在IIC總線的一次數據傳輸中,可以有一下幾種組合方式:
1.主機向從機發送數據,數據傳送方向在整個傳遞過程中不變:
2.主機在第一個字節后,立即從從機讀數據(傳輸方向不變):
3.在傳送過程中,當需要改變傳遞方向時,起始信號和從機地址都
被重復一次產生一次,但兩次讀/寫方向位正好相反:
注:主機做的都是編程控制,從機做的都是自主控制,也可以說是硬件控制,
如主機給應答信號是編程控制,但是從機給應答信號是硬件控制,我們只需
要檢查在SDA為高期間,SCL保持低電平一些時間,即可判定從機給了主機
應答信號。