X25165芯片在8051系統(tǒng)中的應(yīng)用
美國(guó)Xicor公司生產(chǎn)的Z25165芯片是集看門狗、電壓監(jiān)控和串行EEPROM三項(xiàng)功能于一體的集成電路產(chǎn)品。該芯片的應(yīng)用將有利于簡(jiǎn)化單片機(jī)系統(tǒng)的結(jié)構(gòu),降低系統(tǒng)的成本,減少對(duì)電路板的空間需求,增加系統(tǒng)的可靠性。
1 芯片簡(jiǎn)介
X25165的引腳排列如圖1所示,各引腳功能說(shuō)明如表1所列。
X25165使用簡(jiǎn)單的三線總線串行外設(shè)接口(SPI),對(duì)芯片進(jìn)行操作的所有操作碼、字節(jié)地址及寫入的數(shù)據(jù)均從SI引腳輸入,寫入數(shù)據(jù)在串行時(shí)鐘(SCK)的上升沿被鎖存,從芯片讀取的數(shù)據(jù)從SO引腳串行移出,并在串行時(shí)鐘的下降沿輸出數(shù)據(jù)。
芯片的看門狗定時(shí)器和Vcc電壓監(jiān)視器都對(duì)微處理器提供獨(dú)立的保護(hù),當(dāng)系統(tǒng)發(fā)生故障時(shí),只要看門狗定時(shí)器達(dá)到其可編程的超時(shí)極限,RESET引腳立即自動(dòng)產(chǎn)生一個(gè)持續(xù)200ms的高電平復(fù)位信號(hào)。當(dāng)電源電壓Vcc降到4.5V以下時(shí),RESET引腳立即自動(dòng)產(chǎn)生主電平復(fù)位信號(hào),并一直保護(hù)到電源電壓恢復(fù)正常。在系統(tǒng)電源上電或掉電時(shí),RESET引腳也立即自動(dòng)產(chǎn)生一個(gè)高電平復(fù)位信號(hào)。這樣,就能有效地防止系統(tǒng)死機(jī)、數(shù)據(jù)誤寫及誤操作等故障現(xiàn)象的發(fā)生。
X25165芯片內(nèi)部有2k×8位的串行EEPROM,每個(gè)字節(jié)可以擦寫10萬(wàn)次以上,內(nèi)部數(shù)據(jù)可以保存100年以上。應(yīng)用時(shí),可以通過(guò)編程對(duì)指定的塊進(jìn)行鎖定,以防止由于誤操作等原因破壞保存的數(shù)據(jù)。
2 工作原理
2.1 指令
X25165共有七條指令(見(jiàn)表2),對(duì)芯片的所有操作都需要通過(guò)對(duì)指令寄存器寫命令來(lái)完成,所有的指令、地址、數(shù)據(jù)均以高位在前的方式(MSB)串行傳送。
2.2 狀態(tài)寄存器
X25165內(nèi)有一個(gè)八位狀態(tài)寄存器,在任何時(shí)候都可以通過(guò)RDSR指令來(lái)讀取狀態(tài)寄存器的內(nèi)容,也可以通過(guò)WREN,SFLB,WRSR等指令來(lái)設(shè)置狀態(tài)寄存器中的某些位。狀態(tài)寄存器的格式如下:
FLB:只讀位,指示一個(gè)易失位的狀態(tài),可用SFLB和RFLB指令進(jìn)行置位和清零,上電時(shí)該位自動(dòng)清零;
WPEN:為非易失位,可用WRSR指令進(jìn)行編程,該位和WP引腳配合使用能以編程方式實(shí)現(xiàn)對(duì)硬件的寫保護(hù)(見(jiàn)表5)。當(dāng)WP引腳為低電平且WPEN位被置位時(shí),所有狀態(tài)寄存器的寫操作被禁止。
3 芯片應(yīng)用
3.1 硬件接口電路
在一個(gè)8051單片機(jī)系統(tǒng)中可按照?qǐng)D2的連接方式使用該芯片。
3.2 軟件接口設(shè)計(jì)
根據(jù)圖2的連接方式,筆者編寫了七個(gè)實(shí)用的應(yīng)用接口程序,供大家參考。
a.串行輸出了程序
將累加器A中的數(shù)據(jù)按照高位在前的順序(MSB)串行輸出至X25165芯片中。
WD-OUTB:MOV R7,#08H;有8位數(shù)據(jù)要傳輸
WD-OUTB1:CLR P1.2;使SCK為低電平
RLC A ;將輸出位移入C
MOV P1.1,C;進(jìn)位位移入SI
SEIB P1.2;使SCK位為高電平
DJNZ R7,WD-OUTB1;判斷循環(huán)是否結(jié)束
CLR P1.1;清SI
RET
b.串行輸入子程序
將1字節(jié)的數(shù)據(jù)按照高位在前的順序(MSB)從X25165中串行讀入累加器A中。
WD-INB:MOV R7,#08H;有8位數(shù)據(jù)要接收
WD-INB1:SETB P1.2;產(chǎn)生SCK脈沖
CLR P1.2 ;
MOV C, P1.0 ;S0移入進(jìn)位位C
RLC A ;累加器A帶進(jìn)位位去移
DJNZ R7, WD-INB1;判斷循環(huán)是否結(jié)束
RET
c.讀狀態(tài)寄存器子程序
用于從X25165中讀狀態(tài)寄存器內(nèi)容,讀出的內(nèi)容存放在A中。
WD-RD-SR:CLR P1.2 ;使SCK為低電平
CLR P1.3 ;芯片選擇CS有效
MOV A,#05H ;RDSR指令送累加器A
LCALL WD-OUTB ;輸出RDSR指令
LCALL WD-INB ;讀取狀態(tài)寄存器內(nèi)容
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;芯片選擇CS無(wú)效
RET
d.寫狀態(tài)寄存子程序
該子程序可以設(shè)置塊保護(hù)地址范圍和可編程看門狗定時(shí)器超時(shí)周期。子程序中需要先使片選信號(hào)有效,然后用WREN指令設(shè)置寫使能鎖存器,8位指令輸出后必須將片選信號(hào)拉高,這樣才能使命令生效。同樣,數(shù)據(jù)輸出完成后也必須將片選信號(hào)拉高。
WD-WR-SR:CLR P1.2 ;使SCK為低電平
CLR P1.3 ;芯片選擇CS有效
MOV A, #06H ;WREN指令送累加器A
LCALL WD-OUTB ;輸出WREN指令
SETB P1.3 ;使CS為高電平
CLR P1.3 ;芯片選擇CS有效
MOV A,#01H ;WRSR指令送累加器A
LCALL WD-OUTB ;輸出WRSR指令,置狀態(tài)寄存器
MOV A,#10H;無(wú)塊保護(hù),超時(shí)周期;800ms
LCALL WD-OUTB ;輸出狀態(tài)寄存器內(nèi)容
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;使CS為高電平
RET ;
e.讀存儲(chǔ)單元內(nèi)容子程序
從X25165的串行EEPROM中讀指定單元內(nèi)容,需要先發(fā)送READ指令和16位地址,指定地址單元的數(shù)據(jù)在SCK脈沖的作用下就會(huì)從S0引腳依次移出。
WD-RD-DATA:CLR P1.2 ;使SCK為低電平
CLR P1.3 ;芯片選擇CS有效
MOC A,#03H ;READ指令送累加器A
LCALL WD-OUTB;輸出READ指令
MOV A,DPH;高位地址送累加器A
LCALL WD-OUTB ;輸出高位地址
MOV A,DPL ;低位地址送累加器A
LCALL WD-OUTB ;輸出低位地址
LCALL WD-INB ;讀取(DPTR)單元的數(shù)據(jù)
MOV R4,A ;數(shù)據(jù)送R4
LCALL WD-INB ;讀取(DPTP+1)單元的數(shù)據(jù)
MOV R5,A ;數(shù)據(jù)送R5
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;芯片選擇CS無(wú)效
RET
f.寫存儲(chǔ)單元內(nèi)容子程序
該子程序向芯片內(nèi)EEPROM的指定起始地址寫入數(shù)據(jù),與寫狀態(tài)寄存器子程序一樣,程序中需要先輸出WREN指令設(shè)置寫使能鎖存器。然后,按高位在前的順序輸出存放于DPTR中的16位地址和存放于R5、R4中的16位數(shù)據(jù)。最后,要循環(huán)檢測(cè)狀態(tài)寄存器的WIP位,直到芯征內(nèi)容的寫操作完成,以確保數(shù)據(jù)被安全可靠地寫入芯片。
WD-WR-DATA:CLR P1.2 ;使SCK為低電平
CLR P1.3 ;芯片選擇CS有效
MOV A,#06H ;WREN指令送累加器A
LCALL WD-LUTB ;輸出WREN指令
SETB P1.3 ;使CS為高電平
CLR P1.3 ;芯片選擇CS有效
MOV A,#02H ;WRITE指令送累加器A
LCALL WD-OUTB ;輸出WRITE指令
MOV A,DPH ;輸出高8位地址
LCALL WD-OUTB ;
MOV A,DPL ;輸出低8位地址
LCALL WD-OUTB ;
MOV A, R4 ;輸出低8位數(shù)據(jù)
LCALL WD-OUTB ;
MOV A,R5 ;輸出高8位數(shù)據(jù)
LCALL WD-OUTB;
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;使CS為高電平
WD-WIP-POLL:LCALL WD-RD-SR ;讀狀態(tài)寄存器
JB ACC.0, WD-WIP-POLL
;檢測(cè)WIP位
RET
g.看門狗定時(shí)器復(fù)位子程序
只要在設(shè)定的看門狗定時(shí)器超時(shí)周期以內(nèi)執(zhí)行子程序并向芯片的CS引腳發(fā)送一個(gè)下降沿,看門狗就不會(huì)產(chǎn)生復(fù)位輸出信號(hào)。
WD-EAT:SETB P1.3 ;
CLR P1.3 ;產(chǎn)生CS下降沿脈沖
SETB P1.3 ;
RET
筆者在設(shè)計(jì)車輪徑軸向位移檢測(cè)儀時(shí)使用了X25165芯片,從而簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),降低了成本,提高了系統(tǒng)的可靠性,使用過(guò)程中保存的數(shù)據(jù)從未發(fā)生丟失現(xiàn)象,使用結(jié)果令人滿意。