C8051F064單片機(jī)在遠(yuǎn)端測(cè)控裝置中的應(yīng)用
串口
C8051F064內(nèi)部帶有兩個(gè)UART,其中串口0經(jīng)光電隔離轉(zhuǎn)換為RS-485信號(hào),用于跟現(xiàn)場(chǎng)的其他設(shè)備連接,串口1再加上6個(gè)GPIO口經(jīng)電平轉(zhuǎn)換后成為全功能標(biāo)準(zhǔn)的RS-232接口,用于與Modem、電臺(tái)、CDMA等連接。用C8051F064的SPI口經(jīng)MAX3100擴(kuò)展成UART,通過(guò)外部的可選配件,轉(zhuǎn)變成RS-232或RS-485信號(hào)。
模擬量
C8051F064的模擬量輸入最高不超過(guò)3.6V,所以接入信號(hào)時(shí)要注意其范圍,針對(duì)此系統(tǒng),由于現(xiàn)場(chǎng)信號(hào)大部分是4mA~20mA電流,因此用100Ω的精密電阻,配上2.5V的精密電壓源,可以將模擬量的精度調(diào)整到1‰。另外,啟動(dòng)內(nèi)部ADC0的窗口檢測(cè)功能,可以方便地實(shí)現(xiàn)模擬量的上下限越限報(bào)警功能。
數(shù)字量
大部分?jǐn)?shù)字量直接掛在總線上,另外,有兩路開(kāi)關(guān)量輸入直接接到單片機(jī)引腳,并在內(nèi)部分配這兩個(gè)引腳為定時(shí)/計(jì)數(shù)器的輸入,這兩路就可以兼做脈沖量了。
單片機(jī)資源分配
C8051F064的端口功能分配使用交叉開(kāi)關(guān)的方式,而且還帶有優(yōu)先級(jí),這種方式很靈活,但是要求設(shè)計(jì)師在電路設(shè)計(jì)時(shí)就要將內(nèi)部的功能分配就緒,也就是說(shuō)電路板加工完成后就不可以隨意修改交叉開(kāi)關(guān)了。
復(fù)位
C8051F064除了實(shí)現(xiàn)傳統(tǒng)的RESET信號(hào)復(fù)位外,還有上電、掉電、外部信號(hào)、軟件命令、比較器0、時(shí)鐘丟失檢測(cè)及開(kāi)門(mén)狗等復(fù)位功能,共7種復(fù)位方式。單片機(jī)復(fù)位后可以通過(guò)查詢(xún)寄存器得知是何原因引起的復(fù)位,這對(duì)數(shù)據(jù)的處理和故障分析都是很有用的。本系統(tǒng)使用的是上電、軟件命令、時(shí)鐘丟失和看門(mén)狗,增加軟件命令復(fù)位的原因是:由于這些設(shè)備的安裝地點(diǎn)都是比較偏遠(yuǎn)的,當(dāng)中心站察覺(jué)此設(shè)備異常時(shí),可以將其重新啟動(dòng),以解決一些異常問(wèn)題。
三 一些技術(shù)問(wèn)題
數(shù)據(jù)的存儲(chǔ)
在這個(gè)系統(tǒng)中有多個(gè)可以存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器,如256字節(jié)的內(nèi)部RAM、4KB的內(nèi)部擴(kuò)展RAM、32KB的外擴(kuò)RAM、128字節(jié)的Flash、實(shí)時(shí)時(shí)鐘內(nèi)114字節(jié)的電池保持RAM和外擴(kuò)8KB的E2PROM,這么多的數(shù)據(jù)存儲(chǔ)區(qū),一定要仔細(xì)分配其用途,以便充分發(fā)揮功能和速度。本系統(tǒng)作如下分配:256字節(jié)的內(nèi)部RAM讀寫(xiě)速度最快,而且它是單片機(jī)內(nèi)核所占用的,所以要減少使用,它用在對(duì)速度要求較高且頻繁使用的地方,如中斷內(nèi)的變量等;4KB內(nèi)部擴(kuò)展RAM和32KB外擴(kuò)RAM的地位是等同的,一般用作程序的中間變量;128字節(jié)的Flash是整片修改的,所以修改之前要把所有數(shù)據(jù)讀到緩沖區(qū),將要修改的字節(jié)改掉,再把整片擦除,然后把數(shù)據(jù)寫(xiě)入。雖然寫(xiě)比較麻煩,但是讀取很方便,所以用它存放一些不經(jīng)常改動(dòng)而且需要掉電保持的數(shù)據(jù),如模擬量的修正值等;實(shí)時(shí)時(shí)鐘內(nèi)114字節(jié)的RAM讀寫(xiě)速度較快,而且訪問(wèn)方便,所以用它存放需要掉電保持的中間變量,這樣可以隨意讀寫(xiě);8KB的E2PROM受總線邏輯的限制,讀寫(xiě)較慢,但數(shù)據(jù)區(qū)較大,用來(lái)存放功能的設(shè)定值,在程序初始化的時(shí)候把它讀出并放到中間變量區(qū),以后不對(duì)其操作,修改內(nèi)部數(shù)據(jù)操作不宜在中斷中進(jìn)行,防止延長(zhǎng)中斷時(shí)間。
看門(mén)狗
本文采用的是22.1184MHz晶振,那么看門(mén)狗監(jiān)控時(shí)間最長(zhǎng)只有47.4ms,這對(duì)實(shí)時(shí)性要求不高。本文采用中斷喂狗的方式。一般來(lái)說(shuō)單純的中斷喂狗是不可以的,因?yàn)槌绦蛑衅鹱饔玫氖侵餮h(huán),而當(dāng)主循環(huán)進(jìn)入非正常狀態(tài)時(shí),中斷往往還在進(jìn)行,所以用中斷喂狗還需主循環(huán)配合。這里采用的是5ms中斷喂狗,在中斷中用變量a累加,當(dāng)a累加到100時(shí),就不再喂狗;而主循環(huán)內(nèi)不斷將a清0,這樣就可以把看門(mén)狗的時(shí)間延長(zhǎng)到500ms。
模擬量濾波
C8051F064的ADC是逐次逼近型的,雖然速度快至1MSPS,但數(shù)據(jù)的抖動(dòng)特別大,所以在混合系統(tǒng)中應(yīng)用時(shí),外圍一定要加濾波電路,如果在硬件設(shè)計(jì)中沒(méi)有考慮也沒(méi)關(guān)系,可以充分利用它的速度,在內(nèi)部采用軟件濾波的方式。本系統(tǒng)對(duì)模擬量的采集速度要求不高,只求穩(wěn)定和準(zhǔn)確,在內(nèi)部采用了20個(gè)點(diǎn)的中位值平均濾波,然后再用20次平均值算法,這樣,就算外圍沒(méi)有任何濾波措施,也能得到很好的效果。
超級(jí)電容器相關(guān)文章:超級(jí)電容器原理
評(píng)論