99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

怎樣用Arduino讀取和寫入外部EEPROM的數(shù)據(jù)

454398 ? 來(lái)源:工程師吳畏 ? 2019-07-30 11:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

您需要的東西

EEPROM - 24LC512

ATmega328P-PU

16 MHz Crystal

面包板

電阻器4.7k Ohmx 2

電容器22 pFx 2

故事

EEPROM 代表 E lectrically E rasable P 可編程 R ead- O nly M emory。

EEPROM非常重要且有用,因?yàn)樗且环N非易失性的內(nèi)存形式。這意味著即使電路板斷電,EEPROM芯片仍然保留寫入的程序。因此,當(dāng)您關(guān)閉電路板然后重新打開電源時(shí),可以運(yùn)行寫入EEPROM的程序。所以基本上,無(wú)論如何,EEPROM都存儲(chǔ)并運(yùn)行程序。這意味著您可以關(guān)閉設(shè)備,將其關(guān)閉3天,然后返回并打開設(shè)備,它仍然可以運(yùn)行其中編程的程序。這就是大多數(shù)消費(fèi)電子設(shè)備的工作方式。

該項(xiàng)目由LCSC贊助。我一直在使用LCSC.com的電子元件。 LCSC致力于以最優(yōu)惠的價(jià)格提供各種真正的高品質(zhì)電子元件,并通過(guò)遍布200多個(gè)國(guó)家的全球運(yùn)輸網(wǎng)絡(luò)。

EEPROM也非常高效傳統(tǒng)EEPROM中的各個(gè)字節(jié)可以獨(dú)立讀取,擦除和重寫。在大多數(shù)其他類型的非易失性存儲(chǔ)器中,這是不可能做到的。

Microchip 24系列EEPROM這樣的串行EEPROM器件允許您為任何可以說(shuō)I2C的器件添加更多存儲(chǔ)器。

EEPROM基礎(chǔ)知識(shí)

Microchip 24LC2512芯片可以采用8引腳DIP封裝。 24LC512上的引腳非常直接,包括電源(8),GND(4),寫保護(hù)(7),SCL/SDA(6,5)和三個(gè)地址引腳(1,2,3)。

ROM的簡(jiǎn)史

早期的“存儲(chǔ)程序”類型的計(jì)算機(jī) - 例如桌面計(jì)算器和鍵盤解釋器 - 開始以二極管矩陣ROM的形式使用ROM。這是一個(gè)由分散的半導(dǎo)體二極管組成的存儲(chǔ)器,放置在特殊組織的PCB上。隨著集成電路的出現(xiàn),這讓位于Mask ROM。掩模ROM很像二極管矩陣ROM,只是它的實(shí)現(xiàn)規(guī)模要小得多。然而,這意味著你不能只用烙鐵移動(dòng)幾個(gè)二極管并重新編程。掩模ROM必須由制造商編程,此后不可更改。

不幸的是,Mask ROM價(jià)格昂貴并且需要很長(zhǎng)時(shí)間才能生產(chǎn),因?yàn)槊總€(gè)新程序都需要一個(gè)由鑄造廠生產(chǎn)的全新設(shè)備。然而,在1956年,這個(gè)問(wèn)題通過(guò)PROM(可編程ROM)的發(fā)明得以解決,PROM允許開發(fā)人員自己編寫芯片。這意味著制造商可以生產(chǎn)數(shù)百萬(wàn)個(gè)相同的未編程設(shè)備,使其更便宜,更實(shí)用。但是,PROM只能使用高壓編程設(shè)備寫入一次。在編程PROM器件之后,無(wú)法將器件恢復(fù)到未編程狀態(tài)。

1971年隨著EPROM(可擦除可編程ROM)的發(fā)明而改變了 - 除了在首字母縮寫詞中添加另一個(gè)字母 - 帶有擦除設(shè)備的能力,并使用強(qiáng)大的紫外光源將其恢復(fù)到“空白”狀態(tài)。那是對(duì)的,你必須在IC上發(fā)出明亮的光線才能重新編程,這有多酷?好吧,事實(shí)證明它非??幔悄闶且粋€(gè)開發(fā)固件的開發(fā)人員,在這種情況下,你真的希望能夠使用電子信號(hào)重新編程設(shè)備。隨著EEPROM(電可擦除可編程ROM)的發(fā)展,這終于在1983年成為現(xiàn)實(shí),我們到達(dá)了當(dāng)今笨拙的首字母縮略詞。

