1.24C02介紹
24C02 現(xiàn)在基本是開發(fā)板的標(biāo)配,對于需要掉電存儲的應(yīng)用來說確是不二選擇。現(xiàn)在單片機(jī)因?yàn)閮?nèi)部集成了Flash存儲器,一般也都支持?jǐn)?shù)據(jù)的掉電保存,但相對于 24C02 這種 EEPROM 來說,使用單片機(jī)內(nèi)部的 Flash 有一些需要注意的問題:
a.Flash 寫入數(shù)據(jù)之前需要先執(zhí)行擦除操作,而且擦除以扇區(qū)為單位。
b.Flash讀寫次數(shù)比 EEPROM 少很多。
c.容易誤操作,把 Flash 內(nèi)部的代碼擦除掉。
d.影響中斷的響應(yīng)時(shí)間。
24C02 有 256 字節(jié)的數(shù)據(jù),一般說來也夠用了。它的地址是可以通過引腳配置的,這樣一條 I2C 總線上就可以掛多個(gè) 24C02。如下:
我們把 A2,A1,A0 都接地,這樣地址為 A0。然后 SCL,SDA 腳接 MCU 的 PB8 和 PB9。需要注意 SCL,和 SDA 需要加上拉電阻。
2.代碼
下面我們在一個(gè) I2C 例程上面修改代碼來實(shí)現(xiàn) 24C02 的讀寫。大家可以看到使用庫函數(shù)的好處,基本上不用看 STM32F030 的手冊,很快就能實(shí)現(xiàn)我們想要實(shí)現(xiàn)的功能。我們用 Keil 打開下面這個(gè)工程:
STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\I2C\I2C_TwoBoards_ComPolling\MDK-ARM\Project.uvprojx
Step 1, 把 I2C 地址改為跟我們硬件一致:
Step 2, 根據(jù)實(shí)際使用的 I2C 模塊和引腳進(jìn)行配置:
Step 3, 把地址模式改為 7BIT:
Step 4, 操作EEPROM,我們不使用例子中的 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive,這兩個(gè)函數(shù)適用于兩個(gè) I2C 器件之間進(jìn)行數(shù)據(jù)傳輸。我們這里要用的是下面這兩個(gè)函數(shù):
在此我們寫入數(shù)據(jù)用的 24C02 的 Page Write 命令,每次寫入 8個(gè)字節(jié)的數(shù)據(jù),然后存儲器寫入地址加 8。要注意每次執(zhí)行完寫入命令后,需要有一個(gè)延時(shí),等待 EEPROM 內(nèi)部處理完該指令后才能繼續(xù)寫入。這個(gè)延時(shí)要查手冊,不同的廠家可能有不同的數(shù)值。讀出時(shí)可以連續(xù)的讀出數(shù)據(jù),無需等待。
下面是寫入數(shù)據(jù)的波形,0xA0 是器件地址,0x28 是 24C02 內(nèi)部存儲器地址,之后是 8個(gè)字節(jié)數(shù)據(jù)。
讀出數(shù)據(jù)的波形:
注意:
在使用硬件 I2C 操作時(shí),有時(shí)候會遇到死鎖問題。在此情況下,可以把 SCL,SDA 引腳初始化為 GPIO,如此例中的 PB8, PB9 然后連續(xù)翻轉(zhuǎn) SCL 引腳送出 9 個(gè)時(shí)鐘脈沖,既可以使 I2C 從死鎖的狀態(tài)復(fù)位。然后再重新初始化 I2C 模塊,進(jìn)入正常 I2C 操作。
審核編輯:劉清
-
EEPROM
+關(guān)注
關(guān)注
9文章
1084瀏覽量
83513 -
Flash存儲器
+關(guān)注
關(guān)注
3文章
105瀏覽量
26343 -
GPIO
+關(guān)注
關(guān)注
16文章
1279瀏覽量
53813 -
STM32F030
+關(guān)注
關(guān)注
1文章
33瀏覽量
7010
發(fā)布評論請先 登錄
分享一個(gè)嵌入式linux讀寫24c02的i2c程序
MindSDK下的I2C讀寫24c02測試學(xué)習(xí)資料分享
24c02/24c01/24c04讀寫程序
24C02讀寫操作程序(C語言)
PIC單片機(jī)的I2C 24LC02 C讀寫程序
HL配套C實(shí)驗(yàn)例程24c02存儲器讀寫基本驅(qū)動
單片機(jī)模擬I2C總線及24C02讀寫實(shí)例(c源代碼),24C02 read / write process
24C02讀寫操作程序設(shè)計(jì)實(shí)例,24C02 read / write process
24c02讀寫程序(已通過測試),24C02 read / write process
24C02讀寫匯編程序,24C02 read / write process
嵌入式linux應(yīng)用讀寫i2c示例

評論