I2C通訊(讀寫EEPROM)

I2C協議簡介併發

I2C通訊協議(Inter-Integrated Circuit)是由Phiilps公司開發的,它引腳少,硬件實現簡單,可擴展性強,不須要USART、CAN等通訊協議的外部收發設備,被普遍的應用在系統內多個集成電路(IC)間通信。框架

它是一個多設備總線,即總線能夠掛載多個I2C通訊設備,支持多個通信主機及多個通訊從機。I2C總線只使用兩條總線線路,一條雙向串行數據線(SDA),一條串行時鐘線(SCL)。ui

每條鏈接到總線的設備都有一個獨立的地址(7位地址或者10位地址),主機能夠利用這個地址進行不相同設備之間的訪問。3d

I2C物理層blog

在電路中有三種狀態圖片

①高電平表示邏輯 1開發

②低電平表示邏輯 0it

③高阻態擴展

當通信設備爲高阻態時,即電阻很大,就像和總線斷開同樣配置

當通信設備想表達邏輯1的時候或者空閒時,都要設置高阻態

因此當配置I2C引腳時不能配置成推輓輸出,而是要配置成開漏輸出(通常用在總線上輸出高阻態)

總線數目受到電容限制

I2C協議層

主機寫數據到從機

主機先廣播從機的地址,在地址後面的這一位表示讀寫位,0表示寫,當有這個地址的從機時,從機會回覆一個應答位(ACK),而後主機向從機寫數據,每發一個字節的數據,從機會回覆一個應答位,當從機沒法接收數據時,會回覆給主機一個非應答信號,主機會發送一箇中止位

主機由從機讀數據

由從機讀數據與寫數據到從機略有不一樣,首先讀寫位不一樣,由於是讀數據因此讀寫位爲1,而後從機向主機發送數據,主機來回復應答信號,當主機不在接收數據時,主機會回覆一個非應答信號,併發送一箇中止信號,注意這裏的中止信號也是主機發送的。

複合格式

是由寫後讀複合而成

寫方向(設備地址)---寫入數據(存儲器的內部地址或寄存器)即先選擇由從機哪一個地址開始,再來讀和寫

通信的起始和中止信號

起始和中止信號都是由主機產生的

數據有效性

地址及數據方向

1個字節(8位)

7位的設備地址+1個讀寫位

舉例:

0x78 + 1 =8位設備的讀地址 = 0xF1

0x78 + 0 =8位設備的寫地址 = 0xF0

響應

當主機向從機寫數據時,主機的數據位會在應答位時主動釋放數據線SDA的控制權 ,來接收從機數據線SDA的應答信號

STM32的I2C特性及框架

在業界都瞭解,STM32片上外設的硬件協議會出現一些BUG,但對於初學者並無什麼影響

STM32的I2C硬件框架刨析

SMBA總線用的比較少

時鐘控制邏輯

由時鐘控制寄存器(I2C_CCR)控制

第15位控制I2C速度模式

0:標準模式I2C 100kbit/s

1:快速模式I2C 400kbit/s

在I2C標準模式或SMBus模式下:

Thigh = CCR ×TPCLK1(高電平時間), TPCLK1爲AHB1時鐘, CCR的值由咱們本身寫上去

Tlow = CCR ×TPCLK1(低電平時間) TPCLK1爲AHB1時鐘 同上

當想設置快速模式時,應該設置DUTY位設置佔空比

0:低電平的時間是高電平的時間的2倍

1:低電平的時間是高電平的時間的16/9倍

[圖片]

數據控制邏輯

地址及數據方向

I2C爲高位先行的

STM32的I2C通訊過程

一、作爲主發送器

二、作爲主接收器

相關文章
相關標籤/搜索