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