單片機(jī)EEPROM的理解

EEPROM是“Eleally Eras-able Programmable Read-only”(電可擦寫可編程只讀)的縮寫,EEPROM在正常情況下和EPROM-樣趋急,可以在掉電的情況下保存數(shù)據(jù)帘不,所不同的是逆趣,它在特定引腳上施加特定或使用特定的總線擦寫命令就可以在在線的情況下方便地完成數(shù)據(jù)的擦除和寫入箕母,這個(gè)特點(diǎn)使EEPROM被用于廣闊的消費(fèi)領(lǐng)域苹支,如汽車砾隅、電信、醫(yī)療债蜜、工業(yè)和個(gè)人計(jì)算機(jī)相關(guān)的市場(chǎng)晴埂,主要用于存儲(chǔ)個(gè)人數(shù)據(jù)和配置/調(diào)整數(shù)據(jù)
。EEPROM又分并行EEPROM和串行EEPROM寻定,并行EEPROM器件雖然有很快的讀寫速度儒洛,但要使用很多引腳,電行EEPROM器件功能上和并行EEPROM基本相同狼速,卻可以提供更少的引腳數(shù)琅锻、更小的封裝、更低的電壓和更低的功耗,是現(xiàn)在使用的非易失性存儲(chǔ)器中靈活性最高的類型恼蓬。串行EEPROM按總線分惊完,常用的有I2C、SPI处硬、Microwire總線小槐。本文將介紹這三種總線連接的編程方法∮粲停 
 陽(yáng)總線  I2C總線(Inter Integrated Circuit內(nèi)部總線)是兩線式串行總線本股,僅需要時(shí)鐘和數(shù)據(jù)兩根線就可以進(jìn)行數(shù)據(jù)傳輸,僅需要占用的2個(gè)I/O引腳桐腌,使用時(shí)十分方便拄显。I2C總線還可以在同一總線上掛多個(gè)器件,每個(gè)器件可以有自己的器件地址案站,讀寫操作時(shí)需要先發(fā)送器件地址躬审,該地址的器件得到確認(rèn)后便執(zhí)行相應(yīng)的操作,而在同一總線上的其他器件不做響應(yīng)蟆盐,稱之為器件尋址承边,這個(gè)原理就與我們打電話的原理相當(dāng)∈遥  
