一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在一個(gè)I2C例程上面修改代碼來實(shí)現(xiàn)24C02的讀寫

冬至配餃子 ? 來源:TopSemic嵌入式 ? 作者:TopSemic ? 2022-08-16 10:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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。如下:

pYYBAGL7AACAYNEWAABapDi8x0k434.png

我們把 A2,A1,A0 都接地,這樣地址為 A0。然后 SCL,SDA 腳接 MCU 的 PB8 和 PB9。需要注意 SCL,和 SDA 需要加上拉電阻。

pYYBAGL7ABOAXgsKAABsue0eduU211.png

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 地址改為跟我們硬件一致:

poYBAGL7ACWAeH2nAABYV1lkpic757.png

Step 2, 根據(jù)實(shí)際使用的 I2C 模塊和引腳進(jìn)行配置:

pYYBAGL7ADaAKk4GAAEXOPV0b6w844.png

Step 3, 把地址模式改為 7BIT:

poYBAGL7AEeAVqI4AADGkqL7aVA486.png

Step 4, 操作EEPROM,我們不使用例子中的 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive,這兩個(gè)函數(shù)適用于兩個(gè) I2C 器件之間進(jìn)行數(shù)據(jù)傳輸。我們這里要用的是下面這兩個(gè)函數(shù):

poYBAGL7AG2AB_bwAAE9YeH73_Q187.pngpYYBAGL7AHSAAv2GAABpt6Ygca4396.png

在此我們寫入數(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ù),無需等待。

poYBAGL7AIWAVg14AABJTAEjObc118.png

下面是寫入數(shù)據(jù)的波形,0xA0 是器件地址,0x28 是 24C02 內(nèi)部存儲器地址,之后是 8個(gè)字節(jié)數(shù)據(jù)。

poYBAGL7AJWAMaIcAABVbpfBu7A630.png

讀出數(shù)據(jù)的波形:

poYBAGL7AKSASnwjAABVoDhhay0295.png

注意:

在使用硬件 I2C 操作時(shí),有時(shí)候會遇到死鎖問題。在此情況下,可以把 SCL,SDA 引腳初始化為 GPIO,如此例中的 PB8, PB9 然后連續(xù)翻轉(zhuǎn) SCL 引腳送出 9 個(gè)時(shí)鐘脈沖,既可以使 I2C 從死鎖的狀態(tài)復(fù)位。然后再重新初始化 I2C 模塊,進(jìn)入正常 I2C 操作。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 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
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    求F0系列的24c02I2C讀寫程序

    跪求個(gè)STM32 F0系列的24c02I2C讀寫程序,謝謝了。希望有朋友能幫幫我,在此謝過了。
    發(fā)表于 01-10 09:02

    分享個(gè)嵌入式linux讀寫24c02i2c程序

    這里分享個(gè)嵌入式linux讀寫24c02i2c程序ioctl函數(shù)的使用:原型:struct ioctl(struct file *fil
    發(fā)表于 11-04 07:53

    MindSDK下的I2C讀寫24c02測試學(xué)習(xí)資料分享

    1、MindSDK下的I2C讀寫24c02測試學(xué)習(xí)  * 硬件電路  開發(fā)板上I2C硬件電路  使用PC6和PC7端口的I2C1接口  原作
    發(fā)表于 09-02 15:47

    24c02/24c01/24c04讀寫程序

    24c02/24c01/24c04  I2C EEPROM字節(jié)讀寫驅(qū)動程序,芯片A0-A1-A
    發(fā)表于 10-07 12:39 ?19次下載

    24C02讀寫操作程序(C語言)

    24C02讀寫操作程序.c #define uchar unsigned char#define uint unsigned int#i nclude
    發(fā)表于 01-16 11:49 ?1.1w次閱讀

    PIC單片機(jī)的I2C 24LC02 C讀寫程序

    PIC單片機(jī)的I2C 24LC02 C讀寫程序 1   I2C總線特點(diǎn)   
    發(fā)表于 10-30 08:27 ?5464次閱讀

    HL配套C實(shí)驗(yàn)例程24c02存儲器讀寫基本驅(qū)動

    HL配套C實(shí)驗(yàn)例程24c02存儲器讀寫基本驅(qū)動2,配合開發(fā)板學(xué)習(xí)效果更好。
    發(fā)表于 04-11 17:04 ?10次下載

    24c02基礎(chǔ)程序

    24c02寫入調(diào)用程序 用于初次接觸24c02 學(xué)習(xí)24c02用的
    發(fā)表于 07-12 15:14 ?24次下載

    單片機(jī)模擬I2C總線及24C02讀寫實(shí)例(c代碼),24C02 read / write process

    ) 單片機(jī)模擬I2C總線及24C02(I2C EEPROM)讀寫實(shí)例(c
    的頭像 發(fā)表于 09-20 19:41 ?2186次閱讀

    24C02讀寫操作程序設(shè)計(jì)實(shí)例,24C02 read / write process

    );? //從24c02的地址address中讀取一個(gè)字節(jié)數(shù)據(jù)void x24c02_write(uchar address,uchar info);? //向24c02的addres
    的頭像 發(fā)表于 09-20 19:41 ?1781次閱讀

    24c02讀寫程序(已通過測試),24C02 read / write process

    24c02讀寫程序(已通過測試),24C02 read / write process 關(guān)鍵字:24c02讀寫
    的頭像 發(fā)表于 09-20 19:41 ?2986次閱讀

    24C02讀寫匯編程序,24C02 read / write process

    ? ;簡潔的24C02讀寫匯編程序?;-------------------------------------------- ??? I2C_SDA????????? EQU P1.6
    的頭像 發(fā)表于 09-20 19:42 ?1449次閱讀

    嵌入式linux應(yīng)用讀寫i2c示例

    這里分享個(gè)嵌入式linux讀寫24c02i2c程序ioctl函數(shù)的使用:原型:struct ioctl(struct file *fil
    發(fā)表于 11-01 16:57 ?12次下載
    嵌入式linux應(yīng)用<b class='flag-5'>讀寫</b><b class='flag-5'>i2c</b>示例

    STM32f103系列i2c讀寫文件at24c02

    STM32f103系列i2c讀寫文件at24c02免費(fèi)下載。
    發(fā)表于 03-04 09:43 ?26次下載

    24C02的秘密

    本文主要介紹了下目前市場上面24C02幾種打線方式的區(qū)別,有利于消費(fèi)者芯片選型替代、電路設(shè)計(jì)、軟件編程的注意些細(xì)節(jié),另外就是給出了用
    的頭像 發(fā)表于 11-28 11:40 ?6954次閱讀