新聞詳情

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

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

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

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

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

指令名指令格式

說    明

 
WREN0000 0110允許寫(xie) 操作,設置寫(xie) 使能鎖存器。
WRDI0000 0100禁止寫(xie) 操作,複位寫(xie) 使能鎖存器。
RDSR0000 0101讀狀態寄存器。
WRSR0000 0001寫(xie) 狀態寄存器。
READ0000 A8011從(cong) 開始於(yu) 所選地址(A8)的存儲(chu) 器陣列中讀數據。
WRITE0000 A8010將數據寫(xie) 入開始於(yu) 所選地址(A8)的存儲(chu) 器陣列中。

 

在讀存儲(chu) 陣列時,將CS拉至低電平,發送SCK時鍾脈衝(chong) ,通過SI線發送含*高位地址A8的READ指令,然後發送8位地址,選定的存儲(chu) 單元中的數據被送到SO線上。每個(ge) 數據被送出後,芯片內(nei) 的地址計數器自動加1,指向下一存儲(chu) 單元;若繼續提供SCK脈衝(chong) ,可讀出下一存儲(chu) 單元數據。當地址計數器達到$1FFH時,自動翻轉至$000H單元,直至CS為(wei) 高電平,終止讀操作。SO線不輸出數據時,呈高阻狀態。其時序如圖2所示。讀狀態寄存器時,片選後發送RDSR指令,狀態寄存器的內(nei) 容在發送RDSR指令的第8個(ge) SCK脈衝(chong) 的下降沿被送出到SO線上。
在寫(xie) 操作之前,必須置位“寫(xie) 使能”。在字節、頁或狀態寄存器寫(xie) 周期完成後和上電情況下,“寫(xie) 使能”自動複位,WP為(wei) 低電平,“寫(xie) 使能”可被複位。“寫(xie) 使能”複位時,不能對芯片進行寫(xie) 操作。因此必須置WP為(wei) 高電平,將片選CS置低電平,向芯片發出WREN指令,接著再將片選CS置位,以置位“寫(xie) 使能”。若不將CS置位而繼續進行寫(xie) 操作,則寫(xie) 操作無效。*少一個(ge) SCK周期後,重新將CS置低電平以進行寫(xie) 操作。寫(xie) 存儲(chu) 陣列時,發送含*高位地址位A8的WRITE指令後,送8位地址,再送數據寫(xie) 入芯片。在CS一直為(wei) 低電平的情況下,可以連續送寫(xie) 同一頁地址的4個(ge) 字節數據。超過4個(ge) 字節數據,芯片將自動從(cong) 本南的**個(ge) 地址重新寫(xie) 入,因此必須在第24、32、40、48個(ge) SCK周期後,置位CS;寫(xie) 狀態字時,發送WRSR後送更新的狀態寄存器內(nei) 容。

    X25043/45可提供電源監控和編程看門狗定時器,給係統的時間內(nei) 沒有訪問X25043/45,即CS為(wei) 低電平,則X25043/45將產(chan) 生複位信號輸出。芯片通過其供電電源Vcc來實現電源監控。當Vcc低於(yu) 規定值時,產(chan) 生複位信號輸出,對於(yu) 5V工作芯片,其值為(wei) 4.25~4.5V。當Vcc低於(yu) 4.25~4.5V時,上電後自動產(chan) 生複位信號,信號寬度*小可達100ms。
發送WREN、WRDI和RDSR指令時,不必發送地址或數據。RDSR、WRSR指令分別用於(yu) 讀、寫(xie) X25043/45內(nei) 的狀態寄存器。狀態寄存器的格式如下:
DB7DB6DB5DB4DB3DB2DB1DB0
××WD1WD0BL1BL0WELWIP
注:×是隨意位
WD1、WD0是看門狗定時位,為(wei) 非易失性位,其組合表征的時間見表3。
康為(wei) 水泥閥
表3 WD1和WD0組合表征的時間
WD1WD0看門狗定時典型值
001.4s
01600ms
10200ms
11看門狗功能無效
BL1、BL0是存儲(chu) 器塊保護位,為(wei) 非易失性位,其組合表征的保護存儲(chu) 器陣列範圍見表4。選定保護的塊,用戶隻能讀而不能寫(xie) 。

