色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

I2C讀寫EEPROM基礎(chǔ)原理

GReq_mcu168 ? 來源:strongerHuang ? 作者:strongerHuang ? 2022-06-24 11:19 ? 次閱讀

相信很多小伙伴都使用過類似AT24C0x這種使用I2C讀寫的EEPROM,在項(xiàng)目中,使用不當(dāng)就容易導(dǎo)致數(shù)據(jù)丟失,或者異常的情況。

今天,我們就來講講關(guān)于EEPROM的內(nèi)容。

1I2C讀寫EEPROM基礎(chǔ)原理

市面上大部分使用I2C通信的EEPROM,控制時(shí)序和讀寫流程都基本相同。

I2C通信原理,說簡單不簡單,但說難也不難,主要理解基礎(chǔ)原理和時(shí)序即可。

可以參看我分享的文章:

I2C基礎(chǔ)原理及通信協(xié)議

詳述I2C總線時(shí)序

I2C幾種速度及區(qū)別


2EEPROM底層驅(qū)動

真正實(shí)際做過項(xiàng)目的人都知道,好的底層驅(qū)動,會給上層應(yīng)用開發(fā)帶來很大便利,節(jié)省開發(fā)時(shí)間,以及減少bug發(fā)生率。

而大部分初學(xué)者,或者應(yīng)屆畢業(yè)生從事相關(guān)開發(fā),一般很少考慮代碼的移植性,復(fù)用性,或者說容錯(cuò)處理等問題。

下面,我簡單列兩點(diǎn)我在項(xiàng)目中,對EEPROM常用的幾項(xiàng)操作。

1、先寫再讀,驗(yàn)證寫入成功

這種方法很好理解:寫入之后,再次讀去這部分?jǐn)?shù)據(jù),進(jìn)行一一匹配,驗(yàn)證是否與寫入數(shù)據(jù)一致。

一般我是會重復(fù)操作3次,也就是說:寫入,再讀取,如果超過3次都還失敗,那么我則放棄寫入,認(rèn)為寫入失敗,或芯片異常。

這個(gè)方法可以簡單解決因異常導(dǎo)致寫入失敗的問題。

2、添加校驗(yàn)信息

在上面一層讀驗(yàn)證基礎(chǔ)上,對保存一些參數(shù),我一般還會:在參數(shù)末尾添加類似“和校驗(yàn)”,或“CRC校驗(yàn)”。

假如你連續(xù)存儲一個(gè)有10字節(jié)的參數(shù)(數(shù)據(jù)結(jié)構(gòu)),如果因異常修改了中間某一個(gè)字節(jié)參數(shù),你讀出來進(jìn)行校驗(yàn),發(fā)現(xiàn)不對,則認(rèn)為這個(gè)參數(shù)無效。

添加這個(gè)校驗(yàn)的目的相信從上面我舉例已經(jīng)明白,就是解決多字節(jié)參數(shù)中某個(gè)字節(jié)被惡意修改,導(dǎo)致這個(gè)參數(shù)無效的問題。

3、EEPROM在多任務(wù)中添加互斥鎖

使用過操作系統(tǒng)的朋友都知道,多線程訪問一個(gè)資源,一般都存在互斥的關(guān)系。簡單的說:一個(gè)資源,在同一時(shí)刻,只能被一個(gè)線程操作。

拿EEPROM舉例:線程A在往EEPROM寫10字節(jié)數(shù)據(jù),剛6個(gè)字節(jié)時(shí),線程B想要搶占,往EEPROM寫入數(shù)據(jù)。你覺得線程A應(yīng)不應(yīng)該放棄I2C總線,讓線程B寫入呢?

答案肯定是不允許的,所以,就有了互斥鎖這么一說。也就是等先占用I2C總線的線程操作完,才釋放總線,讓其他線程進(jìn)行操作。

這三點(diǎn)應(yīng)該是我比較常用了,網(wǎng)上還有其他一些相關(guān)的容錯(cuò)處理機(jī)制,感興趣的不妨搜索一下。

我這里就不貼代碼了,因芯片型號不同,應(yīng)用不同,代碼就存在差異。但我們目的:在保證滿足應(yīng)用的同時(shí),需考慮代碼的移植、復(fù)用、以及容錯(cuò)。


