常用串行EEPROM的編程應(yīng)用(三)_第1頁
常用串行EEPROM的編程應(yīng)用(三)_第2頁
常用串行EEPROM的編程應(yīng)用(三)_第3頁
常用串行EEPROM的編程應(yīng)用(三)_第4頁
常用串行EEPROM的編程應(yīng)用(三)_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第第頁常用串行EEPROM的編程應(yīng)用(三)

SPI總線

SPI總線(SerialPeripheralInterface串行外圍設(shè)備(接口)總線)是三線式的串行總線,是由摩托羅拉公司所研發(fā),使用三線進(jìn)行數(shù)據(jù)傳輸,分別是SCK(時(shí)鐘)引腳,SI數(shù)據(jù)輸入引腳和SO數(shù)據(jù)輸出引腳,另外還有CS片選引腳可以對同一總線上的(芯片)進(jìn)行選通使用,SPI總線已被廣泛使用在EEP(ROM)、(單片機(jī))和各種設(shè)備中。常用串行EEPROM中的25XX系列芯片就是使用兼容SPI總線結(jié)構(gòu),采用先進(jìn)COMS技術(shù),體積小,是一種理想的低功耗非易失性存儲(chǔ)器,廣泛使用在各種家電、通訊、交通或(工業(yè))設(shè)備中,通常是用于保存設(shè)備或個(gè)人的相關(guān)設(shè)置數(shù)據(jù)。(ATMEL)公司生產(chǎn)的25系列的EEPROM存儲(chǔ)容量從1K位到256K位。其它一些芯片也會(huì)用到SPI總線,如常用的(CPU)監(jiān)控芯片X5043、X5045就帶有512字節(jié)的SPI界面EEPROM,常用于單片機(jī)系統(tǒng)的(看門狗)電路,同時(shí)也可以提供小數(shù)據(jù)量的存儲(chǔ),給(電路設(shè)計(jì))帶來很多的方便。此文將用X5045為例講述SPI的(編程)應(yīng)用和X5045的一些其它功能。X5045由(Xicor)公司出品,電壓范圍有2.7V到5.5V和4.5V到5.5V二個(gè)版本,擦寫次數(shù)可達(dá)一百萬次,最高時(shí)鐘頻率可達(dá)3.3MHz。

圖二

圖二是X5045的引腳定義圖。CS/WDI是片選和看門狗復(fù)位輸入,當(dāng)CS為高時(shí)SO引腳變?yōu)楦咦钁B(tài),這時(shí)可以允許其它器件共用SPI總線,同時(shí)芯片也處于休眠狀態(tài),當(dāng)CS為低時(shí)芯片被選中,并從休眠狀態(tài)中喚醒,可以進(jìn)行讀寫操作。SO是串行數(shù)據(jù)輸出,在讀芯片時(shí)數(shù)據(jù)從此腳輸出。WP是寫保護(hù)引腳,當(dāng)WP為低時(shí)芯片寫保護(hù),不能對芯片寫操作,但其它功能不受影響。Vss是(電源)地。SI是串行數(shù)據(jù)輸入,接收來自(控制器)的數(shù)據(jù)和地址。SCK是串行時(shí)鐘輸入,RESET是復(fù)位輸出,Vcc是電源。在25芯片中還有一個(gè)HOLD引腳,此引腳的功能是保持輸入腳,ATMEL公司生產(chǎn)25芯片的HOLD引腳是低電平有效。不用此功能時(shí),HOLD引腳要保持高電平。在芯片正在串行傳輸時(shí),將HOLD拉為低電平,可以暫停進(jìn)一步的傳送,具體方法是SCK變低后,將HOLD也拉低,不然在下一個(gè)SCK變低前不能暫停傳送,要恢復(fù)串行傳送,必須在SCK為低電平時(shí)將HOLD拉高。芯片處于暫停時(shí),SI,SO,SCK腳為高阻狀態(tài),任何時(shí)刻只要HOLD被拉低時(shí),SO都會(huì)處于高阻狀態(tài)。

限于文章的篇幅,下面內(nèi)容只著重介紹X5045芯片的SPI總線對EEPROM單元的編程應(yīng)用。在X5040芯片中有6個(gè)指令,它和25系列芯片的指令是兼容的,也就是說在25系列芯片中使用時(shí)基本上是不需要改變的,具體見表一。