EEPROM的怪癖

EEPROM作為一種方法存在兩個(gè)主要缺點(diǎn)數(shù)據(jù)存儲(chǔ)。在大多數(shù)應(yīng)用中,優(yōu)點(diǎn)超過(guò)了缺點(diǎn),但在將EEPROM納入下一個(gè)設(shè)計(jì)之前,您應(yīng)該了解它們。

首先,使EEPROM工作的技術(shù)也限制了它的可用次數(shù)被重寫。這與電子被困在構(gòu)成ROM的晶體管中并累積直到“1”和“0”之間的電荷差異無(wú)法識(shí)別有關(guān)。但不用擔(dān)心,大多數(shù)EEPROM的最大重寫次數(shù)為100萬(wàn)或更多。只要你沒(méi)有連續(xù)寫入EEPROM,你就不可能達(dá)到這個(gè)最大值。

其次,如果你從中斷電源,EEPROM將不會(huì)被刪除,但它不能保留在你的數(shù)據(jù)無(wú)限期。電子可以漂移出晶體管并通過(guò)絕緣體,隨著時(shí)間的推移有效地擦除EEPROM。也就是說(shuō),這通常會(huì)在幾年內(nèi)發(fā)生(雖然它可以通過(guò)加熱加速)。大多數(shù)制造商表示,在室溫下,您的數(shù)據(jù)在EEPROM上安全10年或更長(zhǎng)時(shí)間。

在為項(xiàng)目選擇EEPROM器件時(shí),還應(yīng)記住一件事。 EEPROM容量以位而不是字節(jié)來(lái)度量。 512K EEPROM將保存512K位數(shù)據(jù),換句話說(shuō),只有64KB。

Arduino硬件連接

好了,現(xiàn)在我們知道了什么是EEPROM,讓我們掛起來(lái)看看它能做些什么!為了讓我們的設(shè)備說(shuō)話,我們需要連接電源和I2C串行線。該器件特別在5VDC下運(yùn)行,因此我們將它連接到Arduino UNO的5V輸出。此外,I2C線路需要上拉電阻才能正常通信。這些電阻的值取決于線路的電容和您想要通信的頻率,但非關(guān)鍵應(yīng)用的一個(gè)好的經(jīng)驗(yàn)法則就是將其保持在kΩ范圍內(nèi)。在本例中,我們將使用4.7kΩ上拉電阻。

此器件上有三個(gè)引腳用于選擇I2C地址,這樣就可以在總線上有多個(gè)EEPROM,并以不同的方式對(duì)它們進(jìn)行尋址。您可以將它們?nèi)拷拥兀覀儗?duì)它們進(jìn)行布線,以便我們可以在本教程的后面部分使用更高容量的設(shè)備。

我們將使用面包板將所有內(nèi)容連接在一起。下圖顯示了大多數(shù)I2CEEPROM器件的正確連接,包括我們銷售的Microchip 24系列EEPROM。

閱讀和寫作

大多數(shù)情況下,當(dāng)您將EEPROM與微控制器結(jié)合使用時(shí),您實(shí)際上不需要同時(shí)查看存儲(chǔ)器的所有內(nèi)容。您只需根據(jù)需要在此處讀取和寫入字節(jié)。但是,在這個(gè)例子中,我們要將整個(gè)文件寫入EEPROM,然后將其全部讀回,以便我們可以在計(jì)算機(jī)上查看。這應(yīng)該讓我們對(duì)使用EEPROM的想法感到滿意,并讓我們感覺(jué)有多少數(shù)據(jù)可以真正適合小型設(shè)備。

寫點(diǎn)東西

我們的示例草圖將簡(jiǎn)單地取出任何字節(jié)串行端口并將其寫入EEPROM,跟蹤我們寫入內(nèi)存的字節(jié)數(shù)。

將一個(gè)字節(jié)的內(nèi)存寫入EEPROM通常分三步進(jìn)行:

發(fā)送要寫入的內(nèi)存地址的最高有效字節(jié)。

發(fā)送要寫入的內(nèi)存地址的最低有效字節(jié)。

發(fā)送您想要存儲(chǔ)在此位置的數(shù)據(jù)字節(jié)。

可能有一些關(guān)鍵詞可以解釋:

記憶地址

