美國XICor公司生產的Z25165芯片是集看門狗、電壓監(jiān)控和串行EEPROM三項功能于一體的集成電路產品。該芯片的應用將有利于簡化單片機系統(tǒng)的結構,降低系統(tǒng)的成本,減少對電路板的空間需求,增加系統(tǒng)的可靠性。
1 芯片簡介
X25165的引腳排列如圖1所示,各引腳功能說明如表1所列。
X25165使用簡單的三線總線串行外設接口(SPI),對芯片進行操作的所有操作碼、字節(jié)地址及寫入的數據均從SI引腳輸入,寫入數據在串行時鐘(SCK)的上升沿被鎖存,從芯片讀取的數據從SO引腳串行移出,并在串行時鐘的下降沿輸出數據。
芯片的看門狗定時器和VCC電壓監(jiān)視器都對微處理器提供獨立的保護,當系統(tǒng)發(fā)生故障時,只要看門狗定時器達到其可編程的超時極限,RESET引腳立即自動產生一個持續(xù)200ms的高電平復位信號。當電源電壓Vcc降到4.5V以下時,RESET引腳立即自動產生主電平復位信號,并一直保護到電源電壓恢復正常。在系統(tǒng)電源上電或掉電時,RESET引腳也立即自動產生一個高電平復位信號。這樣,就能有效地防止系統(tǒng)死機、數據誤寫及誤操作等故障現象的發(fā)生。

X25165芯片內部有2k×8位的串行EEPROM,每個字節(jié)可以擦寫10萬次以上,內部數據可以保存100年以上。應用時,可以通過編程對指定的塊進行鎖定,以防止由于誤操作等原因破壞保存的數據。
2 工作原理
2.1 指令
X25165共有七條指令(見表2),對芯片的所有操作都需要通過對指令寄存器寫命令來完成,所有的指令、地址、數據均以高位在前的方式(MSB)串行傳送。

2.2 狀態(tài)寄存器
X25165內有一個八位狀態(tài)寄存器,在任何時候都可以通過RDSR指令來讀取狀態(tài)寄存器的內容,也可以通過WREN,SFLB,WRSR等指令來設置狀態(tài)寄存器中的某些位。狀態(tài)寄存器的格式如下:


FLB:只讀位,指示一個易失位的狀態(tài),可用SFLB和RFLB指令進行置位和清零,上電時該位自動清零;
WPEN:為非易失位,可用WRSR指令進行編程,該位和WP引腳配合使用能以編程方式實現對硬件的寫保護(見表5)。當WP引腳為低電平且WPEN位被置位時,所有狀態(tài)寄存器的寫操作被禁止。

3 芯片應用
3.1 硬件接口電路
在一個8051單片機系統(tǒng)中可按照圖2的連接方式使用該芯片。
3.2 軟件接口設計
根據圖2的連接方式,筆者編寫了七個實用的應用接口程序,供大家參考。
a.串行輸出了程序
將累加器A中的數據按照高位在前的順序(MSB)串行輸出至X25165芯片中。
WD-OUTB:MOV R7,#08H;有8位數據要傳輸
WD-OUTB1:CLR P1.2;使SCK為低電平
RLC A ;將輸出位移入C
MOV P1.1,C;進位位移入SI
SEIB P1.2;使SCK位為高電平
DJNZ R7,WD-OUTB1;判斷循環(huán)是否結束
CLR P1.1;清SI
RET
b.串行輸入子程序
將1字節(jié)的數據按照高位在前的順序(MSB)從X25165中串行讀入累加器A中。
WD-INB:MOV R7,#08H;有8位數據要接收
WD-INB1:SETB P1.2;產生SCK脈沖
CLR P1.2 ;
MOV C, P1.0 ;S0移入進位位C
RLC A ;累加器A帶進位位去移
DJNZ R7, WD-INB1;判斷循環(huán)是否結束
RET
c.讀狀態(tài)寄存器子程序
用于從X25165中讀狀態(tà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)寄存器內容
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;芯片選擇CS無效
RET
d.寫狀態(tài)寄存子程序
該子程序可以設置塊保護地址范圍和可編程看門狗定時器超時周期。子程序中需要先使片選信號有效,然后用WREN指令設置寫使能鎖存器,8位指令輸出后必須將片選信號拉高,這樣才能使命令生效。同樣,數據輸出完成后也必須將片選信號拉高。
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;無塊保護,超時周期;800ms
LCALL WD-OUTB ;輸出狀態(tài)寄存器內容
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;使CS為高電平
RET ;
e.讀存儲單元內容子程序
從X25165的串行EEPROM中讀指定單元內容,需要先發(fā)送READ指令和16位地址,指定地址單元的數據在SCK脈沖的作用下就會從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 ;讀?。―PTR)單元的數據
MOV R4,A ;數據送R4
LCALL WD-INB ;讀?。―PTP+1)單元的數據
MOV R5,A ;數據送R5
CLR P1.2 ;使SCK為低電平
SETB P1.3 ;芯片選擇CS無效
RET
f.寫存儲單元內容子程序
該子程序向芯片內EEPROM的指定起始地址寫入數據,與寫狀態(tài)寄存器子程序一樣,程序中需要先輸出WREN指令設置寫使能鎖存器。然后,按高位在前的順序輸出存放于DPTR中的16位地址和存放于R5、R4中的16位數據。最后,要循環(huán)檢測狀態(tài)寄存器的WIP位,直到芯征內容的寫操作完成,以確保數據被安全可靠地寫入芯片。
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位數據
LCALL WD-OUTB ;
MOV A,R5 ;輸出高8位數據
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
;檢測WIP位
RET
g.看門狗定時器復位子程序
只要在設定的看門狗定時器超時周期以內執(zhí)行子程序并向芯片的CS引腳發(fā)送一個下降沿,看門狗就不會產生復位輸出信號。
WD-EAT:SETB P1.3 ;
CLR P1.3 ;產生CS下降沿脈沖
SETB P1.3 ;
RET
筆者在設計車輪徑軸向位移檢測儀時使用了X25165芯片,從而簡化了系統(tǒng)結構,降低了成本,提高了系統(tǒng)的可靠性,使用過程中保存的數據從未發(fā)生丟失現象,使用結果令人滿意。
電子發(fā)燒友App











評論