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