iic:inter-integrated circuit(積體電路匯流排),iic通訊協議是飛利浦公司於80年代初發明的一種運用於晶元與晶元之間進行資訊交換的序列、同步、半雙工通訊協議。
應用場合:晶元與晶元之間。板間通訊。共模通訊。抗干擾能力很差。
1) iic協議有兩根匯流排:時鐘匯流排sck,資料匯流排sda。
2) 這兩根匯流排都需要接上拉電阻。
3) 所有iic裝置都接在該匯流排上:乙個主機和多個從機。
4) iic匯流排空閒為高電平。
5) 時鐘匯流排sck由主機控制。
iic結束條件:表示iic通訊結束,在主機發出結束條件之後,所有的從機都會進入空閒狀態。
iic位傳輸:一次傳輸8個位的資料,高位在前,乙個時鐘傳送乙個位的資料。
iic應答:每次收到資料的裝置都會應答。
iic起始訊號:在sck高電平期間,sda的下降沿都是起始訊號。
iic結束訊號:在sck高電平期間,sda的上公升沿都是結束訊號。
iic應答訊號:在第9個時鐘的高電平期間,sda為低電平表示應答;反之則為非應答。
iic資料傳送:乙個時鐘準備乙個位的資料(拉高或者拉低sda),在時鐘的低電平期間準備資料。高位在前。
iic資料接收:乙個時鐘接收乙個位的資料,在時鐘的高電平期間取樣資料。高位在前。
注意:在資料傳送期間,sck為高電平的時候,sda絕對不允許發生改變。所以iic資料傳送時,只能在sck為低電平期間準備資料。
iic的時鐘:可以有以下兩種:兩種都可以使用
sck_l();
//延時
sck_h();
//延時
sck_h();
//延時
sck_l();
//延時
1)io口配置為推挽輸出,能否正常使用按鍵檢測。
2)漏極輸出:開漏輸出
3)開漏輸出模式下,io輸出低電平,輸入資料暫存器不能正常工作。。
4)開漏輸出模式下,io輸出高電平(輸出部分高阻態),輸入資料暫存器能正常工作。
開漏輸出模式下,io口需要輸出高低電平:直接控制odr暫存器。
漏極輸出需要切換為「輸入模式(輸出部分高阻態)」:io輸出高電平。
iic屬於一種低速通訊協議,iic的常見通訊速度:100khz,400khz,3.4mhz。
假如我們需要100khz的iic,乙個時鐘週期10us.
sck_l();
delay_us(5);
sck_h();
delay_us(5);
假如我們需要400khz的iic,乙個時鐘週期2.5us.
sck_l();
delay_us(1);
sck_h();
delay_us(1);
iic協議要求是比較寬鬆的。不太嚴格。比如某器件要求100khz的iic速度。
50khz~100khz都不會出錯。
tsu:sta:起始訊號建立時間,起始訊號產生前,匯流排空閒的時間,最小4.7us。
thd:sta:起始訊號保持時間,產生起始訊號之後,匯流排保持不變的時間,最小4us
tsu:sto:停止訊號建立時間,產生停止訊號之前,sck為高,sda為低的保持時間,最小4us。
tbuf: 新的傳送前,匯流排空閒時間,最小4.7us。
1) 複習iic協議規範
2) 自己動手完成iic的4個基本訊號程式設計,替換法驗證。
3) 預習at24c02,了解的儲存空間大小,特性,了解從裝置位址。
4) 從裝置位址 = 7位硬體位址+讀寫方向位
iic匯流排從機仲裁 I2C匯流排的仲裁機制
在多主的通訊系統中。匯流排上有多個節點,它們都有自己的定址位址,可以作為從節點被別的節點訪問,同時它們都可以作為主節點向其他的節點傳送控制位元組和傳 送資料。但是如果有兩個或兩個以上的節點都向匯流排上傳送啟動訊號並開始傳送資料,這樣就形成了衝突。要解決這種衝突,就要進行仲裁的判決,這就是i 2c匯流...
學習筆記 IIC匯流排
iic inter integrated circuit 匯流排是一種由 philips 公司開發的兩線式序列匯流排,用於連線微控制器及其外圍裝置。它是由資料線 sda 和時鐘 scl 構成的序列匯流排,可傳送和接收資料。在 cpu 與被控 ic 之間 ic 與 ic 之間進行雙向傳送,高速 iic...
從匯流排模型看IIC架構
1 iic匯流排 struct bus type i2c bus type 呼叫位置iic core.c i2c init void retval bus register i2c bus type iic裝置模型 i2c new device i2c client結構體 i2c register ...