1 引 言
串行通訊接口標(biāo)準(zhǔn)經(jīng)過使用和發(fā)展,目前已有多種,不過都是在RS-232C的基礎(chǔ)上改進(jìn)而形成的。RS-232C標(biāo)準(zhǔn)是美國EIA(電子工業(yè)聯(lián)合會)與 BELL公司一起開發(fā)并于1969年公布的通訊協(xié)議。因此,他作為一種標(biāo)準(zhǔn),目前已在微機通訊接口中被廣泛采用,他不僅已被內(nèi)置于每臺計算機,同時也已被內(nèi)置于從微處理器到主機的多種類型的計算機及其相連設(shè)備。而串口與單片機的通訊技術(shù)可以解決多臺下位機的多內(nèi)容同時顯示,還可以方便地完成多機通訊技術(shù)、多數(shù)據(jù)處理等優(yōu)點。但是當(dāng)同時用到兩種通信方式時,很可能產(chǎn)生串口沖突或其他不可預(yù)料的錯誤,對開發(fā)工作極其不利。
所以,此系統(tǒng)解決了這種開發(fā)中的問題,依靠軟件仿真數(shù)據(jù)信號的發(fā)送、接收和多種通訊方式的測試。利用簡單的硬件連接去檢測串口和單片機通訊是否能正常工作。
2 系統(tǒng)硬件組成
由圖1可看出,該系統(tǒng)主要由軟硬件兩部分構(gòu)成,硬件平臺是由PC機串口發(fā)送到下位機一條通道。圖中光耦電路完成PC機信號RS-232電平到TTL電平的轉(zhuǎn)換。當(dāng)PC機輸入口為RS-232高電平時,二極管VD1及光耦電路導(dǎo)通,使得三極管VT1導(dǎo)通,8031接收口RXD被定位于TTL低電平(0 V);當(dāng)輸入口為RS-232低電平時,二極管VD1及光耦電路截止,使得三極管VT1截止,RXD被定位于TTL高電平(+5 V)。
另外軟件系統(tǒng)對由PC信號入口(串口)可以輸入信號,對串口和單片機的通訊進(jìn)行字符、數(shù)字、顯示等測試。
3 測試方法和內(nèi)容
由串口向單片機接口進(jìn)行通訊、發(fā)送數(shù)據(jù)和返回設(shè)備狀態(tài),而傳輸協(xié)議的選擇對于通訊雙方至關(guān)重要。針對系統(tǒng)的測試主要是常規(guī)測試,所以選擇了面向字符的同步協(xié)議,如圖2所示。
這種協(xié)議的典型代表是IBM公司的二進(jìn)制同步傳輸(BSC)協(xié)議,他的特點是一次傳送若干個字符組成的數(shù)據(jù)塊,而不是只傳送一個字符,并規(guī)定了10個字符作為這個數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個傳輸過程的控制信息,他們叫做通信控制字。此系統(tǒng)會在測試時嚴(yán)格依照協(xié)議對單片機接受端進(jìn)行數(shù)據(jù)發(fā)送,從端口發(fā)送數(shù)據(jù)校驗碼進(jìn)行測試。而數(shù)據(jù)前的SYN主要起聯(lián)絡(luò)作用,SOH為序始字符。數(shù)據(jù)塊將傳送正式的測試字符,測試字符包括數(shù)字、漢字、字符等進(jìn)行發(fā)送,單片機(下位機)將進(jìn)行相應(yīng)顯示,顯示完成后,PC機(上位機)將有本地回顯,回顯出發(fā)送的內(nèi)容和接收到的數(shù)據(jù)是否顯示一致。如果顯示一致,則測試系統(tǒng)將會發(fā)出串口和單片機連接成功的標(biāo)志;如果不能一致顯示,或者出現(xiàn)亂碼以及出現(xiàn)數(shù)據(jù)錯位,或者單片機難以接受上位機數(shù)據(jù)。
類似這些情況,此系統(tǒng)會開始利用二進(jìn)制編碼進(jìn)行位校驗,當(dāng)接口和單片機不能通訊時,可能出現(xiàn)硬件或者軟件的情況。測試系統(tǒng)會有專門的模塊進(jìn)行處理,將會對通訊過程進(jìn)行再次發(fā)送,如果發(fā)送后,得不到單片機的回應(yīng)信號則說明硬件電路連接存在問題。而出現(xiàn)不能正常顯示等情況,則系統(tǒng)會對發(fā)出的數(shù)據(jù)進(jìn)行位分析,自動對發(fā)送的測試數(shù)據(jù)減少其內(nèi)容,并重新檢測協(xié)議的執(zhí)行,以確定協(xié)議上無錯。檢測是否為硬件的電路產(chǎn)生的干擾。因為可測試多臺下位機,所以,數(shù)據(jù)為廣播方式發(fā)送,測試時可調(diào)整為點-點的發(fā)送方式。而系統(tǒng)會在接受到正常返回信號后,自動正?;仫@。
測試過程中,系統(tǒng)自動調(diào)整測試順序,以最快的速度對所有下位機進(jìn)行測試,常規(guī)情況下是順序測試。如果某個單片機和串口通信出現(xiàn)問題,則系統(tǒng)會跳過出問題的目標(biāo)機,繼續(xù)向下檢測,并同時記錄下該機的問題。
在所有目標(biāo)機被測試完成后,對出問題的機器再進(jìn)行點點的測試,以確定其狀況和問題所在。如果多目標(biāo)機出現(xiàn)問題,則可對他們同時采取處理,啟用多個進(jìn)程進(jìn)行實現(xiàn),以提高效率。該系統(tǒng)最多可同時對8個目標(biāo)機進(jìn)行檢測,超過8個,系統(tǒng)會自動進(jìn)行任務(wù)保存,以進(jìn)行第二批處理。
4 系統(tǒng)軟件具體實現(xiàn)
軟件系統(tǒng)主要完成的功能是單片機串口的初始化和雙機通訊,完成軟件測試。而單片機初始化包括下面內(nèi)容:串行控制器SCON的設(shè)置,定時器方式控制寄存器TMOD及T1的定時初始值的設(shè)置,專用寄存器PCON的SMOD位的設(shè)置。
在測試開始時,PC機先送出測試開始標(biāo)志(本系統(tǒng)用ASCII碼的1AH),接著發(fā)送各下位機的地址信號,再送出本次測試要發(fā)送的數(shù)據(jù)個數(shù)信息,最后是連續(xù)發(fā)送出測試數(shù)據(jù)。下位機采用查詢方式接受數(shù)據(jù),當(dāng)RI被激活時,讀入數(shù)據(jù),判斷是否是1AH,如果是,則繼續(xù)等待接受下一個數(shù)據(jù),判斷是否在呼叫自己,若是,則往下接受第3個數(shù),即本次要接受的數(shù)據(jù)個數(shù),并按照其所給信息相應(yīng)設(shè)定往下要連續(xù)接受的數(shù)據(jù)個05數(shù)。
上位機的串行通訊本系統(tǒng)采用異步串行通訊,該通訊測試程序是順序結(jié)構(gòu)。主要操作是上位機向下位機發(fā)送通訊測試開始標(biāo)志“1AH”和下位機的聯(lián)絡(luò)地址,指令下位機接受數(shù)據(jù)個數(shù)的信息以及測試數(shù)據(jù)的正確顯示。流程圖如圖3所示。
上位機測試系統(tǒng)數(shù)據(jù)測試界面如圖4所示。
各臺下位機用查詢方式接收數(shù)據(jù),等待接收到數(shù)據(jù),進(jìn)行輸出對比。如果顯示輸出與發(fā)送一致,則說明通訊測試成功。單臺下位機接受流程圖如圖5所示。
5 結(jié) 語
該系統(tǒng)充分利用了計算機串口和外設(shè)進(jìn)行通訊的功能,該系統(tǒng)還可以稍加改動與其余類型單片機進(jìn)行通訊測試。由于串口使用簡單,通訊方便,越來越多的外設(shè)測試系統(tǒng)利用此種技術(shù)。此測試系統(tǒng)具有使用硬件少、可靠性高的優(yōu)點。經(jīng)實踐證明,在多種環(huán)境下運行情況良好。
參考文獻(xiàn)
[1] Charles Wright.Visual C++程序員實用大全[M].北京:中國水利水電出版社,2001.
[2] 孫涵芳,徐愛卿.MCS-51/96系列單片機原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,1988.
[3] 余小平,奚大順.PC機并口與單片機間的數(shù)據(jù)傳送[D].2001嵌入式系統(tǒng)及單片機國際學(xué)術(shù) 交流會論文,2001.
[4] 張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué) 版社,1998.
[5] 馬明建,周長城.?dāng)?shù)據(jù)采集與處理技術(shù)[M].西安:西安交通大學(xué)出版社,1998.
[6] 張磊.虛擬儀器測試系統(tǒng)中數(shù)據(jù)共享的實現(xiàn)[J].計算機自動測量與控制,2000,