51單片機(jī)與MXA2500GL的振動信號分布式檢測
C8051F020單片機(jī)性能特點
CYGNAL的C8051F020是集成模擬、數(shù)字信號的混合信號系統(tǒng)級SOC(System On Chip)單片機(jī),與目前常用的51系列單片機(jī)指令集完全兼容。采用100腳TQFP封裝,體積小,運(yùn)算速度快。它采用CYGNAL公司的專利CIP- 5l微處理器內(nèi)核。CIP-5l在提升805l速度上采取了新的途徑,即設(shè)法在保持CISC結(jié)構(gòu)及指令系統(tǒng)不變的情況下,對指令運(yùn)行實行流水作業(yè)。在這種模式中,廢除了機(jī)器周期的概念,指令以時鐘周期為運(yùn)行單位。平均每個時鐘可以執(zhí)行完l條單周期指令,從而大大提高了指令運(yùn)行速度。
與805l相比,C8051F020在相同時鐘下單周期指令運(yùn)行速度為原來的12倍,整個指令集平均運(yùn)行速度為原來805l的9.5倍,使CYGNAL 單片機(jī)系列進(jìn)入了8位高速單片機(jī)行列。同時,C805lF020單片機(jī)延續(xù)了C805lF系列特有的優(yōu)先權(quán)數(shù)字交叉開關(guān)配置技術(shù)。這項技術(shù)的核心就是以硬件方式為內(nèi)部的數(shù)字資源配置端口I/O引腳。與標(biāo)準(zhǔn)復(fù)用數(shù)字I/O不同,這種結(jié)構(gòu)可支持更多的功能組合。PCA、比較器、定時器等按優(yōu)先級別分配到所選擇端口上。使用者也可以只為所用到的數(shù)字資源分配I/O引腳。任何未配置使用的端口I/O被組合在一起,作為GPIO。
MXA2500GL加速度傳感器的性能特點
MXA2500GL是MEMSIC公司專利技術(shù)生產(chǎn)的雙軸式絕對模擬輸出加速度傳感器。它根據(jù)熱對流原理在兩個軸線都可以進(jìn)行動態(tài)加速度(例如振動)和靜態(tài)加速度(例如重力加速度)的測量,因此廣泛應(yīng)用于汽車穩(wěn)定性控制、安全性控制、接近角控制、血壓監(jiān)視器、電子羅盤傾斜校正、數(shù)碼相機(jī)、電梯等領(lǐng)域。與普通壓電式加速度傳感器不同的是,MXA2500GL實際是按照標(biāo)準(zhǔn)CMOS工藝制造的單片集成電路,它的輸出是0.1~4.9V(5V電源的情況)的電壓信號,無需電荷放大器就可以直接與A/D卡相連,因此會使整個測試系統(tǒng)不僅結(jié)構(gòu)緊湊,而且抗干擾性非常強(qiáng)。
基本工作原理是:在硅片中心的空腔中懸掛一個氣體熱源,同時在熱源的4個對角(即2個軸線方向)處,均勻放置鋁/多晶硅溫差電堆(熱電偶)。當(dāng)加速度為零時,熱源的溫度梯度是對稱的,所以4個溫差電堆的溫度相同,因此這2個軸線方向輸出相同的電壓。而任何方向的加速度都會擾亂這種平衡的溫度形式,使熱源的溫度梯度不對稱。根據(jù)熱傳導(dǎo)的自由對流原理,4個溫差電堆的溫度及其輸出信號—電壓都是不同的。但是這些電壓信號與加速度是成比例變化的。這樣通過測量電壓就可以確定加速度的值。在傳感器上有兩個相同加速度信號通道,一個測量X方向,另一個測量Y方向。
圖1給出了它的基本結(jié)構(gòu)。
圖1MXA2500GL加速度傳感器的結(jié)構(gòu)圖
分布式檢測系統(tǒng)的硬件架構(gòu)
系統(tǒng)以C8051F020單片機(jī)為從機(jī),PC為主機(jī)。由于單片機(jī)體積小、功能強(qiáng)、價格低廉,因此性價比非常高。目前主流的PC有2個標(biāo)準(zhǔn)的RS-232 串行口,采用的是EIA電平,而C8051F020單片機(jī)的TX引腳(發(fā)送數(shù)據(jù))、RX引腳(接收數(shù)據(jù))使用的是TTL電平,兩者之間進(jìn)行可靠通信必須要用電平轉(zhuǎn)換芯片,系統(tǒng)采用MAX232/MAX485芯片。為了實現(xiàn)資源共享,任務(wù)分擔(dān)的目標(biāo),在分布式計算機(jī)系統(tǒng)中關(guān)鍵就是確保主機(jī)和各從機(jī)之間數(shù)據(jù)通信的準(zhǔn)確可靠。
由于PC機(jī)本身并不具備多機(jī)通信功能,所以目前普遍采用的通信方式有兩種:一種是利用“橋梁”硬件—多機(jī)通信卡。通信卡一般有兩種形式,應(yīng)用最廣的是以51單片機(jī)為核心,結(jié)合8255、6116、2716等芯片構(gòu)成的通信卡。該卡可以插在PC的擴(kuò)展槽中,各從機(jī)與通信卡中單片機(jī)進(jìn)行串行通信,而PC通過8255芯片與卡上的單片機(jī)進(jìn)行并行通信。另外一種通信卡僅僅由單片機(jī)構(gòu)成(也就是犧牲一個單片機(jī)做通信中轉(zhuǎn)),從機(jī)與通信卡及PC與通信卡之間都是串行通信;另一種方式是在PC的串口上軟件模擬51系列單片機(jī)串口可編程第9位數(shù)據(jù)功能實現(xiàn)多機(jī)通信,系統(tǒng)采用的是后一種方式。另外由于遠(yuǎn)距離傳輸,系統(tǒng)中使用了MAX485芯片,同時還使用了光電隔離來提高系統(tǒng)的抗干擾能力。
圖2給出了整體硬件架構(gòu)。
圖2分布式檢測系統(tǒng)的硬件架構(gòu)
多機(jī)通信協(xié)議
C8051F020單片機(jī)具有適于多機(jī)通信的特殊功能,即方式2(3)。在這2個方式里,接收的第9位進(jìn)入RB8,然后為停止位。串行口可程控為:當(dāng)接收到停止位,只有當(dāng)RB8=1時才產(chǎn)生串行口中斷。這個特性可由置位SCON中的SM2控制。多機(jī)通信中使用這種特性的方法是:當(dāng)主機(jī)要發(fā)送一個數(shù)據(jù)塊給幾個從機(jī)之一時,它先發(fā)送一個目標(biāo)從機(jī)的地址字節(jié),地址字節(jié)第9位為1而數(shù)據(jù)字節(jié)第9位為0。當(dāng)SM2=1時,數(shù)據(jù)字節(jié)不會中斷任何從機(jī),然而,地址字節(jié)會中斷所有從機(jī),這樣每一個從機(jī)可檢查接收到的地址,看是否為尋址自己。被尋址的從機(jī)將SM2位清0,準(zhǔn)備接收傳送過來的數(shù)據(jù)字節(jié),沒被尋址的從機(jī)保持 SM2為置位狀態(tài),繼續(xù)處理其它工作。C8051F020單片機(jī)方式3下的信息楨格式見圖3。
圖3C8051F020單片機(jī)在方式3下的信息楨格式
PC機(jī)的異步串行通信口是采用通用異步接收發(fā)送器(簡稱UART)為核心構(gòu)成的。UART的產(chǎn)品型號很多,大多采用Ins8250芯片。對UART的編程實際上是對其內(nèi)部寄存器的操作。UART內(nèi)部寄存器共有10個。編程時首先要確定串行通信的數(shù)據(jù)格式,這是通過將選定的數(shù)據(jù)格式參數(shù)寫入到線路控制寄存器LCR來完成的,接下來需要將波特率因子寫入到波特率因子寄存器來確定雙方傳輸波特率,再通過讀線路狀態(tài)寄存器LSR來判斷芯片是否就緒或有錯等。通信線路控制寄存器LCR的格式如圖4所示。
圖4通信線路控制寄存器LCR
通過將參數(shù)字節(jié)寫入到線路控制寄存器,可以將UART編程為這樣的串行通信數(shù)據(jù)格式:1位起始位,8位數(shù)據(jù)位,1位奇偶校驗位,1位停止位,1幀共 11位。既然能夠在PC機(jī)上實現(xiàn)1幀11位的數(shù)據(jù)格式,并且改變線路控制寄存器的D5、D4、D3位的值能將奇偶位設(shè)定為“恒1”或“恒0”,則若在發(fā)送地址幀時將奇偶位設(shè)定為“恒1”,在發(fā)送數(shù)據(jù)位時將奇偶位設(shè)定為“恒0”,便可以在PC機(jī)上模擬51系列單片機(jī)的多機(jī)通信持點,從而直接利用這種特點實現(xiàn)它們之間的主從分布式多機(jī)通信。
主機(jī)和從機(jī)遵循主從原則,主機(jī)用呼叫方式選擇從機(jī),數(shù)據(jù)在主機(jī)和從機(jī)之間雙向傳遞,各從機(jī)之間的相互通信需通過主機(jī)作為中介。主從機(jī)之間還應(yīng)傳送一些供它們識別的命令和狀態(tài)字,如以00H表示主機(jī)發(fā)送從機(jī)接收命令,以01H表示從機(jī)發(fā)送主機(jī)接收命令等。
PC主機(jī)通信程序的實現(xiàn)方法
對PC機(jī)UART的編程是主機(jī)通信程序的核心。一般可以通過兩種方式實現(xiàn)對UART的操作。一種是直接訪問底層地址實現(xiàn)對LCR、LSR、波特率因子寄存器的操作,這種方法只適用于Windows9X.在WindowsNT環(huán)境下系統(tǒng)禁止用戶程序直接訪問硬件和物理地址,因此該方法不可取。具體過程是通過調(diào)用標(biāo)準(zhǔn)通信函數(shù)inp()、outp()實現(xiàn)的。另一種方式是通過通信控件或WindowsAPI函數(shù)間接對LCR、LSR、波特率因子寄存器進(jìn)行相關(guān)操作。因此本系統(tǒng)也使用MSComm控件,而WindowsAPI函數(shù)更適合在多現(xiàn)程領(lǐng)域應(yīng)用。