STM32——I2C
STM32——I2C
一、I2C協(xié)議
? ? ? ? I 2 C (Inter-Integrated Circuit)協(xié)議是由 Philips 公司開發(fā)的,由于它具備引腳少、硬件實(shí)現(xiàn)簡單、可擴(kuò)展性強(qiáng)、不需要如 USART、CAN 的外部收發(fā)設(shè)備等特點(diǎn),現(xiàn)在被廣泛地使用在系統(tǒng)內(nèi)多個(gè)集成電路(IC)間的通信。
1、物理層
(1)它只使用兩條總線線路 :一條雙向串行數(shù)據(jù)線(SDA) ,一條串行時(shí)鐘線 (SCL)。
(2)每個(gè)連接到總線的設(shè)備都有一個(gè)獨(dú)立的地址,主機(jī)可以利用這個(gè)地址進(jìn)行不同設(shè)備之間的訪問。
(3)多主機(jī)同時(shí)使用總線時(shí),為了防止數(shù)據(jù)沖突,會(huì)利用仲裁方式?jīng)Q定由哪個(gè)設(shè)備占用總線。
(4)具有三種傳輸模式 :標(biāo)準(zhǔn)模式的傳 輸速率為 100 Kbit/s ,快速模式為 400 Kbit/s,高速模式下可達(dá) 3.4 Mbit/s,但目前大多 I 2 C 設(shè)備尚不支持高速模式。
(5)片上的濾波器可以濾去總線數(shù)據(jù)線上的毛刺波以保證數(shù)據(jù)完整。
(6)連接到相同總線的 IC 數(shù)量受到總線的最大電容 400 pF。
2、協(xié)議層
? ? ? ? I 2 C 的協(xié)議包括起始和停止條件、數(shù)據(jù)有效性、響應(yīng)、仲裁、時(shí)鐘同步和地址廣播等環(huán)節(jié),由于我們使用的是 STM32 集成的硬件 I 2 C 接口,并不需要用軟件去模擬 SDA 和SCL 線的時(shí)序。
S:傳輸開始信號(hào)
SLAVE_ADDRESS:從機(jī)地址
R/W: 傳輸方向選擇位,1 為讀,0 為寫
A/A——: 應(yīng)答或非應(yīng)答信號(hào)
P:停止傳輸信號(hào)
?
二、STM32的I2C架構(gòu)
1、I2C接口特性
(1)STM32 的中等容量和大容量型號(hào)的芯片均有多達(dá)兩個(gè)的 I 2 C 總線接口。
(2)能夠工作于多主模式或從模式,分別為主接收器、主發(fā)送器、從接收器及從發(fā)送器。
(3)支持標(biāo)準(zhǔn)模式 100 Kbit/s 和快 速模式 400 Kbit/s,不支持高速模式。
(4)支持 7 位或 10 位尋址。
(5)內(nèi)置了硬件 CRC 發(fā)生器 / 校驗(yàn)器。
(6)I 2 C 的接收和發(fā)送都可以使用 DMA 操作。
(7)支持系統(tǒng)管理總線(SMBus)2.0 版。
2、I2C結(jié)構(gòu)
? ? ? ? I 2 C 的所有硬件架構(gòu)就是根據(jù) SCL 線和 SDA 線展開的(其中 SMBALERT 線用于 SMBus)。
? ? ? ? SCL 線的時(shí)序即為 I 2 C 協(xié)議中的時(shí)鐘信號(hào),它由 I 2 C 接口根據(jù)時(shí)鐘控制寄存器(CCR)控制,控制的參數(shù)主要為時(shí)鐘頻率。
? ? ? ? SDA 線的信號(hào)則通過一系列數(shù)據(jù)控制架構(gòu),在將要發(fā)送的數(shù)據(jù)的基礎(chǔ)上,根據(jù)協(xié)議添加各種起始信號(hào)、應(yīng)答信號(hào)、地址信號(hào),實(shí)現(xiàn)以 I 2 C 協(xié)議的方式發(fā)送出去。讀取數(shù)據(jù)時(shí)則從 SDA 線上的信號(hào)中取出接收到的數(shù)據(jù)值。發(fā)送和接收的數(shù)據(jù)都被保存在數(shù)據(jù)寄存器(DR)上。
?