|
摘 要:介紹多功能器件X25045的主要特點和原理,結合其在CAN總線節(jié)點中的作用,設計并實現(xiàn)其硬件接口電路及軟件。
關鍵詞:X25045;看門狗;節(jié)點
0 引 言
隨著計算機技術、單片機技術、控制網(wǎng)絡技術的發(fā)展,以智能芯片為核心的單片機系統(tǒng)集成化和小型化程度的日益提高,使系統(tǒng)具備了完全的自診斷、自檢測等性能。目前,在一些測控系統(tǒng)中,存在電源開斷、瞬時電壓不穩(wěn)等不安全因素,將會造成系統(tǒng)死機、信息丟失、運行不穩(wěn)定等故障。為解決這些問題,實現(xiàn)系統(tǒng)安全可靠、穩(wěn)定、實時運行,可以采用可編程看門狗、電壓監(jiān)控、E2PROM等功能的X25045芯片。本文針對該芯片的特征進行分析和設計,并成功地應用在基于CAN總線的控制系統(tǒng)中。
1 X25045簡介
1.1 性能簡介
X25045是將可編程看門狗、電壓監(jiān)控、E2PROM集于一體的多功能芯片,該芯片是美國xicor公司的新型產(chǎn)品,具有體積小、占用I/O少等優(yōu)點,應用于系統(tǒng)中可以簡化單片機系統(tǒng)的設計,并完善其性能。
| 芯片共有8個引腳, 引腳功能見表1.
芯片工作期間, <!--[if !vml]--> <!--[endif]-->端應始終保持低電平。在一個讀時序周期內(nèi),數(shù)據(jù)在串行時鐘SCK的下降沿,由SO端串行輸出,而緩沖地址或數(shù)據(jù)在串行時鐘SCK的上升沿,由SI端輸入鎖存。當 端為低電平時,寫保護功能部分可以使用。當 端為高電平時,所有寫保護功
能才正常。值得注意的是,在芯片選通時, 端變?yōu)榈碗娖剑瑢⒁袛鄬25045的寫操作,若正處在內(nèi)部寫周期內(nèi),則對寫操作沒有影響。
特別提出的是,看門狗定時器對單片機提供了獨立的保護系統(tǒng),當系統(tǒng)出現(xiàn)故障時,只要其計時達到其編程的超時極限,或者當電 |
|
表1 X25045引腳功能 |
| |
引腳 |
引腳名稱 |
功能說明 |
| |
1 |
|
芯片選擇輸入 |
| |
2 |
SO |
串行輸出 |
| |
3 |
|
寫保護輸入 |
| |
4 |
Vss |
地 |
| |
5 |
SI |
串行輸入 |
| |
6 |
SCK |
串行時鐘輸入 |
| |
7 |
RESET |
復位輸出 |
| |
8 |
Vcc |
電源電壓 |
源電壓降到最低轉換點以下時,RESET引腳就會立即輸出高電平復位信號。該芯片在系統(tǒng)上電或掉電時,RESET引腳也會立即輸出高電平復位信號,從而避免了因系統(tǒng)故障、電源開斷、瞬時電壓不穩(wěn)等的影響。
另外,芯片采用CMOS工藝的512字節(jié)串行E2PROM,它的每個字節(jié)可擦寫10萬次以上,內(nèi)部數(shù)據(jù)可保存100年以上,具有低功耗、長壽命、可編程鎖定等功能。使用3線總線串行外設接口SPI,就可對芯片進行讀寫操作。利用編程器與計算機相連,來實現(xiàn)對E2PROM進行讀寫。
1.2 工作原理
X25045 內(nèi)部有一個8位指令寄存器,該寄存器可以通過引腳SI來訪問,數(shù)據(jù)在串行時鐘輸入的上升沿由時鐘同步輸入。另外,對芯片的所有操作都需要通過對該寄存器的寫命令來完成。其中操作主要有設置寫使能鎖存器允許寫,復位寫使能鎖存器禁止寫,讀寫狀態(tài)寄存器,從所選地址開始的存貯器中讀出數(shù)據(jù),把數(shù)據(jù)寫入所選地址開始的存貯器中。在執(zhí)行寫操作之前寫使能鎖存器必須被置位,在寫操作完成后該寄存器必須被復位。其指令格式不再詳細介紹。
X25045有一個狀態(tài)寄存器,可以用來提供X25045的狀態(tài)信息以及設置塊保護和看門狗的超時功能。
狀態(tài)寄存器的格式:
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
— |
— |
WD1 |
WD0 |
BL1 |
BL0 |
WEL |
WIP |
WIP位表示X25045是否在向E2PROM寫數(shù)據(jù)。該位是1 時,表示正在進行寫操作,此時不能向其寫數(shù)據(jù),反之,則是沒有寫操作進行,可以向其寫數(shù)據(jù)。WEL位是寫使能鎖存器的狀態(tài)位。可以由指令進行復位和置位操作。寫使能鎖存器被復位時向其寫操作被禁止。
由WREN指令可以對狀態(tài)寄存器中的BL0,BL1,WD0,WD1進行設置。BL0和BL1位確定E2PROM的塊保護地址范圍。WD0和WD1位是看門狗超時功能的設定位,可以設置不同的周期(典型值1.4 s、600 ms、200 ms).當WD0和WD1同時為1時,功能被禁止。
2 X25045與P87C592組成的硬件電路和軟件設計
2.1 CAN總線智能節(jié)點
CAN 總線是一種具有可擴展串行通信協(xié)議的總線,有效的支持分式實時,具有高可靠性,CAN總線允許帶有不同種微處理器和微控制器的網(wǎng)絡。CAN總線鏈路主設備節(jié)點是單片機系統(tǒng)的集合,要求具有可編程性,數(shù)據(jù)處理功能,還要具有自診斷、自校正、自學習等功能,特別是要在系統(tǒng)組態(tài)后,節(jié)點能夠獨立實現(xiàn)多種控制功能,實現(xiàn)控制功能的下放,這樣,就必須保證節(jié)點功能模塊化、集成化,而且系統(tǒng)安全,可靠性高,穩(wěn)定性好,抗干擾能力強,造價低廉等。
在傳統(tǒng)的單片機系統(tǒng)設計中,大多采用電容和電阻組合的方式實現(xiàn)復位電路。但在實際的應用系統(tǒng)中,外部擴展電路也需要復位,這樣將影響復位電路中的電阻和電容的參數(shù),不能可靠地進行系統(tǒng)復位,會造成系統(tǒng)死機、信息丟失等。其次,在一般的系統(tǒng)中,不能提供串行E2PROM的寫保護和電源電壓監(jiān)控等功能。另外,這樣的系統(tǒng)結構龐大,費用高。這些不能滿足總線節(jié)點設計的總體要求。
| 為此,從總線節(jié)點的要求及傳統(tǒng)設計存在的問題兩方面綜合考慮,在設計該節(jié)點時,采用了以PHILIP公司的P87C592高性能微控制芯片為核心及以X25045芯片為輔助的電路,如圖1所示。圖中,P87C952是帶片CAN的微控制器,是適用于自動和通用工業(yè)應用的8位高性能的微控制器,是以80C51標準性能為核心的,具有五組8位I/O口,16 kB在片ROM,外部可擴展至64 kB,還具有總線故障管理功能的1 MbpsCAN控制器。雖然P87C592具有內(nèi)部復位電路,但不能完成外部復位的功能及節(jié)點功能的要求。上述可知,X25045可完成系統(tǒng)上電、手動復位、看門狗定時器、電源電壓監(jiān)控、串行E2PROM等功能,能夠滿足系統(tǒng)要求。 |

