EEPROM可以掉電保存數(shù)據(jù),是一種在產(chǎn)品中經(jīng)常使用的器件,24Cxx 系列更是被廣泛采用。文章附件的工程在 24LC02 上調(diào)試通過,實現(xiàn)了字節(jié)讀寫和頁讀寫。MCU 是 STM32F030。采用了 MCU 的硬 I2C 控制器。24LC02硬件連接:A2,A1,A0 接 GND, 地址為 A0。WP 接 GND,允許寫入。24LC02 Page size 是 8 Bytes, 一共 256 個字節(jié)大小。如果要移植代碼到其它芯片,需要注意 Page size 和頁地址的不同。
網(wǎng)上有很多抱怨使用硬件 I2C 控制器不穩(wěn)定,常常死機(jī),所以轉(zhuǎn)而采用 GPIO 模擬 I2C 時序的同學(xué)。我們還是不推薦用模擬的方法,它會耗費比較多的MCU 系統(tǒng)時間。硬件 I2C 其實也是可以穩(wěn)定運(yùn)行的,需要注意以下幾點:
1. 看一下芯片勘誤表 Errata,有沒有已知 Bug。
2. I2C 操作中途被打斷,或受到脈沖干擾,SCL, SDA 可能被拉低鎖死。嘗試用 SCL 產(chǎn)生 9 個時鐘脈沖讓從器件或主控制器釋放總線。這種方法可以解決掉絕大部分問題。這里需要注意,拉低總線的并不一定是從器件,有客戶在總線鎖死后,把 SCL SDA 線割斷后發(fā)現(xiàn)這兩根線任然是拉低的(主控制器模塊因為時序問題進(jìn)入死鎖)。
3. 總線上加具有總線恢復(fù)功能的緩沖器,如 LTC4307。
4. 選用帶復(fù)位輸人的 I2C 從器件。5. 控制 I2C 從設(shè)備的電源,死鎖后重新上電。采用哪些方法,還是要綜合考慮可靠性要求和成本。
下面是實測的 24C02 讀寫時序:
Byte Write
Byte Read
Page Write
Page Read
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1048瀏覽量
82362 -
I2C控制器
+關(guān)注
關(guān)注
0文章
6瀏覽量
7085 -
STM32F030
+關(guān)注
關(guān)注
1文章
33瀏覽量
6786
發(fā)布評論請先 登錄
相關(guān)推薦
I2C總線的電路設(shè)計

實現(xiàn)I2C總線控制器的VHDL源代碼
LM3S系列微控制器I2C應(yīng)用文檔
I2C總線在Linux系統(tǒng)中的驅(qū)動設(shè)計
I2C控制lP在成像系統(tǒng)中的應(yīng)用

基于Verilog的I2C控制器的設(shè)計與綜合

嵌入式內(nèi)核及驅(qū)動開發(fā)-09IIC子系統(tǒng)框架使用(I2C協(xié)議和時序,I2C驅(qū)動框架,I2C從設(shè)備驅(qū)動開發(fā),MPU6050硬件連接

硬件I2C與模擬I2C

兩個PS I2C控制器的回環(huán)測試
如何在Versal平臺實現(xiàn)兩個PS I2C控制器的回環(huán)

I2C控制器驅(qū)動介紹

評論