那曲檬骨新材料有限公司

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

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

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

關(guān)于1I2C讀寫(xiě)EEPROM基礎(chǔ)原理

strongerHuang ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2022-03-09 17:14 ? 次閱讀

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

今天就來(lái)講講關(guān)于EEPROM的內(nèi)容。

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

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

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

2EEPROM底層驅(qū)動(dòng)

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

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

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

1.寫(xiě),再讀,驗(yàn)證寫(xiě)入成功

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

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

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

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

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

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

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

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

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

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

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

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

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

3I2C選擇硬件、軟件?

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

這個(gè)問(wèn)題有許多朋友都在問(wèn),說(shuō)句實(shí)話(huà),遇到這類(lèi)有爭(zhēng)議的問(wèn)題,一般來(lái)說(shuō),需要結(jié)合項(xiàng)目實(shí)際情況,比如速度、實(shí)時(shí)性、移植性等。

我遇到這類(lèi)問(wèn)題,一般會(huì)根據(jù)實(shí)際情況而定。比如:你的I2C產(chǎn)品要提供給一些不同平臺(tái)用戶(hù),進(jìn)行二次開(kāi)發(fā),我覺(jué)得軟件IO模擬比較好,方便用戶(hù)嘛。

假如你們公司開(kāi)發(fā)的產(chǎn)品都使用STM32這家公司芯片開(kāi)發(fā)I2C產(chǎn)品,我覺(jué)得,你代碼可以使用硬件I2C。

原文標(biāo)題:嵌入式開(kāi)發(fā) | EEPROM驅(qū)動(dòng)代碼常見(jiàn)操作