寫入允許和禁止

X5045芯片內(nèi)部有一個(gè)寫入使能(寄存器),在需要向芯片寫入數(shù)據(jù)時(shí),需要先用WREN指令使片內(nèi)寫入使能寄存器先置位,寫入數(shù)據(jù)后可以用WRDI指令使寄存器復(fù)位到禁止?fàn)顟B(tài)。當(dāng)上電、W(RS)R指令執(zhí)行、WRI(TE)指令執(zhí)行、WP拉低也會(huì)使寫入使能寄存器復(fù)位到禁止?fàn)顟B(tài)。圖三是WREN/WRDI指令的操作時(shí)序圖。首先要把CS拉低,輸入數(shù)據(jù),向SCK輸入時(shí)鐘(信號),數(shù)據(jù)在時(shí)鐘的上升沿有效,時(shí)鐘上升后至少數(shù)據(jù)至少保持30ns。數(shù)據(jù)是串行的,所以在每個(gè)時(shí)鐘周期的上升沿發(fā)送一個(gè)位。在操作這兩個(gè)指令時(shí),SO是處于高阻狀態(tài)的。

圖三寫入使能時(shí)序

讀寫狀態(tài)寄存器

X5045片內(nèi)有一個(gè)狀態(tài)寄存器,用于指于芯片的狀態(tài)和設(shè)置,可以讀寫,芯片出廠時(shí)狀態(tài)寄存器值為30H。具體每位的功能請看表2。WIP寫入保護(hù)位,是只讀位,指示芯片是否正忙于寫入操作。當(dāng)WIP為“1”時(shí),說明寫入正在進(jìn)行,為“0”時(shí)表示沒有進(jìn)行寫入。在編程時(shí),寫入數(shù)據(jù)操作后,可以查詢WIP位,當(dāng)WIP為0后才進(jìn)行下一次的寫入操作,這樣可以避免寫入出錯(cuò)。WEL寫入使能狀態(tài)位,是只讀位。WEL位的狀態(tài)由WREN和WRDI指令確定,WREN成功執(zhí)行后WEL為“1”指示允許寫入數(shù)據(jù),WRDI指令成功執(zhí)行后WEL為“0”指示禁止寫入數(shù)據(jù)。在編程時(shí)可以先查詢WEL位的狀態(tài),如為0時(shí)則要執(zhí)行WREN后才可以進(jìn)行寫入操作。BL0、BL1設(shè)置當(dāng)前保護(hù)的區(qū)塊地址,是可讀寫位,這兩個(gè)位的設(shè)置和區(qū)塊地址的關(guān)系如表3,區(qū)塊的內(nèi)容被保護(hù)后,就只能讀出而不能寫入了。25系列芯片中不同型號的芯片容量不一樣,BL設(shè)置所保護(hù)的范圍也不一樣。WD1、WD0看門狗設(shè)置位是X5045/43特有的設(shè)置位,是可以讀寫位,在25系列芯片中這兩個(gè)位是保留位,在X5045中有看門狗功能,這兩個(gè)位就用于設(shè)置(MCU)喂狗的時(shí)間,表4是看門狗位的設(shè)置時(shí)間。狀態(tài)寄存器的第6和第7位是保留位。讀狀態(tài)寄存器時(shí),發(fā)送完R(SD)R指令后,SO由高阻態(tài)轉(zhuǎn)為輸出數(shù)據(jù),從數(shù)據(jù)位的高位開始。寫狀態(tài)寄存器,發(fā)送完WSDR指令后,再發(fā)一個(gè)字節(jié)的狀態(tài)數(shù)據(jù)就可以了,其中只讀位可以是“1”也可以是“0”,它們不會(huì)被WSDR指令所更改。圖5、圖6是讀寫狀態(tài)寄存器的時(shí)序圖。

圖四讀狀態(tài)寄存器時(shí)序

圖五寫狀態(tài)寄存器時(shí)序

讀數(shù)據(jù)

