18处破外女出血视频在线观看,91免费视视频在线观看,裸裸b喷水网站,国产激情国语对白普通话

新聞詳情

X25043/45 E2 PROM及其與51系列微處理器的接口方法

日期:2025-05-11 01:51
瀏覽次數(shù):1460
摘要:
康為水泥閥
在前面的一編文章里我們介紹了一款以8031單片機(jī)做的配料系統(tǒng),其中用到到了X25043,在網(wǎng)上我查到一編介紹這種芯片的文章,供大家參考,謝謝原作者!
摘要:X25043/45E2PROM芯片的特點(diǎn)及主要功能,描述了其引腳定義、工作原理、操作指令、存儲(chǔ)陣列讀時(shí)序和寫時(shí)序。介紹它與51系列微處理器的幾種接口方法,并給出應(yīng)用電路和相應(yīng)程序。
    關(guān)鍵詞:可編程 寫使能 51系列微處理器接口方法
隨著測(cè)量技術(shù)的發(fā)展和微處理器的廣泛應(yīng)用,系統(tǒng)的電路越來越復(fù)雜,系統(tǒng)的可靠性問題也越來越突出,因此看門狗、工作電壓監(jiān)控和存儲(chǔ)器差不多在每一系統(tǒng)中都被采用。Xicor公司提供的X25043/45 E2PROM芯片,把看門狗定時(shí)器、工作電壓監(jiān)控和E2PROM三種功能組合在一個(gè)封裝內(nèi),并采用三線總線工作的串行外設(shè)接口(SPI)和軟件協(xié)議,降低了系統(tǒng)成本,提高了系統(tǒng)的工作可靠性,非常適合于需現(xiàn)場(chǎng)修改數(shù)據(jù)的場(chǎng)合,可廣泛應(yīng)用于儀器儀表、工業(yè)自動(dòng)控制等領(lǐng)域。但在應(yīng)用中,對(duì)存儲(chǔ)陣列的讀寫、看門狗定時(shí)器的設(shè)置則需通過芯片要求的指令來完成。
1X25043/45的主要特點(diǎn)和引腳定義
X25043/45的主工特點(diǎn)如下:
(1)可編程的看門狗定時(shí)器,通過指令可選擇看門狗定時(shí)時(shí)間;(2)工作電壓監(jiān)測(cè),并產(chǎn)生復(fù)位信號(hào);(3)讀寫時(shí)鐘速率可達(dá)1MHz;(4)518×8位串行E2PROM;(5)數(shù)據(jù)塊鎖定功能和處內(nèi)偶然性的寫保護(hù)功能,保護(hù)存儲(chǔ)數(shù)據(jù);(6)CMOS器件,低功耗;(7)擦寫次數(shù)*少10萬次,*少100年的數(shù)據(jù)保存期。

   
X25043/45的引腳排列如圖1所示,引腳功能說明見表1。

表1 X25043/45的引腳說明
引腳號(hào)引腳名說    明
1CS芯片選擇輸入端
2SO串行數(shù)據(jù)輸出端
3WP寫保護(hù)輸入端
4Vss電源地端
5SI串行數(shù)據(jù)輸入端
6SCK串行時(shí)鐘輸入端
7RES/RES復(fù)位信號(hào)輸出端。X25043輸出低電平,X25045輸出高電平。
8Vcc正電源輸入端
2工作原理及操作指令
X25043/45內(nèi)含一個(gè)8位指令寄存器,傳送指令、數(shù)據(jù)和地址時(shí)按8位串行數(shù)據(jù)格式進(jìn)行,且均以*高有效位在先的方式傳送。其指令見表2。SI線上輸入的數(shù)據(jù)在SCK上升沿被鎖存,芯片內(nèi)的數(shù)據(jù)在SCK下降沿輸出至SO線上。時(shí)鐘SCK允許操作過程中停止并在其后恢復(fù)。

表2 X25043/45指令集(A8為地址的*高位)

指令名指令格式

說    明

 
WREN0000 0110允許寫操作,設(shè)置寫使能鎖存器。
WRDI0000 0100禁止寫操作,復(fù)位寫使能鎖存器。
RDSR0000 0101讀狀態(tài)寄存器。
WRSR0000 0001寫狀態(tài)寄存器。
READ0000 A8011從開始于所選地址(A8)的存儲(chǔ)器陣列中讀數(shù)據(jù)。
WRITE0000 A8010將數(shù)據(jù)寫入開始于所選地址(A8)的存儲(chǔ)器陣列中。

 