圖1 P87C592與X25045的硬件電路 |
P87C592的P4.0、P4.1、P4.2、P4.3分別與X25045的片選端、串行輸出、串行時鐘和串行輸入相連,二者的RESET引腳相連。對于X25045內(nèi)部的E2PROM 讀寫操作,是通過X25045的SPI(串行外圍接口)總線實現(xiàn),由于P87C592內(nèi)部沒有SPI總線接口控制器,因此通過P87C592的P4.1、 P4.2、P4.3分別模擬SPI總線的數(shù)據(jù)輸出、串行時鐘、數(shù)據(jù)輸入時序來實現(xiàn)對X25045的操作。這樣,CAN網(wǎng)絡節(jié)點的地址和模擬輸入量的修正值就可以設定在X25045的存儲器中,而且只要電源電壓降到最小轉換電壓或者看門狗已達到其設定的超時極限時,系統(tǒng)將復位,確保系統(tǒng)安全穩(wěn)定運行。
2.2 軟件設計
利用簡易編程器對X25045內(nèi)的E2PROM進行編程,只要將編程器與計算機的串行口相連,就可以將數(shù)據(jù)寫入X25045的E2PROM中。
通過其引腳,利用Keil C51編譯碼可以方便的實現(xiàn)對X25045的設置和讀寫操作,包括串行輸出、串行輸入、讀單元內(nèi)容、寫狀態(tài)寄存器、定時器復位等,其軟件程序如下:
| (1)串行輸入子程序
unsigned char X25045Rece()
{ unsigned char idata i; // 定義變量
unsigned char idata var=0;
for (i=0;i<7;i++) // 8位字節(jié)帶進位左移
{ sck=1; // 產(chǎn)生SCK脈沖
sck=0;
CY=so; // SO移進位位
if (CY) var+=1; // 帶進位左移
var<<=1;}
sck=1;sck=0;CY=so;
if (CY) var+=1; // 判斷是否結束
return(var); } // 返回
(2)串行輸出子程序
void X25045Send(unsigned char var)
{ unsigned char data i,tem;
for (i=0;i<8;i++) // 8位字節(jié)輸出
{ sck=0; // 使SCK為低電平
tem=var&0x80; // 選擇高位
if (tem==0x80) si=1; // 輸出高位
else si=0;
sck=1; // 使SCK為1
var<<=1;} // 左移1位
si=0; } // 清SI
|
(3)寫狀態(tài)寄存器子程序
void Xwrite(unsigned char var, add)
{ sck=0; // 使SCK為低電平
cs=0; // 芯片選擇有效
X25045Send(0x02); // WREN指令
X25045Send(add); // 調(diào)輸出子程序
X25045Send(var); // 調(diào)輸出子程序
sck=0; // 使SCK為低電平
cs=1; // 芯片選擇無效
X25045wip-poll();} // 調(diào)看門狗時限子程序
(4)讀狀態(tài)寄存器子程序
unsigned char XBRead(unsigned char add)
{ unsigned char data i;
sck=0; // 使SCK為低電平
cs=0; // 芯片選擇有效
X25045Send(0x03); // READ指令
X25045Send(add); // 調(diào)輸出子程序
i=X25045Rece(); // 調(diào)輸入子程序
sck=0; // 使SCK為低電平
cs=1; // 芯片選擇無效
return(i);} // 返回
(5)看門狗復位程序
void reset()
{cs=1;cs=0;cs=1;} // 設置CS脈沖復位看門狗 |
| 3 實驗結果
以X25045和P87C592為核心的智能節(jié)點已經(jīng)成功地應用于水箱水位控制系統(tǒng),如圖2所示。系統(tǒng)采用模糊控制算法在線調(diào)整PID參數(shù),上電自動復位系統(tǒng)和初始化系統(tǒng)。當P87C592監(jiān)測到總線傳送故障或總線電源(+12 V)不正常時,X25045會在達到看門狗定時編程時限600 ms后,向系統(tǒng)發(fā)出復位信號。當系統(tǒng)受到外界干擾或系統(tǒng)檢測的傳感器液位信號出現(xiàn)異 |