如果你想象512 Kbit EEPROM中的所有字節(jié)從0開始排成一行到64000 - 因?yàn)橐粋€(gè)字節(jié)有8位,因此你可以在512 Kbit EEPROM上安裝64000字節(jié) - 然后一個(gè)存儲(chǔ)器地址就是你找到一個(gè)特定字節(jié)的位置。我們需要將該地址發(fā)送到EEPROM,以便它知道放置我們發(fā)送的字節(jié)的位置。

最重要和最不重要的字節(jié)

因?yàn)?56 Kbit EEPROM中有32000個(gè)可能的位置 - 并且因?yàn)?55是可以在一個(gè)字節(jié)中編碼的最大數(shù)字 - 我們需要以兩個(gè)字節(jié)發(fā)送該地址。首先,我們發(fā)送最高有效字節(jié)(MSB) - 在這種情況下的前8位。然后我們發(fā)送最低有效字節(jié)(LSB) - 第二個(gè)8位。為什么?因?yàn)檫@是設(shè)備期望接收它們的方式,所以就是這樣。

頁(yè)面寫作

一次寫一個(gè)字節(jié)很好,但是大多數(shù)EEPROM設(shè)備都有一個(gè)叫做“頁(yè)面寫緩沖區(qū)”的東西,可以讓你寫多個(gè)每次字節(jié)的方式與單個(gè)字節(jié)的方式相同。我們將在示例草圖中利用這一點(diǎn)。

EEPROM使用內(nèi)部計(jì)數(shù)器,它會(huì)在接收到的每個(gè)后續(xù)數(shù)據(jù)字節(jié)時(shí)自動(dòng)增加內(nèi)存位置。一旦發(fā)送了內(nèi)存地址,我們就可以使用最多64個(gè)字節(jié)的數(shù)據(jù)。 EEPROM(正確地)假定地址312后跟10個(gè)字節(jié)將在地址312處記錄字節(jié)0,在地址313處記錄字節(jié)1,在地址314處記錄字節(jié)2,依此類推。

讀取東西

從EEPROM讀取基本上遵循與寫入EEPROM相同的三步過(guò)程:

發(fā)送要寫入的存儲(chǔ)器地址的最高有效字節(jié)。

發(fā)送要寫入的內(nèi)存地址的最低有效字節(jié)。

詢問(wèn)該位置的數(shù)據(jù)字節(jié)。