文章出處:【微信公眾號(hào):strongerHuang】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7139

    瀏覽量

    89578
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5009

    瀏覽量

    88074
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1033

    瀏覽量

    81953
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    i2cEEPROM讀寫(xiě),計(jì)數(shù)

    i2cEEPROM讀寫(xiě),計(jì)數(shù),附程序代碼
    發(fā)表于 11-30 15:01

    讀寫(xiě)EEPROM

    STM32學(xué)習(xí)筆記(9)——(I2C續(xù))讀寫(xiě)EEPROM一、概述1. 背景介紹2. EEPROM簡(jiǎn)介二、AT24
    發(fā)表于 08-23 08:03

    I2C協(xié)議以及I2C讀寫(xiě)EEPROM

    I2C協(xié)議以及I2C讀寫(xiě)EEPROM實(shí)驗(yàn)文章目錄I2C協(xié)議以及I2C
    發(fā)表于 08-23 08:25

    如何通過(guò)i2c連續(xù)讀寫(xiě)eeprom?

    我用verilog自制了一個(gè)i2c模塊,將電路下載到fpga中,在讀寫(xiě)eeprom時(shí)出現(xiàn)問(wèn)題,不能連續(xù)讀寫(xiě),如果單獨(dú)讀寫(xiě)一個(gè)字節(jié),即隨機(jī)
    發(fā)表于 03-29 10:22

    SPI接口讀寫(xiě)串行EEPROM

    SPI接口讀寫(xiě)串行EEPROM:93C46為采用3線(xiàn)串行同步總線(xiàn)SPI接口方式的EEPROM,其芯片引腳名稱(chēng)和功能描述如圖1-1
    發(fā)表于 09-19 11:39 ?89次下載

    EEPROM 按鈕讀寫(xiě)程序 【C語(yǔ)言版】

    EEPROM 按鈕讀寫(xiě)程序 【C語(yǔ)言版】,感興趣的可以下載來(lái)看看。
    發(fā)表于 12-30 13:49 ?0次下載

    EEPROM 按鈕讀寫(xiě)程序 【C與匯編對(duì)照版】

    EEPROM 按鈕讀寫(xiě)程序 【C與匯編對(duì)照版】,多種集合,符合同時(shí)愛(ài)好C語(yǔ)言+匯編的學(xué)習(xí)者的胃口。
    發(fā)表于 12-31 10:28 ?0次下載

    EEPROM基于I~2C總線(xiàn)的一種讀寫(xiě)方法

    EEPROM基于I~2C總線(xiàn)的一種讀寫(xiě)方法
    發(fā)表于 09-21 08:49 ?5次下載
    <b class='flag-5'>EEPROM</b>基于<b class='flag-5'>I</b>~2<b class='flag-5'>C</b>總線(xiàn)的一種<b class='flag-5'>讀寫(xiě)</b>方法

    I2C讀寫(xiě)EEPROM

    【*】程序簡(jiǎn)介 -工程名稱(chēng):基本讀寫(xiě)EEPROM -實(shí)驗(yàn)平臺(tái): 秉火STM32 F429 開(kāi)發(fā)板 -MDK版本:5.16 -ST固件庫(kù)版本:1.5.1 【 !】功能簡(jiǎn)介: 讀寫(xiě)板載的 I2C
    發(fā)表于 12-13 15:12 ?23次下載

    STM8S_010_I2C讀寫(xiě)EEPROM (硬件方式)

    STM8S_010_I2C讀寫(xiě)EEPROM(硬件方式)
    的頭像 發(fā)表于 03-14 14:54 ?4137次閱讀

    STM32F10x _硬件I2C讀寫(xiě)EEPROM(標(biāo)準(zhǔn)外設(shè)庫(kù)版本)

    STM32F10x_硬件I2C讀寫(xiě)EEPROM(標(biāo)準(zhǔn)外設(shè)庫(kù)版本)
    的頭像 發(fā)表于 03-25 11:11 ?1w次閱讀
    STM32F10x _硬件<b class='flag-5'>I2C</b><b class='flag-5'>讀寫(xiě)</b><b class='flag-5'>EEPROM</b>(標(biāo)準(zhǔn)外設(shè)庫(kù)版本)

    STM32F10x_ 模擬I2C讀寫(xiě)EEPROM

    STM32F10x_模擬I2C讀寫(xiě)EEPROM
    的頭像 發(fā)表于 03-25 11:13 ?1w次閱讀
    STM32F10x_ 模擬<b class='flag-5'>I2C</b><b class='flag-5'>讀寫(xiě)</b><b class='flag-5'>EEPROM</b>

    關(guān)于EEPROM讀寫(xiě)與數(shù)碼管顯示實(shí)驗(yàn)

    關(guān)于EEPROM讀寫(xiě)與數(shù)碼管顯示實(shí)驗(yàn)(嵌入式開(kāi)發(fā)平臺(tái)圖片)-關(guān)于EEPROM讀寫(xiě)與數(shù)碼管顯示實(shí)驗(yàn)
    發(fā)表于 08-04 12:00 ?9次下載
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>EEPROM</b><b class='flag-5'>讀寫(xiě)</b>與數(shù)碼管顯示實(shí)驗(yàn)

    STM32學(xué)習(xí)之I2C協(xié)議(讀寫(xiě)EEPROM

    關(guān)于STM32學(xué)習(xí)分享第七章 I2C協(xié)議(讀寫(xiě)EEPROM)文章目錄關(guān)于STM32學(xué)習(xí)分享前言二、代碼1
    發(fā)表于 11-30 15:21 ?32次下載
    STM32學(xué)習(xí)之<b class='flag-5'>I2C</b>協(xié)議(<b class='flag-5'>讀寫(xiě)</b><b class='flag-5'>EEPROM</b>)

    CW32單片機(jī)I2C接口讀寫(xiě)EEPROM芯片介紹

    CW32單片機(jī)I2C接口讀寫(xiě)EEPROM芯片介紹
    的頭像 發(fā)表于 11-09 17:42 ?1154次閱讀
    CW32單片機(jī)<b class='flag-5'>I2C</b>接口<b class='flag-5'>讀寫(xiě)</b><b class='flag-5'>EEPROM</b>芯片介紹
    浩博真人娱乐| 百家乐试玩账户| 嵊州市| bet365存| 威尼斯人娱乐场色| 百家乐庄家必赢诀窍| 乐宝百家乐官网的玩法技巧和规则| 百家乐官网游戏解密| 百家乐园天将| 皇冠百家乐代理网址| 澳门百家乐路单怎么看| 百家乐下注口诀| 澳门百家乐家用保险柜| 百家乐官网怎样玩才会赢钱| 百家乐官网赌术大揭秘| 赌博百家乐官网趋势把握| 至尊百家乐官网facebook| 百家乐官网账号变动原因| 云鼎百家乐官网现金网| 真人娱乐城| 桌上游戏| 威尼斯人娱乐城官方网| 顶级赌场 官方直营网络赌场| 大发888为什么打不开| 广发百家乐的玩法技巧和规则| 百家乐百家乐论坛| 大发百家乐现金| 威尼斯人娱乐场官网h00| 大发888娱乐城 下载| 大发888娱乐场c17| 黄金城百家乐官网手机版| 怎么看百家乐官网走势| 百家乐路单免费下载| 百家乐赌场彩| 威尼斯人娱乐城游戏lm0| 新澳博天上人间娱乐| 百家乐官网庄闲点| 怎么看百家乐官网走势| 闲和庄百家乐的玩法技巧和规则| 大发888开户日博备用| 德州扑克大师|