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