1?摘要
本篇應用筆記主要介紹 HC32F460 系列芯片的集成電路總線(Inter-Integrated Curcuit, I2C)模塊,并通過展示對 E2PROM 讀寫樣例代碼簡要說明如何使用 I2C 模塊。
2?I2C 簡介
I2C 協議為 Philips 公司提出的一種雙線制串行通信協議,支持半雙工數據通信,已經廣泛應用于電子電路產品中。常見的采用 I2C 通信協議的設備有 LCD 顯示屏驅動器、存儲器E2PROM、音頻 CODEC 等等。
SMBus 總線基于 I2C 協議進行優化,為系統和電源控制相關的管理任務提供控制總線,因應用于控制系統,所以 SMBus 與 I2C 協議相比更注重于通信過程中的實時響應。
3?HC32F460 系列的 I2C
HC32F460 系列的集成電路總線(I2C)模塊支持 I2C 標準協議,還可配置為支持 SMBus Ver2.0 總線協議。本系列芯片擁有 3 個獨立的 I2C 外設模塊,I2C1~I2C3。
I2C 模塊基本功能如下:
支持多主多從
支持標準模式100Kbps,快速模式400Kbps。
可以設定 2 個從機地址,可以設定 7 位地址格式和 10 位地址格式,能檢測到廣播呼叫地址。
I2C 協議握手功能、仲裁功能、SCL 時鐘同步功能。
2種復位方式
4種中斷和事件輸出
可實現 DMA 方式通信
針對 SMBus 總線模式可支持功能如下:
數據傳輸速度支持 10Kbps~100Kbps
SCL 電平超時測量
快速 ACK/NACK
3.1 系統框圖
I2C 模塊掛載于芯片外設總線 APB4,采用外設時鐘 PCLK3 進行分頻產生波特率時鐘,單個通道 I2C 模塊系統框圖如圖所示。
模塊內部為數據端口 SDA 和時鐘端口 SCL 提供輸出控制和輸入濾波功能;數據輸出時,輸出寄存器 I2CDTR 通過移位寄存器 I2CDSR 傳送數據;數據輸入時,輸入寄存器 I2CDRR 從移位寄存器 I2CDSR 中得到輸入數據;模塊內還包含 ACK 控制單元、仲裁單元、波特率控制單元、超時控制單元、中斷控制單元與發送接收控制單元一起實現 I2C 通信功能。
3.2 硬件連接
本系列 I2C 模塊支持多主多從的總線協議,推薦的總線結構如圖所示。總線的上拉電阻阻值由系統設計決定。
芯片 I2C 功能引腳資源包含 3 個通道的 SDA 和 SCL 端口,本系列芯片的 I2C 端口可以分配在功能組內任意端口。端口配置原理及方法請參考本系列芯片數據手冊的引腳配置及功能章節,也可以參考廠商提供樣例和驅動庫進行配置。
3.3 I2C 協議
I2C 總線協議請參考本系列芯片用戶手冊章節 27.3 的詳細介紹,包括 I2C 協議的開始條件,地址傳送,數據傳送,停止條件,重新開始條件,SCL 時鐘同步,仲裁、握手等。
3.4 I2C 模塊可配置功能
以下 3.4.1~3.4.4 為 I2C 模塊的基本配置功能:
3.4.1 濾波功能配置
接收數據濾波功能分為數字濾波功能和模擬濾波功能。
I2C 模塊的濾波功能默認為禁止狀態,需要使用時請在 I2C 功能使能前通過寄存器 I2C_FLTR進行配置。
3.4.2 波特率配置
根據數字濾波功能和 I2C 波特率分頻時鐘設置的不同。
3.4.3 從機地址配置
本系列芯片有個兩個從機地址寄存器 I2C_SLR0 和 I2C_SLR1 可以同時支持兩個從機地址,可以分別支持 7 位或 10 位從機地址。
3.4.4 廣播地址匹配功能
通過寄存器標志位 I2C_CR1.GCEN 可以使能廣播地址匹配功能,使能后從機的 I2C 設備可以接收識別到地址為 0 的廣播命令并將 I2C_SR.GCF 標志位置位。
3.4.5 SMBus 主機地址匹配使能
SMBus 模式使能在從機接收模式時可以配置主機地址配置使能、報警響應地址匹配使能、默認地址匹配使能。詳細說明請參考本系列芯片用戶手冊 “27.3.2 地址匹配”章節。
3.4.6 SMBus 超時測量
SMBus 的超時測量包括 SCL 電平超時測量、從機的超時測量、主機的超時測量。本 I2C 模塊硬件支持 SCL 電平超時測量功能,通過 TMOUTEN、HTMOUT 和 LTMOUT 寄存器可以配置超時功能,詳細說明請參考本系列芯片用戶手冊 “27.3.2.3 SMBus 主機地址匹配”章節。從機超時測量和主機超時測量功能可以通過軟件實現。
3.4.7 快速 ACK 配置
在 SMBus 接收模式時,需要在第 8 個時鐘下降沿將 SCL 保持低電平,待 CPU 處理完數據報錯誤碼(PEC)的寄存后,根據計算結果軟件寫入 ACK 位來解除 SCL 低電平狀態。可以通過I2C_CR3.FACKEN 標志位使能此功能。
4 樣例代碼
4.1 代碼介紹
用戶可根據上述的工作流程編寫自己的代碼來學習驗證該模塊,也可以直接通過華大半導體的網站下載到設備驅動庫(Device Driver Library, DDL)的樣例代碼并使用其中的 I2C 的樣例進行驗證。
4.2 代碼運行
用戶可以通過華大半導體的網站下載到 HC32F460 的 DDL 的樣例代碼(i2c_at24c02),并配合評估用板(EV-HC32F460-LQFP100-050-V1.1)運行相關代碼學習使用 i2C 模塊。
5 總結
以上章節簡要介紹了 HC32F460 系列的 I2C,說明了 I2C 模塊的寄存器及初始化操作流程,并且演示了如何使用樣例代碼,在實際開發中用戶可以根據自己的需要配置和使用 I2C 模塊。
責任編輯:tzh
評論
查看更多