在讀存儲(chǔ)陣列時(shí),將CS拉至低電平,發(fā)送SCK時(shí)鐘脈沖,通過SI線發(fā)送含*高位地址A8的READ指令,然后發(fā)送8位地址,選定的存儲(chǔ)單元中的數(shù)據(jù)被送到SO線上。每個(gè)數(shù)據(jù)被送出后,芯片內(nèi)的地址計(jì)數(shù)器自動(dòng)加1,指向下一存儲(chǔ)單元;若繼續(xù)提供SCK脈沖,可讀出下一存儲(chǔ)單元數(shù)據(jù)。當(dāng)?shù)刂酚?jì)數(shù)器達(dá)到$1FFH時(shí),自動(dòng)翻轉(zhuǎn)至$000H單元,直至CS為高電平,終止讀操作。SO線不輸出數(shù)據(jù)時(shí),呈高阻狀態(tài)。其時(shí)序如圖2所示。讀狀態(tài)寄存器時(shí),片選后發(fā)送RDSR指令,狀態(tài)寄存器的內(nèi)容在發(fā)送RDSR指令的第8個(gè)SCK脈沖的下降沿被送出到SO線上。
在寫操作之前,必須置位“寫使能”。在字節(jié)、頁或狀態(tài)寄存器寫周期完成后和上電情況下,“寫使能”自動(dòng)復(fù)位,WP為低電平,“寫使能”可被復(fù)位?!皩懯鼓堋睆?fù)位時(shí),不能對(duì)芯片進(jìn)行寫操作。因此必須置WP為高電平,將片選CS置低電平,向芯片發(fā)出WREN指令,接著再將片選CS置位,以置位“寫使能”。若不將CS置位而繼續(xù)進(jìn)行寫操作,則寫操作無效。*少一個(gè)SCK周期后,重新將CS置低電平以進(jìn)行寫操作。寫存儲(chǔ)陣列時(shí),發(fā)送含*高位地址位A8的WRITE指令后,送8位地址,再送數(shù)據(jù)寫入芯片。在CS一直為低電平的情況下,可以連續(xù)送寫同一頁地址的4個(gè)字節(jié)數(shù)據(jù)。超過4個(gè)字節(jié)數(shù)據(jù),芯片將自動(dòng)從本南的**個(gè)地址重新寫入,因此必須在第24、32、40、48個(gè)SCK周期后,置位CS;寫狀態(tài)字時(shí),發(fā)送WRSR后送更新的狀態(tài)寄存器內(nèi)容。

    X25043/45可提供電源監(jiān)控和編程看門狗定時(shí)器,給系統(tǒng)的時(shí)間內(nèi)沒有訪問X25043/45,即CS為低電平,則X25043/45將產(chǎn)生復(fù)位信號(hào)輸出。芯片通過其供電電源Vcc來實(shí)現(xiàn)電源監(jiān)控。當(dāng)Vcc低于規(guī)定值時(shí),產(chǎn)生復(fù)位信號(hào)輸出,對(duì)于5V工作芯片,其值為4.25~4.5V。當(dāng)Vcc低于4.25~4.5V時(shí),上電后自動(dòng)產(chǎn)生復(fù)位信號(hào),信號(hào)寬度*小可達(dá)100ms。
發(fā)送WREN、WRDI和RDSR指令時(shí),不必發(fā)送地址或數(shù)據(jù)。RDSR、WRSR指令分別用于讀、寫X25043/45內(nèi)的狀態(tài)寄存器。狀態(tài)寄存器的格式如下:
DB7DB6DB5DB4DB3DB2DB1DB0
××WD1WD0BL1BL0WELWIP
注:×是隨意位
WD1、WD0是看門狗定時(shí)位,為非易失性位,其組合表征的時(shí)間見表3。
康為水泥閥
表3 WD1和WD0組合表征的時(shí)間
WD1WD0看門狗定時(shí)典型值
001.4s
01600ms
10200ms
11看門狗功能無效
BL1、BL0是存儲(chǔ)器塊保護(hù)位,為非易失性位,其組合表征的保護(hù)存儲(chǔ)器陣列范圍見表4。選定保護(hù)的塊,用戶只能讀而不能寫。

表4 BL1和BL0組合表征的保護(hù)存儲(chǔ)器范圍
BL1BL0初保護(hù)的陣列地址
00無保護(hù)陣列
01$180H~$1FFH
10$100H~$1FFH
11000H~$1FFH
WEL是“寫使能”鎖存器狀態(tài)位,只讀位。為1,“寫使能”置位;為0,“寫使能”復(fù)位。
WIP是表征芯片寫操作忙位,只讀位。為1,寫操作正在進(jìn)行;為0,無寫操作。

