計算機串口與單片機通訊測試系統(tǒng)的實現(xiàn)
1 引 言
本文引用地址:http://butianyuan.cn/article/172038.htm串行通訊接口標(biāo)準(zhǔn)經(jīng)過使用和發(fā)展,目前已有多種,不過都是在RS-232C的基礎(chǔ)上改進而形成的。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信號入口(串口)可以輸入信號,對串口和單片機的通訊進行字符、數(shù)字、顯示等測試。
3 測試方法和內(nèi)容
由串口向單片機接口進行通訊、發(fā)送數(shù)據(jù)和返回設(shè)備狀態(tài),而傳輸協(xié)議的選擇對于通訊雙方至關(guān)重要。針對系統(tǒng)的測試主要是常規(guī)測試,所以選擇了面向字符的同步協(xié)議,如圖2所示。
這種協(xié)議的典型代表是IBM公司的二進制同步傳輸(BSC)協(xié)議,他的特點是一次傳送若干個字符組成的數(shù)據(jù)塊,而不是只傳送一個字符,并規(guī)定了10個字符作為這個數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個傳輸過程的控制信息,他們叫做通信控制字。此系統(tǒng)會在測試時嚴(yán)格依照協(xié)議對單片機接受端進行數(shù)據(jù)發(fā)送,從端口發(fā)送數(shù)據(jù)校驗碼進行測試。而數(shù)據(jù)前的SYN主要起聯(lián)絡(luò)作用,SOH為序始字符。數(shù)據(jù)塊將傳送正式的測試字符,測試字符包括數(shù)字、漢字、字符等進行發(fā)送,單片機(下位機)將進行相應(yīng)顯示,顯示完成后,PC機(上位機)將有本地回顯,回顯出發(fā)送的內(nèi)容和接收到的數(shù)據(jù)是否顯示一致。如果顯示一致,則測試系統(tǒng)將會發(fā)出串口和單片機連接成功的標(biāo)志;如果不能一致顯示,或者出現(xiàn)亂碼以及出現(xiàn)數(shù)據(jù)錯位,或者單片機難以接受上位機數(shù)據(jù)。
類似這些情況,此系統(tǒng)會開始利用二進制編碼進行位校驗,當(dāng)接口和單片機不能通訊時,可能出現(xiàn)硬件或者軟件的情況。測試系統(tǒng)會有專門的模塊進行處理,將會對通訊過程進行再次發(fā)送,如果發(fā)送后,得不到單片機的回應(yīng)信號則說明硬件電路連接存在問題。而出現(xiàn)不能正常顯示等情況,則系統(tǒng)會對發(fā)出的數(shù)據(jù)進行位分析,自動對發(fā)送的測試數(shù)據(jù)減少其內(nèi)容,并重新檢測協(xié)議的執(zhí)行,以確定協(xié)議上無錯。檢測是否為硬件的電路產(chǎn)生的干擾。因為可測試多臺下位機,所以,數(shù)據(jù)為廣播方式發(fā)送,測試時可調(diào)整為點-點的發(fā)送方式。而系統(tǒng)會在接受到正常返回信號后,自動正常回顯。
測試過程中,系統(tǒng)自動調(diào)整測試順序,以最快的速度對所有下位機進行測試,常規(guī)情況下是順序測試。如果某個單片機和串口通信出現(xiàn)問題,則系統(tǒng)會跳過出問題的目標(biāo)機,繼續(xù)向下檢測,并同時記錄下該機的問題。
在所有目標(biāo)機被測試完成后,對出問題的機器再進行點點的測試,以確定其狀況和問題所在。如果多目標(biāo)機出現(xiàn)問題,則可對他們同時采取處理,啟用多個進程進行實現(xiàn),以提高效率。該系統(tǒng)最多可同時對8個目標(biāo)機進行檢測,超過8個,系統(tǒng)會自動進行任務(wù)保存,以進行第二批處理。
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ù)。
評論