chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

GReq_mcu168 ? 來(lái)源:strongerHuang ? 作者:strongerHuang ? 2022-06-24 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

可以參看我分享的文章:

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

詳述I2C總線時(shí)序

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


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

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

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

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

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

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

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

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

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

在上面一層讀驗(yàn)證基礎(chǔ)上,對(duì)保存一些參數(shù),我一般還會(huì):在參數(shù)末尾添加類似“和校驗(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)的朋友都知道,多線程訪問(wèn)一個(gè)資源,一般都存在互斥的關(guān)系。簡(jiǎn)單的說(shuō):一個(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寫入呢?

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

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

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


3I2C選擇硬件、軟件?

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

這個(gè)問(wèn)題有許多朋友都在問(wèn),說(shuō)句實(shí)話,遇到這類有爭(zhēng)議的問(wèn)題,一般來(lái)說(shuō),需要結(jié)合項(xiàng)目實(shí)際情況,比如速度、實(shí)時(shí)性、移植性等。我遇到這類問(wèn)題,一般會(huì)根據(jù)實(shí)際情況而定。比如:你的I2C產(chǎn)品要提供給一些不同平臺(tái)用戶,進(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1102

    瀏覽量

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

    關(guān)注

    28

    文章

    1543

    瀏覽量

    129746
  • 驅(qū)動(dòng)代碼
    +關(guān)注

    關(guān)注

    2

    文章

    16

    瀏覽量

    7815

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    ?STMicroelectronics M24C64X-DRE 64Kb I2C EEPROM技術(shù)解析與應(yīng)用指南

    STMicroelectronics M24C64X-DRE 64Kb串行I^2^C總線電子擦除可編程只讀存儲(chǔ)器 (EEPROM) 組織為8K x 8位。STMicroelectron
    的頭像 發(fā)表于 10-15 09:37 ?57次閱讀
    ?STMicroelectronics M24<b class='flag-5'>C</b>64X-DRE 64Kb <b class='flag-5'>I</b>2<b class='flag-5'>C</b> <b class='flag-5'>EEPROM</b>技術(shù)解析與應(yīng)用指南

    深入剖析I2C協(xié)議

    ,I2C也是一種可以多主設(shè)備,多從設(shè)備的總線協(xié)議,通過(guò)地址索引,I2C可以使能所需從設(shè)備,I2C的出現(xiàn)主要是用來(lái)實(shí)現(xiàn)不同集成電路組件之間的控制功能,比如通過(guò)I2C協(xié)議,連接MCU與LC
    的頭像 發(fā)表于 08-21 15:10 ?2718次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    串行EEPROM P24C256H產(chǎn)品介紹

    P24C256H是I2C兼容的串行EEPROM(電可擦除可編程存儲(chǔ)器)設(shè)備。它包含一個(gè)256Kbits (32Kbytes)的內(nèi)存陣列,每頁(yè)64bytes。
    的頭像 發(fā)表于 08-08 17:05 ?1517次閱讀
    串行<b class='flag-5'>EEPROM</b> P24<b class='flag-5'>C</b>256H產(chǎn)品介紹

    【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】I2C 讀寫EEPROM (三)

    字節(jié),高7bit是地址,bit0是讀寫控制位,0表示寫,1表示讀 */ I2C_SendByte(EEPROM_DEV_ADDR | I2C_RD); /* 此處是讀指令 */
    發(fā)表于 08-05 22:25

    【沁恒CH585開發(fā)板免費(fèi)試用體驗(yàn)】I2C 讀寫EEPROM (二)

    _GetFlagStatus(I2C_FLAG_BUSY) != RESET); } 主要配置I2C模式、低電平占空比、I2C尋址模式以及通信速率,最后使能I2C設(shè)備。 初始化完成后
    發(fā)表于 08-05 22:13

    關(guān)于cyusb3014燒寫I2C EEPROM的問(wèn)題求解

    你好,我最終要實(shí)現(xiàn)每次上電只從EEPROM引導(dǎo)img,并且能夠識(shí)別到設(shè)備,不過(guò)現(xiàn)在遇到了一些問(wèn)題。在使用cyusb3014芯片通過(guò)I2C燒寫EEPROM(型號(hào)為AT24C
    發(fā)表于 07-16 07:38

    STM32H7CubeMX配置硬件I2C,讀寫失敗是什么問(wèn)題呀?

    STM32H7CubeMX配置硬件I2C,讀寫失敗什么問(wèn)題呀,同樣的操作F4和F1都能正常使用,應(yīng)該不存在i2c地址錯(cuò)誤,操作都是一樣的,但H7就是用不了。I2C_WaitOnFlag
    發(fā)表于 06-12 06:21

    請(qǐng)問(wèn)可以將EEPROM和FPGA連接到FX3 I2C線路上嗎?

    我的客戶使用帶有 UVC 32 位配置的 FX3。 他們希望將 EEPROM 和 FPGA 連接到 I2C 線路。 這有什么問(wèn)題嗎? 因?yàn)?EEPROM 是用來(lái)啟動(dòng)的,所以我想檢查一下是否有問(wèn)題。
    發(fā)表于 05-21 06:33

    Cyusb3014接一塊I2C eeprom的情況下,A0、A1、A2的地址要設(shè)置嗎?

    請(qǐng)問(wèn)一下,Cyusb3014接一塊I2C eeprom的情況下,A0、A1、A2的地址要設(shè)置嗎?我在控制中心以及elf2img中沒(méi)有發(fā)現(xiàn)設(shè)置I2C地址的地方,那應(yīng)該就是說(shuō)bootloader默認(rèn)
    發(fā)表于 05-12 07:19

    I2C EEPROM編程失敗的原因?

    我嘗試使用 Cy Control Center 實(shí)用程序?qū)⒐碳螺d到我的 EVM 中, 第一天,我嘗試了很多次,但都失敗了,比如下面的錯(cuò)誤, I2C EEPROM 編程失敗。 我搜索了英飛凌社區(qū)
    發(fā)表于 05-06 07:25

    【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】I2C讀取EEPROM(二)

    6 I2C讀寫EEPROM 6.1 RA Smart Configurator配置I2C 打開RA Smart Configurator,根據(jù)硬件連接,
    發(fā)表于 04-28 23:14

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的Keil下載算法,這樣在我們下載代碼時(shí)可以一鍵把數(shù)據(jù)燒錄到EEPROM中。
    的頭像 發(fā)表于 04-11 11:06 ?1593次閱讀
    基于APM32F407如何制作<b class='flag-5'>I2C</b> <b class='flag-5'>EEPROM</b>(AT24<b class='flag-5'>C</b>02型號(hào))的MDK-Keil下載算法

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

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

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

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

    PCM1863為什么通過(guò)I2C無(wú)法讀取到寄存器值?

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