圖六是讀數(shù)據(jù)時(shí)的時(shí)序,先拉低CS選中芯片,先要把需讀取的地址的第9位加到指令字節(jié)的第4個(gè)字節(jié)中,發(fā)送完指令字節(jié)就發(fā)送地址字節(jié)的前8位,這時(shí)SO就會(huì)由高阻態(tài)轉(zhuǎn)為輸出數(shù)據(jù)。每當(dāng)一個(gè)字節(jié)的數(shù)據(jù)傳送完畢后,芯片內(nèi)部的地址指針自動(dòng)加1,指向下一個(gè)數(shù)據(jù)地址,這時(shí)如仍有時(shí)鐘脈沖時(shí),數(shù)據(jù)會(huì)被繼續(xù)輸出,CS腳拉高后輸出才會(huì)終止。當(dāng)最高位地址的數(shù)據(jù)被讀出后,地址指針指向00H。

圖六讀數(shù)據(jù)時(shí)序

寫數(shù)據(jù)

在向芯片寫入數(shù)據(jù)之前,寫使能寄存器必須處于置位狀態(tài),一般可以不必查詢寫使能寄存器的狀態(tài),而直接用WREN置位寫使能寄存器。在發(fā)送完WREN指令后,必須把CS拉高,在CS拉高之前寫使能寄存器并沒有置位,這時(shí)向芯片傳送數(shù)據(jù)是不會(huì)被寫入的。寫使能寄存器置位后,再將CS拉低,把需讀取的地址的第9位加到指令字節(jié)的第4個(gè)字節(jié)中,發(fā)送完指令字節(jié)就發(fā)送地址字節(jié)的前8位,然后發(fā)送需寫入的數(shù)據(jù)。WRITE指令可以連續(xù)寫入16個(gè)字節(jié),但這16個(gè)字節(jié)的地址必須在同一頁中。每一頁的地址由[xxxxx0000]開始,到[xxxxx1111]結(jié)束。操作方法就是在發(fā)送完每一個(gè)地址和數(shù)據(jù)后,繼續(xù)發(fā)后面的數(shù)據(jù),芯片內(nèi)部的地址指針會(huì)自動(dòng)累加,當(dāng)達(dá)到頁中最后一個(gè)字節(jié)時(shí),時(shí)鐘仍在繼續(xù),則內(nèi)部地址指針回到頁中第一個(gè)地址重新開始累加,并覆蓋以前寫入的數(shù)據(jù)。要注意的是,在操作過程中CS不能拉高,只有在數(shù)據(jù)字節(jié)的最后一個(gè)位傳送完成后才可以拉高CS,不然寫入操作將不完全。在寫入數(shù)據(jù)或?qū)憼顟B(tài)寄存器指令寫送后,芯片會(huì)進(jìn)入一次非易失性寫操作,這會(huì)花費(fèi)一定的時(shí)間,最大約為10ms,在這個(gè)時(shí)間內(nèi)可以用讀狀態(tài)寄存器,并檢查WIP位,當(dāng)WIP為1時(shí)則說明寫入還在進(jìn)行中,只有當(dāng)WIP位為0時(shí)才可以進(jìn)行下一次的讀寫數(shù)據(jù)操作,否則將會(huì)使寫入不完全。

圖七寫數(shù)據(jù)時(shí)序

下面我們用AT89C2051和X5045為主做一個(gè)密碼控制器實(shí)驗(yàn)。使用X5045的看門狗功能可以使電路在受到干擾或特殊情況死機(jī)后,可以自動(dòng)復(fù)位重啟電路,使電路保持正常工作。使用X5045的數(shù)據(jù)讀寫功能,可以保存密碼,也可以修改密碼。本文附帶的實(shí)例程序演示X5045的狀態(tài)寄存器的讀寫、存儲(chǔ)位的讀寫,里面的功能函數(shù)可以直接移植到別的程序中。電路上電后,紅色(LED)亮,當(dāng)按下按鍵時(shí)綠色LED閃亮一下,當(dāng)按下“3,1,5,8,1,8”,密碼正確,紅色LED滅,綠色LED亮,繼電器打開,10秒后回到上電時(shí)的狀態(tài)。當(dāng)按下第一次按鍵后20秒內(nèi)沒有按下正確的鍵值,則會(huì)進(jìn)行下一次鍵值輸入。程序可以方便修改成可以方便更改密碼的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論