3 X25043/45與5系列微處理器接口
由于51系列微處理器無SPI接口,因此必須通過移位方式來實(shí)現(xiàn)通訊。X25043與51系列微處理器接口時(shí),一般不能通過CPU的P2口進(jìn)行片選,只有在P2口為位控方式工作時(shí)才允許。51系列CPU的P2口工作于地址總線方式時(shí),其輸出是脈沖形式,地址送出后,呈高電平。因此在對(duì)X25045操作時(shí),不能保證片選持續(xù)有效,也就不能對(duì)其進(jìn)行任何操作。為此片選CS只能是位控方式連接,一般與CPU的P1或P3口相連接。
圖3是一款典型接口電路。R1是復(fù)位輸出的上拉電阻,上拉電阻是必需的。微處理器U1為89C52,U2為X25045,提供高電平復(fù)位信號(hào)。從圖3中可以看出,X25045必須用4根線與CPU接口。
在系統(tǒng)接口復(fù)雜時(shí),典型接口方式將浪費(fèi)寶貴的CPU口資源;進(jìn)行口擴(kuò)展時(shí),既增加成本,又減低了可靠性,不能體現(xiàn)X25045的優(yōu)點(diǎn)。在系統(tǒng)設(shè)計(jì)時(shí),設(shè)計(jì)人員往往都力求*精簡(jiǎn)*可靠的*小系統(tǒng)方案,而較復(fù)雜的系統(tǒng)幾乎用滿所有CPU口線。
圖4和圖5兩款電路相對(duì)圖3有一定改進(jìn),經(jīng)濟(jì)實(shí)用,均能可靠地運(yùn)行。圖4所示電路是一種總線接口方式。但對(duì)X25045操作時(shí),P2口不能選擇其它任何器件。若總線其它器件均以低電平選擇有效時(shí),必須選將P2口置高電平,即:MOVP2,#0FH。這款電路在對(duì)X25043/45操作時(shí),系統(tǒng)的中斷操作中不能有數(shù)據(jù)輸入輸出操作。若有數(shù)據(jù)輸入輸出操作,必須先關(guān)中斷,否則將出現(xiàn)邏輯混亂,甚至燒毀CPU和X25043/45。在訪問X25043/45的優(yōu)先級(jí)低于中斷操作的***時(shí),也就是說,在訪問X25045時(shí)系統(tǒng)還必須響應(yīng)中斷。如有URT串口工作時(shí),則不能使用該款電路。

    對(duì)于圖5電路,雖然只減少了一根口線,但巧妙地利用X25043/45的讀操作是在SCK的上升沿、寫操作是在SCK的下降沿、而SO線在無輸出時(shí)呈高阻狀態(tài)這一特性,將SO線和SI短接,把四線接口改為三線接口。筆者多次將圖5的接口方法應(yīng)用于儀器開發(fā),將X25043/45用于口令、校準(zhǔn)參數(shù)等的存儲(chǔ),均取得滿意的效果,系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,并且一直穩(wěn)定工作。由于它帶有電源監(jiān)控、上電復(fù)位和看門狗電路,所以在實(shí)際應(yīng)用中,可大大減少系統(tǒng)的設(shè)計(jì),提高工作可靠性。