3I2C選擇硬件、軟件?

我們代碼應(yīng)該使用硬件I2C,還是軟件模擬I2C?

這個(gè)問題有許多朋友都在問,說句實(shí)話,遇到這類有爭議的問題,一般來說,需要結(jié)合項(xiàng)目實(shí)際情況,比如速度、實(shí)時(shí)性、移植性等。我遇到這類問題,一般會根據(jù)實(shí)際情況而定。比如:你的I2C產(chǎn)品要提供給一些不同平臺用戶,進(jìn)行二次開發(fā),我覺得軟件IO模擬比較好,方便用戶嘛。假如你們公司開發(fā)的產(chǎn)品都使用STM32這家公司芯片開發(fā)I2C產(chǎ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

    文章

    1031

    瀏覽量

    81824
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1495

    瀏覽量

    124224
  • 驅(qū)動代碼
    +關(guān)注

    關(guān)注

    2

    文章

    14

    瀏覽量

    7641

原文標(biāo)題:EEPROM驅(qū)動代碼常見操作有哪些?

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    EEPROM輕量級的簡易類文件的數(shù)據(jù)讀寫庫:EEPROMFS

    雖然 EEPROM 相對 Flash 讀寫速度更慢,但 EEPROM 一些獨(dú)有特性是 Flash 無法實(shí)現(xiàn)的,比如字節(jié)讀寫操作。 所以,EEPROM
    的頭像 發(fā)表于 11-15 16:31 ?581次閱讀
    <b class='flag-5'>EEPROM</b>輕量級的簡易類文件的數(shù)據(jù)<b class='flag-5'>讀寫</b>庫:EEPROMFS

    TLV320AIC3263 i2c無法進(jìn)行通信,通過i2c讀寫函數(shù),讀寫寄存器失敗怎么解決?

    麻煩幫忙分析下以下問題的原因 1、i2c無法進(jìn)行通信,通過i2c讀寫函數(shù)(系統(tǒng)提供),讀寫寄存器失?。? 寫寄存器,返回-5: 讀寄存器:都是251 2、codec上電,gpio
    發(fā)表于 10-28 07:32

    PCM1863為什么通過I2C無法讀取到寄存器值?

    PCM1863為何通過I2C無法讀取到寄存器值?返回值總是00 但是寫成功,聲音正常。 不知道有沒有遇到同樣的問題的朋友? 請不要懷疑I2C驅(qū)動寫的是否正確。掛在同一總線上的EEPROM讀寫
    發(fā)表于 10-23 07:59

    EEPROM讀寫程序詳解

    EEPROM(Electrically Erasable Programmable Read-Only Memory)讀寫程序的詳解涉及多個(gè)方面,包括EEPROM的基本工作原理、讀寫
    的頭像 發(fā)表于 09-05 12:32 ?2594次閱讀

    使用C2000 I2C模塊連接EEPROM

    電子發(fā)燒友網(wǎng)站提供《使用C2000 I2C模塊連接EEPROM.pdf》資料免費(fèi)下載
    發(fā)表于 08-27 09:53 ?0次下載
    使用<b class='flag-5'>C</b>2000 <b class='flag-5'>I2C</b>模塊連接<b class='flag-5'>EEPROM</b>

    eeprom存儲原理、存儲結(jié)構(gòu)及讀寫操作

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲器)是一種非易失性存儲器,可以在不移除電源的情況下進(jìn)行讀寫
    的頭像 發(fā)表于 08-05 17:03 ?3188次閱讀

    CYUSB3014通過I2C EEPROM啟動時(shí),收到了I2C EEPROM編程失敗的錯(cuò)誤信息怎么解決?

    我使用的是 CYUSB3014。 在通過 I2C EEPROM 啟動時(shí),我收到了 I2C EEPROM 編程失敗的錯(cuò)誤信息 當(dāng)我嘗試使用 RAM 時(shí),編程成功。 PMODE 引腳連接至
    發(fā)表于 07-11 06:12

    請問LED Drivber MAX25014 (I2C Control )是否內(nèi)建EEPROM

    請問LED Drivber MAX25014 (I2C Control )是否內(nèi)建EEPROM, 可預(yù)先儲存一組設(shè)定值, 電源啟動時(shí)會先抓取內(nèi)建EEPROM code設(shè)定.
    發(fā)表于 07-04 07:37

    STM32做IIC讀寫程序,利用HAL庫對IIC讀寫遇到的疑問求解

    HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t
    發(fā)表于 04-24 06:27

    為什么I2C總線會難住這么多人?

    EEPROM?通信了解到的I2C總線,其實(shí),I2C總線遠(yuǎn)不止于?EEPROM?存儲器,它也有類
    的頭像 發(fā)表于 03-28 17:29 ?724次閱讀
    為什么<b class='flag-5'>I</b>2<b class='flag-5'>C</b>總線會難住這么多人?

    STM32F103利用I2C讀寫EEPROM時(shí),利用頁寫入時(shí),讀回的數(shù)據(jù)和寫入的數(shù)據(jù)不一致,為什么?

    在STM32F103芯片中,利用I2C讀寫EEPROM時(shí),單字節(jié)寫入,讀回的數(shù)據(jù)和寫入的一致;但是當(dāng)利用頁寫入時(shí),讀回的數(shù)據(jù)和寫入的數(shù)據(jù)不一致,這是什么原因?qū)е碌模?/div>
    發(fā)表于 03-20 07:01

    利用軟件模擬i2c讀寫EEPROM,超過256個(gè)字節(jié)就讀寫不了了的原因?如何處理?

    利用野火的軟件模擬i2c讀寫EEPROMEEPROM的芯片型號為AT24C512,讀寫256個(gè)
    發(fā)表于 03-20 06:42

    STM32F103利用軟件模擬I2C讀寫EEPROM,超過385個(gè)字節(jié)就讀寫不了的原因?

    在STM32F103的芯片中,利用軟件模擬I2C讀寫EEPROM,在使用頁寫入的方式進(jìn)行讀寫時(shí),能夠讀寫385個(gè)字節(jié),(
    發(fā)表于 03-19 07:45

    stm32f4軟件模擬I2C讀寫EEPROM無器件響應(yīng)是什么原因造成的?

    利用STM32F4軟件模擬I2C讀寫EEPROM時(shí),在檢測I2C總線設(shè)備時(shí),在等待應(yīng)答階段,CPU讀取SDA線口狀態(tài)值為1(GPIO_ReadInputDataBit(GPIOB,GP
    發(fā)表于 03-19 06:36

    AT28C256 EEPROM芯片簡單介紹

    AT28C256是一款由Atmel公司生產(chǎn)的256KB的EEPROM芯片,具有高速讀寫特性,適用于多種應(yīng)用場合,包括數(shù)據(jù)存儲、程序存儲、固件升級等。
    的頭像 發(fā)表于 02-01 17:34 ?2305次閱讀
    主站蜘蛛池模板: 久久精品日本免费线| 亚洲免费在线观看视频| 最近中文字幕MV免费高清在线| 久久机热视频 这里只有精品首页| 18美女腿打开无遮软件| 欧美整片华人play| 国产精品永久免费视频| 亚洲伊人久久大香线蕉综合图片| 免费三级现频在线观看| 国产精品成人久久久久A伋| 一边吃奶一边啪啪真舒服| 青柠在线观看免费高清电视剧荣耀| 国产精品无码久久av| 国产MD视频一区二区三区| 伊人久久网站| 日本美女搞基视频| 护士美女照片| 亚洲伊人久久大香线蕉综合图片| 性刺激欧美三级在线现看中文| 久久久WWW免费人成精品| 精品四虎国产在免费观看| 调教玩弄奶头乳夹开乳震动器| 亚洲精品高清在线| 人与畜禽CROPROATION免费| 精品一区二区免费视频蜜桃网| YELLOW日本动漫高清免费| 亚洲黄色在线| 亚洲免费网站在线观看| 亚洲永久精品ww47| 在线不卡日本v二区到六区| 我与恶魔的h生活ova| 蜜芽最新域名解析网站| 国产中文欧美日韩在线| 嘴巴舔着她的私处插| 中文文字幕文字幕亚洲色| 亚洲精品久久久久中文字幕二区| 亚洲 日韩 欧美 另类 蜜桃| 欧美无码专区| 日韩男明星| 欧美gay老头互吃| 久久re视频这里精品09首页|