I2C總線產(chǎn)生于上世紀(jì)80年代博助,由PHILIPS公司開發(fā),早期多用于音頻和視頻設(shè)備痹愚,如今I2C總線的器件和設(shè)備已多不勝數(shù)富岳。最常見的采用I2C總線的EEPROM也已被廣泛使用于各種家電、工業(yè)及通信設(shè)備中拯腮,主要用于保存設(shè)備所需要的配置數(shù)據(jù)窖式、采集數(shù)據(jù)及程序等,如電視機(jī)中用于保存頻道信息动壤,電腦內(nèi)存條中保存內(nèi)存大小等相關(guān)信息萝喘,汽車?yán)镉糜诒4胬锍绦畔⒌取Ia(chǎn)FC總線EEPROM的廠商很多琼懊,如ATMEL阁簸、Micro公司,它們都是以24來(lái)開頭命名芯片型號(hào)哼丈,最常用的是24C系列启妹。24C系列從24C01到24C512,C后面的數(shù)字代表該型號(hào)的芯片有多少K的存儲(chǔ)位削祈。如ATMEL的24C64翅溺,存儲(chǔ)位是64K位,也就是說(shuō)可以存儲(chǔ)8K(8192)字節(jié)髓抑,它支持1.8V~5V咙崎,可以擦寫1百萬(wàn)次,數(shù)據(jù)可以保持100年吨拍,使用5V電源時(shí)時(shí)鐘可以達(dá)到400k褪猛,并且有多種封裝可供選擇。圖1就是ATMEL24C64芯片的PID封裝和用于內(nèi)存條SPD(Serial Presence Detect)上的24芯片羹饰∫磷蹋  
圖2是ATMEL公司24C64的引腳定義圖。A0~A2用于設(shè)置芯片的器件地址队秩,在同一總線上有多個(gè)器件時(shí)笑旺,可以通過(guò)設(shè)置A0~A2引腳來(lái)確定器件地址。SDA是串行數(shù)據(jù)引腳馍资,用于在芯片讀寫時(shí)輸入或輸出數(shù)據(jù)筒主、地址等,這個(gè)引腳是雙向引腳鸟蟹,它是漏極開路的乌妙,使用時(shí)需要加上一個(gè)〗ㄔ浚  SCL腳是器件的串行同步時(shí)鐘信號(hào)藤韵,如果器件是使用在單片機(jī)系統(tǒng)中,那么SCL腳應(yīng)該由單片機(jī)控制熊经,根據(jù)單片機(jī)的程序要求產(chǎn)生串行同步時(shí)鐘信號(hào)泽艘,控制總線的存取。
WP腳是寫保護(hù)腳奈搜,當(dāng)這個(gè)腳接入高時(shí)悉盆,芯片中的數(shù)據(jù)均處于禁止寫入狀態(tài)(所禁止的地址段要看各芯片的詳細(xì)資料),當(dāng)把WP腳接到地線時(shí)馋吗,芯片處于正常的讀寫狀態(tài)焕盟。
當(dāng)一個(gè)電路正常使用時(shí)是不允許程序修改EEPROM中的數(shù)據(jù)的,除非在維護(hù)設(shè)置時(shí)才可以修改數(shù)據(jù)宏粤。只有在特定的電路狀態(tài)下脚翘,在電路上設(shè)置WP跳線或用微處理器對(duì)WP進(jìn)行控制,才可以更改數(shù)據(jù)绍哎±磁  
要在單片機(jī)系統(tǒng)中用I2C總線的EEPROM作存儲(chǔ)設(shè)備時(shí),先要了解I2C總線的基本驅(qū)動(dòng)方法崇堰。在FC總線空閑時(shí)沃于,SDA和SCL應(yīng)為高電平涩咖,也只有在這個(gè)條件下,微處理器才可以控制總線進(jìn)行傳輸數(shù)據(jù)繁莹。在數(shù)據(jù)傳輸剛開始時(shí)檩互,總線要求有一個(gè)START(開始位)位作為數(shù)據(jù)開始的標(biāo)識(shí),它的要求是咨演,SCL為高電平時(shí)闸昨,SDA有一個(gè)從高到低的電平跳變動(dòng)作,完成這個(gè)動(dòng)作后才可以進(jìn)行數(shù)據(jù)傳輸薄风,時(shí)序圖參看圖3“開始”部分饵较。傳輸數(shù)據(jù)時(shí),只有在SCL為高電平時(shí)遭赂,SDA上的電平為有效數(shù)據(jù)循诉。編寫單片機(jī)向總線送數(shù)據(jù)程序時(shí),測(cè)可以在SCL還在低電平時(shí)撇他,把數(shù)據(jù)電平送到SDA打洼,然后拉高SCL,這時(shí)SDA不應(yīng)有電平跳變逆粹,延時(shí)后拉低SCL募疮,再進(jìn)行下一位的數(shù)據(jù)傳送直到完成。在總線上讀數(shù)據(jù)時(shí)也是只有在SCL為高電平時(shí)僻弹,SDA為有效數(shù)據(jù)阿浓。時(shí)序參看圖3“保持”部分。