以上三款電路的編程方法基本相同。對(duì)于圖5所示的電路,在對(duì)X25045操作前,先要禁止所有中斷,將P2口全部置高電平,才能讀寫X25045。三厭電路讀寫X25045時(shí),程序**的差別是在定義賦值CS、SI、SCK、SO上。對(duì)于圖5,將SI、SO的定義賦值相同。據(jù)圖5接口方式編有如下范圍程序,該程序提供了所有X25045的命令。
源程序:
CS BIT P1.0;P1.0作片選
SI BIT P1.2P1.2作串作輸入
SO BIT P1.2;P1.2作串行輸出
SCK BIT P1.3;P1.3作串行時(shí)鐘
WREN_INST EQU 06H;寫鎖存指令
WRDI_INST EQU 04H;讀鎖存指令
WRST_INST EQU 01H;寫狀態(tài)寄存器指令
RDSR_INST EQU 05H;讀狀態(tài)寄存器指令
WRITE_INST EQU 02H;寫存儲(chǔ)陣列指令
READ_INST EQU 03H;讀存儲(chǔ)陣列指令
BYTE_ADDR EQU 55H;字節(jié)操作方式存儲(chǔ)器地址
BYTE_DATA EQU 0EAH;寫操作數(shù)據(jù)
PAGE_ADDR EQU 1F0H;頁操作方式存儲(chǔ)器地址
PAGE_DATA1 EQU 99H;寫入頁的**個(gè)數(shù)據(jù)字節(jié)
PAGE_DATA2 EQU 0AAH;寫入頁的**個(gè)數(shù)據(jù)字節(jié)
PAGE_DATA3 EQU 0CCH;寫入頁的第三個(gè)數(shù)據(jù)字節(jié)
STATUS_REG EQU 10H;狀態(tài)寄存器
MAX_POLL EQU 99H;寫忙(WIP)查詢*大循環(huán)數(shù)
STACK_TOP EQU 060H;堆棧指針
初始化子程序:
INSTALL:MOVSP,#STACK_TOP
CLR EA
CLR A
SETB CS
CLR SI
SETB SO
CLR SCK
RET
復(fù)位看門狗子程序:
RES_DOG:CLRCS
SETB CS
RET
寫操作忙標(biāo)志查詢子程序:
WIP_POLL:MOVR1,#MAX_POLL
WIP_POLL1:LCALLRS_C
JNBACC.0,WIP_POLL2
DJNZR1,WIP_POLL1
WIP_POLL2:RET
復(fù)位“寫使能”子程序:
WD_C:CLRSCK
CLR CS
MOVA,#WRDI_INST
LCALLOUTBYT
CLR SCK
SETB CS
RET
置位“寫使能”子程序:
WE_C:CLRSCK
CLR CS
MOVA,#WREN_INST
LCALLOUTBYT
CLR SCK
SETB CS
RET
寫狀態(tài)寄存器子程序:
WS_C:CLRSCK
CLR CS
MOVA,#WRSR_INST
LCALLOUTBYT
MOVA,#STATUS_REG
LCALLOUTBYT
CLR SCK
SETB CS
LCALLWIP_POLL
RET康為水泥閥
讀狀態(tài)寄存器子程序:
RS_C: CLRSCK
CLR CS
MOVA,#RDSR_INST
LCALLOUTBYT
LCALLINBYT
CLR SCK
SETB CS
RET
單字節(jié)數(shù)據(jù)寫入子程序:
BYTE_W:MOVDPTR,#BYTE_ADDR
CLR SCK
CLR CS
MOVA,#WRITE_INST
MOVB,DPH
MOVC,B.0
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL
LCALLOUTBYT
MOVA,#BYTE_DATA
LCALLOUTBYT
CLR SCK
SETB CS
LCALLWIP_POLL
RET
單字節(jié)數(shù)據(jù)讀出子程序:
BYTE_R:MOVDPTR,#BYTE_ADDR
CLR SCK
CLR CS
MOVA,#READ_INST
MOVB,DPH
MOVC,B.0
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL
LCALLOUTBYT
LCALLINBYT
MOV R6,A
CLR SCK
SETB CS
RET
連續(xù)3字節(jié)數(shù)據(jù)寫入子程序:
PAGE_W:MOVDPTR,#PAGE_ADDR
CLR SCK
CLR CS
MOVA,#WRITE_INST
MOVB,DPH
MOVC,B.C
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL
LCALLOUTBYT
MOVA,#PAGE_DATA1
LCALLOUTBYT
MOVA,#PAGE_DATA2
LCALLOUTBYT
MOVA,#PAGE_DATA3
LCALLOUTBYT
CLR SCK
SETB CS
LCALLWIP_POLL
RET
連續(xù)2字節(jié)讀取子程序:
SEQU_R:MOVDPTR,#PAGE_ADDR
CLR SCK
CLR CS
MOVA,#READ_INST
MOVB,DPH
MOVC,B.0
MOVACC.3,C
LCALLOUTBYT
MOVA,DPL
LCALLOUTBYT
LCALLINBYT
MOV R2,A
LCALLINBYT
MOV R3,A
LCALLINBYT
MOV R4,A
CLR SCK
SETB CS
RET
字節(jié)讀出子程序:
OUTBYT:MOVR0,#08
OUTBYT1:CLRSCK
RLC A
MOV SI,C
SETB SCK
DJNZR0,OUTBYT1
CLR SI
RET
字節(jié)寫入子程序:
INBYT:MOVR0,#08
INBYT1:SETBSCK
CLR SCK
MOV C,SO
RLC A
DJNZR0,INBYT1
RET 康為水泥閥

突泉县| 三门县| 健康| 郎溪县| 繁昌县| 乌海市| 化隆| 万州区| 砀山县| 洮南市| 萨迦县| 正蓝旗| 蕉岭县| 台东市| 黑龙江省| 海兴县| 宁津县| 商洛市| 杭锦后旗| 桦川县| 安化县| 麻阳| 舒兰市| 石狮市| 尚志市| 兴和县| 凉山| 曲麻莱县| 康定县| 遂平县| 辽源市| 游戏| 丘北县| 滕州市| 呼伦贝尔市| 绍兴县| 温泉县| 常熟市| 潮安县| 台中县| 长岭县|