基于C8051F040狀態(tài)監(jiān)測電路設(shè)計與實現(xiàn)
掃描二維碼
隨時隨地手機看文章
摘要 為記錄某航行體航行是否正常,采用監(jiān)測有無重要電路電壓和存儲通訊CAN信息的方式。將被監(jiān)測電路的電壓通過TPL281-4光耦轉(zhuǎn)換直接與微處理器C8051F040的I/O引腳連接,若相應(yīng)I/O無電,則將此刻時間和信息存儲到AM29F160DT芯片內(nèi)。應(yīng)用結(jié)果表明,該監(jiān)測電路達到了設(shè)計要求,具有一定的應(yīng)用價值。
航行體內(nèi)部控制器和相關(guān)重要信號需被監(jiān)測和記錄,作為正常航行及故障判斷的重要依據(jù)。當(dāng)航行體內(nèi)部重要信號缺失時,該電路仍能進行一些相關(guān)處理,以確保航行體能有效結(jié)束航行。
1 系統(tǒng)硬件結(jié)構(gòu)
基于C8051F040狀態(tài)監(jiān)測電路硬件部分由7個主要功能模塊組成:監(jiān)測信號、電子轉(zhuǎn)換電路、達拉斯DS12887時鐘模塊、并行存儲器AM29F 160DT、單片機C8051F040模塊、CAN/RS232通訊模塊以及驅(qū)動輸出模塊。系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。
電路工作原理是將被監(jiān)測電路的電壓通過TPL2814光耦轉(zhuǎn)換直接與微處理器C8051F040的I/O引腳連接,若相應(yīng)I/O無電,則將此刻時間和信息存儲到AM29F160DT芯片中,同時發(fā)送給相關(guān)控制器,并給出相應(yīng)驅(qū)動輸出。此外將通訊過程中的CAN信息也進行存儲,以便航行結(jié)束后對相關(guān)數(shù)據(jù)進行分析、處理。
1.1 單片機C8051F040介紹
C8051F040由美國Silicon Labs公司設(shè)計,對原51單片機內(nèi)核進行了較大改造,由原來12個時鐘執(zhí)行一條指令改進為一個時鐘執(zhí)行一條單周期指令,多數(shù)指令執(zhí)行的時鐘周期數(shù)與指令的字節(jié)數(shù)相同,使該款單片機的運行速度大幅提高。C8051F040具有64個數(shù)字I/O引腳,片內(nèi)集成了一個CAN2.0B控制器。其主要特性有:(1)高速、流水線結(jié)構(gòu)的8051兼容CIP-51內(nèi)核(可達25 MI·s-1)。(2)局域網(wǎng)(CAN2.0B)控制器,具有32個消息對象,每個消息對象有其獨有的標(biāo)識。(3)硬件實現(xiàn)的SPI、SMBus/I2C和兩個UART串行接口。(4)5個通用的16位定時器。(5)具有6個捕捉/比較模塊的可編程計數(shù)器/定時器陣列。
1.2 檢測信號及電平轉(zhuǎn)換電路
由于檢測信號的電壓為24 V,但單片機C8051F040I/O口能夠承受的電壓為5 V。因此,需將這些電路的電壓進行轉(zhuǎn)換以便給單片機的I/O識別。該電路電平轉(zhuǎn)換采用光電隔離芯片TLP281-4,其電路如圖2所示。
1.3 時鐘芯片DS12887
DS12887是美國達拉斯半導(dǎo)體公司推出的時鐘芯片,采用CMOS技術(shù)制成,將時鐘芯片所需的晶振和外部鋰電池相關(guān)電路集于芯片內(nèi)部。其主要功能如下:(1)內(nèi)含一個鋰電池,斷電后運行10年以上不丟失數(shù)據(jù)。(2)計秒、分、時、天、星期、日、月、年,并有閏年補償功能。(3)二進制數(shù)碼或BCD碼表示時間、日歷和定鬧。(4)有Motorola5和Inatael的總線時序選擇。
將DS12887的MOT引腳接地,表明該電路的數(shù)據(jù)總線方式為Inatael總線時序,這樣讀寫使能獨立。數(shù)據(jù)操作需先將地址信息鎖存,再進行相應(yīng)讀寫,具體電路如圖3所示。
1.4 并行存儲器AM29F160DT模塊
存儲器AM29F160DT模塊是2 MB的CMOS型5 V供電的Flash存儲芯片,存取速度可高達70 ns,每個扇區(qū)至少滿足100萬次的擦除,數(shù)據(jù)一次保存時間長達20年,內(nèi)部扇區(qū)數(shù)據(jù)結(jié)構(gòu)是頂部數(shù)據(jù)形式。
將AM29F160DT的BYTE引腳下拉接地,表明是8位數(shù)據(jù)傳輸,并將RY/BY、WP、RESET上拉到電源。然后對應(yīng)的讀、寫、片選信號接到微處理相應(yīng)的引腳即可。具體電路如圖4所示。
1.5 驅(qū)動輸出模塊
考慮到要有足夠的驅(qū)動能力,故在驅(qū)動芯片上使用BTS712N1。而在該驅(qū)動芯片之前增加一個光耦進行隔離,以保護單片機相應(yīng)的I/O。具體驅(qū)動電路如圖5所示。
2 軟件設(shè)計
整個軟件設(shè)計是以相應(yīng)CAN信息為基礎(chǔ)進行的,記錄相應(yīng)電路狀態(tài)信息以及當(dāng)時的時間信息;一部分電路信號檢測是全程監(jiān)控,另一部分電路信號檢測則有時段要求。為此信號檢測軟件采用100 ms為周期的中斷檢測。
系統(tǒng)的軟件設(shè)計主要包括軟件初始化配置程序、電路狀態(tài)檢測程序、DS12887時鐘數(shù)據(jù)讀取、數(shù)據(jù)存儲程序、CAN通信程序以及串口通訊6部分。
2.1 電路狀態(tài)的檢測程序設(shè)計
電路狀態(tài)的檢測程序設(shè)計采用定時器檢測的方式,持續(xù)檢測相應(yīng)電路狀態(tài)3 s并未認定此電路信號出現(xiàn)故障。具體設(shè)計流程如圖6所示。
2.2 DS12887時鐘數(shù)據(jù)存儲程序
時間讀取程序設(shè)計就是對DS12887芯片內(nèi)部4個寄存器進行相應(yīng)的初始化和對其他寄存器數(shù)據(jù)的讀取。
時間數(shù)據(jù)儲存程序設(shè)計就是通過I/O按照存儲器AM29F160DT控制時序?qū)懭雽?yīng)控制字,完成對應(yīng)數(shù)據(jù)寫入、讀取以及擦除。
2.3 CAN及RS232通信程序設(shè)計
由于C8051F040器件內(nèi)部集成了Bosch CAN控制器,只需對該控制器進行初始化和配置便可實現(xiàn)CAN通信。操作通過特殊功能寄存器直接或間接訪問CAN控制器中的相關(guān)寄存器。
串行通訊設(shè)置是用來向界發(fā)送一些內(nèi)部數(shù)據(jù),從而顯示整個電路工作狀態(tài)。
3 結(jié)束語
該電路設(shè)計已成功應(yīng)用于某航行體航行監(jiān)測中,在實際使用中對相關(guān)控制器監(jiān)測起到了較好的數(shù)據(jù)記錄和問題分析。本文設(shè)計實現(xiàn)了狀態(tài)監(jiān)測電路能應(yīng)用其他場合的相關(guān)狀態(tài)監(jiān)測及時刻記錄,由于AM29F160DT存儲器具有2 MB的存儲空間,因而能夠長時間地進行監(jiān)測。該設(shè)計具有結(jié)構(gòu)簡單、功能齊全且系統(tǒng)運行可靠的特點。