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