聲明:本文內(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

    文章

    1086

    瀏覽量

    83767
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    FLASH模擬EEPROM

    : EERPOM 結(jié)構(gòu) EEPROM 由兩個(gè)頁(yè)組成:頁(yè) 0 和頁(yè) 1,在使用的時(shí)候,1 個(gè)頁(yè)處于有效狀態(tài),另外一個(gè)頁(yè)處于擦除狀態(tài),讀取或者寫入數(shù)據(jù)都在有效狀態(tài)的頁(yè)進(jìn)行。
    發(fā)表于 07-16 15:13

    STVD使用STM8S005K6T6C內(nèi)部data eeprom進(jìn)行數(shù)據(jù)寫入操作問(wèn)題求解

    1.STVD使用STM8S005K6T6C內(nèi)部data eeprom進(jìn)行數(shù)據(jù)寫入操作,使用st-link V2(B2013 21)進(jìn)行仿真調(diào)試,發(fā)現(xiàn)寄存器FLASH_CR2寫入1是值仍
    發(fā)表于 06-23 06:29

    如何從CYUSB3014-BZXCT讀取/寫入EEPROM固件?

    第一個(gè)芯片讀取數(shù)據(jù),然后通過(guò) USB 將相同的數(shù)據(jù)寫入第二個(gè)芯片。 我是這個(gè)領(lǐng)域的新手。 你能告訴我怎樣做嗎? 據(jù)我所知,我需要CYPRES
    發(fā)表于 05-07 06:46

    nt3h211通過(guò)I2C向EEPROM寫入數(shù)據(jù),但NFC工具無(wú)法讀取寫入數(shù)據(jù),為什么?

    我通過(guò) I2C 為 NT3H211 芯片編寫了一個(gè) Linux 驅(qū)動(dòng)程序。我使用 I2C 寫入作將數(shù)據(jù)寫入塊地址 01h,并通過(guò) I2C 讀取確認(rèn)數(shù)
    發(fā)表于 03-26 06:50

    DLP3010如何將edid寫入eeprom中?

    參考DLPDLCR3010EVM_G2的設(shè)計(jì),經(jīng)過(guò)測(cè)試發(fā)現(xiàn)無(wú)法將edid寫入空白的eeprom中,請(qǐng)問(wèn)這個(gè)是自動(dòng)寫入edid到eepron中,還是需要預(yù)先寫入edid至
    發(fā)表于 02-19 08:01

    EEPROM編程常見錯(cuò)誤及解決方案

    、電流過(guò)大或寫入時(shí)序不正確等原因而損壞或不完整。 數(shù)據(jù)讀取錯(cuò)誤 : 讀取EEPROM時(shí),可能會(huì)因?yàn)樾酒瑪嗦?、短路或?nèi)部擊穿等問(wèn)題導(dǎo)致
    的頭像 發(fā)表于 12-16 17:08 ?4692次閱讀

    EEPROM存儲(chǔ)器的工作原理 EEPROM與FLASH存儲(chǔ)器的比較

    EEPROM存儲(chǔ)器的工作原理 基本結(jié)構(gòu) : EEPROM由浮柵晶體管構(gòu)成,每個(gè)浮柵晶體管可以存儲(chǔ)一個(gè)比特的數(shù)據(jù)。浮柵是一個(gè)隔離的導(dǎo)電區(qū)域,可以捕獲和保持電子,從而改變晶體管的閾值電壓。 寫入
    的頭像 發(fā)表于 12-16 16:35 ?2026次閱讀

    ADS131A02讀出的數(shù)據(jù)不對(duì)是怎么回事?

    我的SCLK是4M,fmod = SCLK/2, fdata = fmod /32, 那我應(yīng)該怎樣用SCLK 讀取數(shù)據(jù)呢?我使用的是同步從模式。現(xiàn)在我的CS,sync連在一起,配置完寄存器后一直為低電平,讀出的
    發(fā)表于 12-03 08:14

    PGA309使用中不加寫保護(hù)會(huì)出現(xiàn)不讀取EEPROM校準(zhǔn)數(shù)據(jù)現(xiàn)象?

    請(qǐng)教一下,看參考電路里面對(duì)于EEPROM都沒(méi)提寫保護(hù)的問(wèn)題,為何我在使用中不加寫保護(hù)會(huì)出現(xiàn)不讀取EEPROM校準(zhǔn)數(shù)據(jù)現(xiàn)象?輸出2mA,在校準(zhǔn)界面
    發(fā)表于 09-13 07:23

    EEPROM故障的原因和影響

    存儲(chǔ)的數(shù)據(jù)。它廣泛應(yīng)用于各種電子設(shè)備中,用于存儲(chǔ)重要的配置信息、程序代碼或用戶數(shù)據(jù)。當(dāng)EEPROM無(wú)法正常工作,即無(wú)法正確讀取、寫入或保持存
    的頭像 發(fā)表于 09-05 10:56 ?8066次閱讀

    如何向EEPROM寫入數(shù)字

    EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)寫入數(shù)字是一個(gè)相對(duì)直接的過(guò)程,但涉及到多個(gè)步驟和細(xì)節(jié)。以下是一個(gè)詳細(xì)的步驟說(shuō)明,旨在幫助您理解并成功向
    的頭像 發(fā)表于 09-05 10:56 ?2136次閱讀

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?

    怎樣用THS3201實(shí)現(xiàn)輸出功率可調(diào)?
    發(fā)表于 08-26 08:28

    PGA309EVM-USB寫入EEPROM后再讀取都是0,為什么?

    使用PGA309EVM-USB評(píng)估板及其配套軟件模擬校正測(cè)試后,按 continue 寫入EEPROM后,可以打開cal results 文件,里面的EEPROM都有數(shù)據(jù),但是去軟件
    發(fā)表于 08-15 06:42

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環(huán)境溫濕度數(shù)據(jù)及 OLED顯示
    的頭像 發(fā)表于 08-13 18:04 ?2075次閱讀
    <b class='flag-5'>Arduino</b> Nano 和 NodeMCU ESP8266 <b class='flag-5'>讀取</b> DHT11 環(huán)境溫濕度<b class='flag-5'>數(shù)據(jù)</b>及 OLED顯示

    怎樣用Arduino測(cè)試鋰電池容量

    本文詳細(xì)介紹了如何用Arduino測(cè)量鋰電池的容量。并附有電路圖和Arduino的程序代碼。
    的頭像 發(fā)表于 07-30 09:14 ?1672次閱讀
    <b class='flag-5'>怎樣用</b><b class='flag-5'>Arduino</b>測(cè)試鋰電池容量