圖2 水箱控制系統(tǒng)框圖 |
|
| |
|
|
|
常時,為使系統(tǒng)控制作用不受影響,P87C592將響應復位信號。
系統(tǒng)利用X25045內(nèi)部的E2PROM,將節(jié)點的地址和模擬輸入量的修正值設定在X25045的存儲器中,當檢測到總線節(jié)點的地址有沖突時,系統(tǒng)將向總線發(fā)出必要的信息。
另外,系統(tǒng)還設有T0中斷服務程序,當系統(tǒng)復位時,系統(tǒng)會產(chǎn)生中斷,啟動初始中斷應用程序,重新啟用模糊控制算法在線調(diào)整PID參數(shù),當偏差絕對值較大時,可以使系統(tǒng)控制信號最大或最小輸出,以適應水箱的液位控制要求,從而保證水箱控制的實時性。
實驗表明,該系統(tǒng)在電磁干擾嚴重的現(xiàn)場條件下長期運行,并按工藝要求液位發(fā)生變化時,或在擾動作用的情況下,都沒有發(fā)生系統(tǒng)死機、組態(tài)參數(shù)丟失等現(xiàn)象,X25045芯片能夠為CAN總線節(jié)點系統(tǒng)提供必要的保護措施,使系統(tǒng)穩(wěn)定、可靠、實時運行。
參考文獻:
[1] 鄔寬明.CAN總線原理和應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,1996.110-119.
[2] 張毅剛,修林成,胡振江.MCS-51單片機應用設計[M].哈爾濱:哈爾濱工業(yè)大學出版社,1996.18-19.
[3] 力源電子股份有限公司.X25043/45數(shù)據(jù)手冊[M].武漢:力源電子出版社,1998.1-10. |