1. 摘要
本筆記主要介紹基於中斷模式的IIC通訊軟件在飛思卡爾Kv4x系列MCU上的開發應用。 以一片24LC128的EEPROM和Kv46F256VLH15 MCU之間的通訊爲測試開發硬件平臺.微信
2. IIC 簡介
Philips 開發了一個簡單的雙向兩線總線實現有效的IC之間控制,這個總線就稱爲 Inter IC 或I2C 總線。全部符合I2C總線的器件組合在了一個片上接口,使器件之間直接經過I2C 總線通信這個設計概念解決了不少在設計數字控制電路時遇到的接口問題。I2C 總線實際上已經成爲一個國際標準在超過100 種不一樣的IC上實現並且獲得不少家公司的許可. SDA和SCL 都是雙向線路 都經過一個電流源或上拉電阻鏈接到正的電源電壓。當總線空閒時這兩條線路都是高電平 鏈接到總線的器件輸出級必須是漏極開路或集電極開路才能執行線與的功能。I2C總線上數據的傳輸速率在標準模式下可達100kbit/s ,在快速模式下可達400kbit/s, 在高速模式下可達3.4Mbit/s。SDA線上的數據必須在時鐘的高電平週期保持穩定數據線的高或低電平狀態只有在SCL 線的時鐘信號是低電平時才能改變。ide
IIC的一些特徵:測試
1), 只要求兩條總線線路一條串行數據線SDA 一條串行時鐘線SCLspa
2), 每一個鏈接到總線的器件均可以經過惟一的地址和一直存在的簡單的主機 /從機關係軟件設定地址主機能夠做爲主機發送器或主機接收器..net
3), 它是一個真正的多主機總線 若是兩個或更多主機同時初始化數據傳輸能夠經過沖突檢測和仲裁防止數據被破壞設計
4), 串行的8 位雙向數據傳輸位速率在標準模式下可達100kbit/s 快速模式下可達400kbit/s高速orm
模式下可達3.4Mbit/s接口
5) 鏈接到相同總線的IC數量只受到總線的最大電容400pF限制.ip
I2C 總線術語的定義ci
3. 硬件框圖
硬件是基於kv46F256VLH15 MCU 與24LC128之間的通訊。MCU爲主器件,EEPROM爲從器件,採用7位地址尋址模式。
4. 軟件開發
系統採用8M 晶振,PLL倍頻輸出爲144M,144M/6 = 24M 位IIC 模塊時鐘, IIC波特率爲100kbits/s
4.1 IIC 模塊的初始化(主模式)
開啓IIC 模塊時鐘
配置硬件管腳映射
配置I2CFrequency Divider register I2C_F
使能IIC模塊和IIC中斷
根據datasheet 驗證配置的參數是否符合datasheet要求,如不符合在調整
主要有IIC 波特率, SDA保持時間,SCL開始保持時間,SCL中止保持時間。
4.2 Interrupt Service Routing Diagram
5. 測試
5.1 寫EEPROM 測試
向EEPROM 的 0x0100地址寫一個字節的0x55. 從機7位地址爲0b 1010 000, 寫操做,7位地址後R/W應爲0。
藍色探針爲時鐘SCL, 黃色探針爲SDA信號。
從波形能夠應該能夠看出總線上的數據爲: 啓動信號,0xA0, 0x01, 0x00,0x55, 中止信號。
5.1.1 啓動信號測試
5.1.2 從機地址測試
波特率爲100k,因此一位的時間爲大約10us,每一個字節8位+1 位響應位 9位。從下圖能夠看出發送完啓動位後,發送從機地址+RW 位總共大概92.8us.
5.1.3 EEPROM 寫入地址測試 0x01, 0x00.
5.1.4 寫入EEPROM數據測試 0x55
5.1.5 中止信號測試
5.1.6 總體波形
5.2 讀EEPROM 測試
從EEPROM 的 0x0100地址讀取一個字節檢測上面寫入的是否正確. 從機7位地址爲0b 1010000,
藍色探針爲時鐘SCL, 黃色探針爲SDA信號。讀操做與寫操做有不一樣。
從波形能夠應該能夠看出總線上的數據爲: 啓動信號,0xA0, 0x01, 0x00,從新啓動信號,0Xa1,0x55,中止信號。
5.2.1 從機地址+W
5.2.2 讀取EEPROM地址
5.2.3 從新啓動信號
5.2.4 從機地址+R
5.2.5 讀取的數據
最後一個字節數據主機不發送ACK,準備發送中止信號。
5.2.6 中止信號
6 總結
從以上的波形中能夠看出軟件能夠很好的實現IIC的驅動。本驅動只實現了主模式,7位地址操做,
若有須要能夠稍加修改應用於10位地址模式,沒有實現從模式的驅動。
7 參考文獻
I2C –busspecification Version 2.1 January 2001
24LA128 數據手冊
FreescaleKv4x MCU 數據手冊.
本文分享自微信公衆號 - 嵌入式程序猿(InterruptISR)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。