傳送數(shù)據(jù)完成后蹋绽,總線要有一個(gè)STOP(結(jié)束位)位芭毙,來(lái)通知總線本次傳輸已結(jié)束,它的要求是卸耘,SCL為高時(shí)退敦,SDA有一個(gè)從低到高的跳變動(dòng)作,正好和START位相反蚣抗。在編程時(shí)要注意:不要在SCL為高電平時(shí)改變SDA的電平狀態(tài)侈百,否則可能會(huì)被誤認(rèn)為是停止位,而使得操作失敗翰铡《塾颍  FC總線每接收完一個(gè)字節(jié)(8個(gè)位)后,在第9個(gè)時(shí)鐘信號(hào)時(shí)锭魔,會(huì)在SDA上回應(yīng)一個(gè)低電平的ACK應(yīng)答信號(hào)例证,以此表明當(dāng)前受控的器件已接收完一個(gè)字節(jié),可以開始下一個(gè)字節(jié)的傳送了迷捧。時(shí)序圖可以參看圖4织咧≌痛校  
編程時(shí)可以在傳送完一個(gè)字節(jié)后,把連接SDA的I/O口線設(shè)置回讀數(shù)據(jù)狀態(tài)笙蒙,如使用51系列的單片機(jī)時(shí)就要把I/O口置高電平巡社,然后在SCL.腳設(shè)置一個(gè)脈沖,在SCL為高電平時(shí)讀取SDA手趣,如不為低電平就說(shuō)明器件狀態(tài)不空閑或出錯(cuò)。需要注意肥荔,因?yàn)镾DA是雙向的I/O绿渣,無(wú)論是接收還是器件接收,每個(gè)字節(jié)完成后燕耿,接收方都可以發(fā)送一個(gè)ACK回應(yīng)給發(fā)送方中符。  I2C總線在操作受控器件時(shí)誉帅,需要先發(fā)送受控器件的器件地址淀散,24景列的EEPROM也不例外,在每次命令前需要先發(fā)送一個(gè)字節(jié)的器件地址和讀寫標(biāo)識(shí)蚜锨,也可稱為器件錄址档插。圖5是24C64的器件尋址命令中每個(gè)位所代表的意思。A2亚再、A1郭膛、A0位是器件地址,它是對(duì)應(yīng)于芯片的A2氛悬、A1则剃、A0引腳,也就是說(shuō)如果芯片A0引腳被設(shè)置成高電平時(shí)如捅,在發(fā)送器件地址命令時(shí)字節(jié)中的A0位要設(shè)置為1棍现,A0引腳為低電平時(shí)A0位設(shè)置為0。這樣在同一總線上就可以連接8個(gè)24C64镜遣〖喊梗  ATMEL公司的24C系列芯片24C32及以上的型號(hào)使用16位地址進(jìn)行尋址。24C32之前的型號(hào)因?yàn)槭褂玫氖?位地址悲关,所以在超過(guò)256字節(jié)的8位地址型號(hào)中會(huì)占用到A0朴肺、A1、A2位來(lái)做頁(yè)地址坚洽,每頁(yè)有256字節(jié)戈稿,以此解決地址位不足的問(wèn)題。所以不同型號(hào)的器件地址位定義就有所不同讶舰,各型號(hào)的器件地址字節(jié)定義見圖5~圖7鞍盗⌒枇耍  在設(shè)計(jì)選擇器件時(shí)要注意的是,24C01是沒(méi)有器件地址的般甲,還有24C16/16A的A0~A2已被頁(yè)地址占用完肋乍,也就是說(shuō)這三個(gè)型號(hào)的芯片只能在同一總線上連接一個(gè)。器件地址字節(jié)中的R/W位是用于標(biāo)識(shí)當(dāng)前操作是讀器件還是寫器件敷存,寫器件時(shí)R/W位設(shè)置0墓造,讀器件時(shí)R/W位設(shè)置1∶常  24C系列芯片的讀寫指令格式只有幾種觅闽,下面以24C64芯片的指令格式來(lái)說(shuō)明′潭恚  寫入單個(gè)字節(jié)  寫入字節(jié)指令每次只能向芯片中的一個(gè)地址寫入一個(gè)字節(jié)的數(shù)據(jù)蛉拙。首先發(fā)送開始位來(lái)通知芯片開始進(jìn)行指令傳輸,然后傳送設(shè)置好的器件地址字節(jié)彻亲,R/W位應(yīng)置0孕锄,接著是分開傳送十六位地址的高低字節(jié),再傳送要寫入的數(shù)據(jù)苞尝,最后發(fā)送停止位表示本次指令結(jié)束畸肆。圖8是寫入單個(gè)字節(jié)的時(shí)序圖≈嬷罚  頁(yè)寫入  24C64支持32字節(jié)的頁(yè)寫入模式恼除,它的操作和字節(jié)寫入模式基本一樣,不同的是它需要發(fā)送第一個(gè)字節(jié)的地址曼氛,然后一次性發(fā)送32字節(jié)的寫入數(shù)據(jù)后豁辉,再發(fā)送停止位。寫入過(guò)程中其余的地址增量由芯片內(nèi)部完成舀患』占叮  圖9為頁(yè)寫入的時(shí)序圖。無(wú)論哪種寫入方式聊浅,指令發(fā)送完成后餐抢,芯片內(nèi)部才開始寫入,這時(shí)SDA會(huì)被芯片拉高低匙,直到寫入完成后SDA才會(huì)重新變得有效旷痕,在編寫微處理器程序時(shí)可以在寫入的時(shí)候不停地發(fā)送偽指令并查詢是否有ACK返回,如果有ACK返回則可以進(jìn)行下一步操作顽冶∑劭梗  讀當(dāng)前地址  這種讀取模式是讀取當(dāng)前芯片內(nèi)部的地址指針指向的數(shù)據(jù)。每次讀寫操作后强重,芯片會(huì)把最后一次操作過(guò)的地址作為當(dāng)前的地址绞呈。在這里要注意的是在微處理器接收完芯片傳送的數(shù)據(jù)后不必發(fā)送低電平的ACK給芯片贸人,直接拉高SDA等待一個(gè)時(shí)鐘后發(fā)送停止位。圖10是讀當(dāng)前地址時(shí)序圖佃声∫罩牵  讀任意地址 “讀當(dāng)前地址”可以說(shuō)是讀的基本指令,讀任意地址時(shí)只是在這個(gè)基本指令之前船一侖“偽操作”圾亏,這個(gè)偽操作傳送一個(gè)寫指令十拣,但這個(gè)寫指令在地址傳送完成后就要結(jié)束,這時(shí)芯片內(nèi)部的地址指針指到這個(gè)地址上志鹃,再用讀當(dāng)前地址指令就可以讀出該地址的數(shù)據(jù)夭问。圖11是讀任意地址的時(shí)序圖∨  連續(xù)讀取  連續(xù)讀取操作時(shí)只要在上面兩種讀取方式中芯片傳送完讀取數(shù)據(jù)后,微處理器回應(yīng)給芯片一個(gè)低電平的ACK.應(yīng)答尝苇,那么芯片地址指針自動(dòng)加1并傳送數(shù)據(jù)铛只,直到微處理器不回應(yīng)并停止操作。圖12是連續(xù)讀取的時(shí)序圖糠溜〈就妫  
ATMEL公司的24C系列的其他型號(hào)的讀寫操作方式和上面介紹的基本相同,只是在8位尋址的芯片中地址位只用一個(gè)字節(jié)非竿,還有就是在24C01中沒(méi)有器件地址蜕着,地址位只占用高7位,最低位為R/W位红柱。其他公司的24系列EEPROM芯片的驅(qū)動(dòng)方式也和以上所介紹的基本一樣承匣。  圖13是筆者設(shè)計(jì)的制作簡(jiǎn)單的24C讀寫器锤悄∪推可以用它來(lái)做24C芯片的驅(qū)動(dòng)程序編寫實(shí)驗(yàn),也可以配合上位機(jī)程序(見本期配刊光盤“EEPROM讀寫器”)進(jìn)行24C的讀寫零聚∨郾  該讀寫器的電路由一片AT89C2051芯片作為主控芯片,用于連接電腦的RS232和驅(qū)動(dòng)24C芯片隶症,使用11.0592M政模。RS232由兩個(gè)三極管組成。部分則直接在RS232上的4蚂会、7引腳取電淋样,取電時(shí)需要在用軟件控制這兩腳為+9V~+12V之間,再通過(guò)VD5穩(wěn)壓得到5.1V胁住,無(wú)需外加電源习蓬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纽什,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子躲叼,更是在濱河造成了極大的恐慌芦缰,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枫慷,死亡現(xiàn)場(chǎng)離奇詭異让蕾,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)或听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門探孝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人誉裆,你說(shuō)我怎么就攤上這事顿颅。” “怎么了足丢?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵粱腻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我斩跌,道長(zhǎng)绍些,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任耀鸦,我火速辦了婚禮柬批,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袖订。我一直安慰自己氮帐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布洛姑。 她就那樣靜靜地躺著揪漩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吏口。 梳的紋絲不亂的頭發(fā)上奄容,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音产徊,去河邊找鬼昂勒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舟铜,可吹牛的內(nèi)容都是我干的戈盈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼塘娶!你這毒婦竟也來(lái)了归斤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刁岸,失蹤者是張志新(化名)和其女友劉穎脏里,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虹曙,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迫横,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酝碳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矾踱。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疏哗,靈堂內(nèi)的尸體忽然破棺而出呛讲,到底是詐尸還是另有隱情,我是刑警寧澤返奉,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布贝搁,位于F島的核電站,受9級(jí)特大地震影響衡瓶,放射性物質(zhì)發(fā)生泄漏徘公。R本人自食惡果不足惜涣澡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一咙咽、第九天 我趴在偏房一處隱蔽的房頂上張望甚淡。 院中可真熱鬧,春花似錦十厢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至奠宜,卻和暖如春包颁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背压真。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工娩嚼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滴肿。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓岳悟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贵少,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 做單片機(jī)開發(fā)時(shí)UART,SPI和I2C都是我們最經(jīng)常使用到的硬件接口滔灶,我收集了相關(guān)的具體材料對(duì)這三種接口進(jìn)行了詳細(xì)...
    梁睿坤閱讀 67,950評(píng)論 7 31
  • 在使用單片機(jī)的過(guò)程中普碎,I2C 通信可以說(shuō)是最被廣泛使用和采納的協(xié)議之一,采用 I2C 協(xié)議可以占用更少的資源宽气,鏈接...
    noparkinghere閱讀 2,156評(píng)論 0 8
  • ???本文主要介紹嵌入式系統(tǒng)的一些基礎(chǔ)知識(shí)随常,希望對(duì)各位有幫助。 嵌入式系統(tǒng)基礎(chǔ) 1萄涯、嵌入式系統(tǒng)的定義 (1)定義:...
    OpenJetson閱讀 3,296評(píng)論 0 13
  • 1绪氛、嵌入式系統(tǒng)的定義 (1)定義:以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ)涝影,軟硬件可裁剪枣察,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性燃逻、成本...
    榮卓然閱讀 1,804評(píng)論 0 5
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,691評(píng)論 1 20