表4 BL1和BL0組合表征的保護存儲(chu) 器範圍
BL1BL0初保護的陣列地址
00無保護陣列
01$180H~$1FFH
10$100H~$1FFH
11000H~$1FFH
WEL是“寫(xie) 使能”鎖存器狀態位,隻讀位。為(wei) 1,“寫(xie) 使能”置位;為(wei) 0,“寫(xie) 使能”複位。
WIP是表征芯片寫(xie) 操作忙位,隻讀位。為(wei) 1,寫(xie) 操作正在進行;為(wei) 0,無寫(xie) 操作。

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

    對於(yu) 圖5電路,雖然隻減少了一根口線,但巧妙地利用X25043/45的讀操作是在SCK的上升沿、寫(xie) 操作是在SCK的下降沿、而SO線在無輸出時呈高阻狀態這一特性,將SO線和SI短接,把四線接口改為(wei) 三線接口。筆者多次將圖5的接口方法應用於(yu) 儀(yi) 器開發,將X25043/45用於(yu) 口令、校準參數等的存儲(chu) ,均取得滿意的效果,係統結構簡單,並且一直穩定工作。由於(yu) 它帶有電源監控、上電複位和看門狗電路,所以在實際應用中,可大大減少係統的設計,提高工作可靠性。
以上三款電路的編程方法基本相同。對於(yu) 圖5所示的電路,在對X25045操作前,先要禁止所有中斷,將P2口全部置高電平,才能讀寫(xie) X25045。三厭電路讀寫(xie) X25045時,程序**的差別是在定義(yi) 賦值CS、SI、SCK、SO上。對於(yu) 圖5,將SI、SO的定義(yi) 賦值相同。據圖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作串行時鍾
WREN_INST EQU 06H;寫(xie) 鎖存指令
WRDI_INST EQU 04H;讀鎖存指令
WRST_INST EQU 01H;寫(xie) 狀態寄存器指令
RDSR_INST EQU 05H;讀狀態寄存器指令
WRITE_INST EQU 02H;寫(xie) 存儲(chu) 陣列指令
READ_INST EQU 03H;讀存儲(chu) 陣列指令
BYTE_ADDR EQU 55H;字節操作方式存儲(chu) 器地址
BYTE_DATA EQU 0EAH;寫(xie) 操作數據
PAGE_ADDR EQU 1F0H;頁操作方式存儲(chu) 器地址
PAGE_DATA1 EQU 99H;寫(xie) 入頁的**個(ge) 數據字節
PAGE_DATA2 EQU 0AAH;寫(xie) 入頁的**個(ge) 數據字節
PAGE_DATA3 EQU 0CCH;寫(xie) 入頁的第三個(ge) 數據字節
STATUS_REG EQU 10H;狀態寄存器
MAX_POLL EQU 99H;寫(xie) 忙(WIP)查詢*大循環數
STACK_TOP EQU 060H;堆棧指針
初始化子程序:
INSTALL:MOVSP,#STACK_TOP
CLR EA
CLR A
SETB CS
CLR SI
SETB SO
CLR SCK
RET
複位看門狗子程序:
RES_DOG:CLRCS
SETB CS
RET
寫(xie) 操作忙標誌查詢子程序:
WIP_POLL:MOVR1,#MAX_POLL
WIP_POLL1:LCALLRS_C
JNBACC.0,WIP_POLL2
DJNZR1,WIP_POLL1
WIP_POLL2:RET
複位“寫(xie) 使能”子程序:
WD_C:CLRSCK
CLR CS
MOVA,#WRDI_INST
LCALLOUTBYT
CLR SCK
SETB CS
RET
置位“寫(xie) 使能”子程序:
WE_C:CLRSCK
CLR CS
MOVA,#WREN_INST
LCALLOUTBYT
CLR SCK
SETB CS
RET
寫(xie) 狀態寄存器子程序:
WS_C:CLRSCK
CLR CS
MOVA,#WRSR_INST
LCALLOUTBYT
MOVA,#STATUS_REG
LCALLOUTBYT
CLR SCK
SETB CS
LCALLWIP_POLL
RET康為(wei) 水泥閥
讀狀態寄存器子程序:
RS_C: CLRSCK
CLR CS
MOVA,#RDSR_INST
LCALLOUTBYT
LCALLINBYT
CLR SCK
SETB CS
RET
單字節數據寫(xie) 入子程序:
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
單字節數據讀出子程序:
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
連續3字節數據寫(xie) 入子程序:
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
連續2字節讀取子程序:
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
字節讀出子程序:
OUTBYT:MOVR0,#08
OUTBYT1:CLRSCK
RLC A
MOV SI,C
SETB SCK
DJNZR0,OUTBYT1
CLR SI
RET
字節寫(xie) 入子程序:
INBYT:MOVR0,#08
INBYT1:SETBSCK
CLR SCK
MOV C,SO
RLC A
DJNZR0,INBYT1
RET 康為(wei) 水泥閥