計(jì)算機(jī)串口與單片機(jī)通訊測(cè)試系統(tǒng)的實(shí)現(xiàn)
1 引 言
本文引用地址:http://m.butianyuan.cn/article/172038.htm串行通訊接口標(biāo)準(zhǔn)經(jīng)過使用和發(fā)展,目前已有多種,不過都是在RS-232C的基礎(chǔ)上改進(jìn)而形成的。RS-232C標(biāo)準(zhǔn)是美國(guó)EIA(電子工業(yè)聯(lián)合會(huì))與 BELL公司一起開發(fā)并于1969年公布的通訊協(xié)議。因此,他作為一種標(biāo)準(zhǔn),目前已在微機(jī)通訊接口中被廣泛采用,他不僅已被內(nèi)置于每臺(tái)計(jì)算機(jī),同時(shí)也已被內(nèi)置于從微處理器到主機(jī)的多種類型的計(jì)算機(jī)及其相連設(shè)備。而串口與單片機(jī)的通訊技術(shù)可以解決多臺(tái)下位機(jī)的多內(nèi)容同時(shí)顯示,還可以方便地完成多機(jī)通訊技術(shù)、多數(shù)據(jù)處理等優(yōu)點(diǎn)。但是當(dāng)同時(shí)用到兩種通信方式時(shí),很可能產(chǎn)生串口沖突或其他不可預(yù)料的錯(cuò)誤,對(duì)開發(fā)工作極其不利。
所以,此系統(tǒng)解決了這種開發(fā)中的問題,依靠軟件仿真數(shù)據(jù)信號(hào)的發(fā)送、接收和多種通訊方式的測(cè)試。利用簡(jiǎn)單的硬件連接去檢測(cè)串口和單片機(jī)通訊是否能正常工作。
2 系統(tǒng)硬件組成
由圖1可看出,該系統(tǒng)主要由軟硬件兩部分構(gòu)成,硬件平臺(tái)是由PC機(jī)串口發(fā)送到下位機(jī)一條通道。圖中光耦電路完成PC機(jī)信號(hào)RS-232電平到TTL電平的轉(zhuǎn)換。當(dāng)PC機(jī)輸入口為RS-232高電平時(shí),二極管VD1及光耦電路導(dǎo)通,使得三極管VT1導(dǎo)通,8031接收口RXD被定位于TTL低電平(0 V);當(dāng)輸入口為RS-232低電平時(shí),二極管VD1及光耦電路截止,使得三極管VT1截止,RXD被定位于TTL高電平(+5 V)。
另外軟件系統(tǒng)對(duì)由PC信號(hào)入口(串口)可以輸入信號(hào),對(duì)串口和單片機(jī)的通訊進(jìn)行字符、數(shù)字、顯示等測(cè)試。
3 測(cè)試方法和內(nèi)容
由串口向單片機(jī)接口進(jìn)行通訊、發(fā)送數(shù)據(jù)和返回設(shè)備狀態(tài),而傳輸協(xié)議的選擇對(duì)于通訊雙方至關(guān)重要。針對(duì)系統(tǒng)的測(cè)試主要是常規(guī)測(cè)試,所以選擇了面向字符的同步協(xié)議,如圖2所示。
這種協(xié)議的典型代表是IBM公司的二進(jìn)制同步傳輸(BSC)協(xié)議,他的特點(diǎn)是一次傳送若干個(gè)字符組成的數(shù)據(jù)塊,而不是只傳送一個(gè)字符,并規(guī)定了10個(gè)字符作為這個(gè)數(shù)據(jù)塊的開頭與結(jié)束標(biāo)志以及整個(gè)傳輸過程的控制信息,他們叫做通信控制字。此系統(tǒng)會(huì)在測(cè)試時(shí)嚴(yán)格依照協(xié)議對(duì)單片機(jī)接受端進(jìn)行數(shù)據(jù)發(fā)送,從端口發(fā)送數(shù)據(jù)校驗(yàn)碼進(jìn)行測(cè)試。而數(shù)據(jù)前的SYN主要起聯(lián)絡(luò)作用,SOH為序始字符。數(shù)據(jù)塊將傳送正式的測(cè)試字符,測(cè)試字符包括數(shù)字、漢字、字符等進(jìn)行發(fā)送,單片機(jī)(下位機(jī))將進(jìn)行相應(yīng)顯示,顯示完成后,PC機(jī)(上位機(jī))將有本地回顯,回顯出發(fā)送的內(nèi)容和接收到的數(shù)據(jù)是否顯示一致。如果顯示一致,則測(cè)試系統(tǒng)將會(huì)發(fā)出串口和單片機(jī)連接成功的標(biāo)志;如果不能一致顯示,或者出現(xiàn)亂碼以及出現(xiàn)數(shù)據(jù)錯(cuò)位,或者單片機(jī)難以接受上位機(jī)數(shù)據(jù)。
類似這些情況,此系統(tǒng)會(huì)開始利用二進(jìn)制編碼進(jìn)行位校驗(yàn),當(dāng)接口和單片機(jī)不能通訊時(shí),可能出現(xiàn)硬件或者軟件的情況。測(cè)試系統(tǒng)會(huì)有專門的模塊進(jìn)行處理,將會(huì)對(duì)通訊過程進(jìn)行再次發(fā)送,如果發(fā)送后,得不到單片機(jī)的回應(yīng)信號(hào)則說明硬件電路連接存在問題。而出現(xiàn)不能正常顯示等情況,則系統(tǒng)會(huì)對(duì)發(fā)出的數(shù)據(jù)進(jìn)行位分析,自動(dòng)對(duì)發(fā)送的測(cè)試數(shù)據(jù)減少其內(nèi)容,并重新檢測(cè)協(xié)議的執(zhí)行,以確定協(xié)議上無錯(cuò)。檢測(cè)是否為硬件的電路產(chǎn)生的干擾。因?yàn)榭蓽y(cè)試多臺(tái)下位機(jī),所以,數(shù)據(jù)為廣播方式發(fā)送,測(cè)試時(shí)可調(diào)整為點(diǎn)-點(diǎn)的發(fā)送方式。而系統(tǒng)會(huì)在接受到正常返回信號(hào)后,自動(dòng)正?;仫@。
測(cè)試過程中,系統(tǒng)自動(dòng)調(diào)整測(cè)試順序,以最快的速度對(duì)所有下位機(jī)進(jìn)行測(cè)試,常規(guī)情況下是順序測(cè)試。如果某個(gè)單片機(jī)和串口通信出現(xiàn)問題,則系統(tǒng)會(huì)跳過出問題的目標(biāo)機(jī),繼續(xù)向下檢測(cè),并同時(shí)記錄下該機(jī)的問題。
在所有目標(biāo)機(jī)被測(cè)試完成后,對(duì)出問題的機(jī)器再進(jìn)行點(diǎn)點(diǎn)的測(cè)試,以確定其狀況和問題所在。如果多目標(biāo)機(jī)出現(xiàn)問題,則可對(duì)他們同時(shí)采取處理,啟用多個(gè)進(jìn)程進(jìn)行實(shí)現(xiàn),以提高效率。該系統(tǒng)最多可同時(shí)對(duì)8個(gè)目標(biāo)機(jī)進(jìn)行檢測(cè),超過8個(gè),系統(tǒng)會(huì)自動(dòng)進(jìn)行任務(wù)保存,以進(jìn)行第二批處理。
4 系統(tǒng)軟件具體實(shí)現(xiàn)
軟件系統(tǒng)主要完成的功能是單片機(jī)串口的初始化和雙機(jī)通訊,完成軟件測(cè)試。而單片機(jī)初始化包括下面內(nèi)容:串行控制器SCON的設(shè)置,定時(shí)器方式控制寄存器TMOD及T1的定時(shí)初始值的設(shè)置,專用寄存器PCON的SMOD位的設(shè)置。
在測(cè)試開始時(shí),PC機(jī)先送出測(cè)試開始標(biāo)志(本系統(tǒng)用ASCII碼的1AH),接著發(fā)送各下位機(jī)的地址信號(hào),再送出本次測(cè)試要發(fā)送的數(shù)據(jù)個(gè)數(shù)信息,最后是連續(xù)發(fā)送出測(cè)試數(shù)據(jù)。下位機(jī)采用查詢方式接受數(shù)據(jù),當(dāng)RI被激活時(shí),讀入數(shù)據(jù),判斷是否是1AH,如果是,則繼續(xù)等待接受下一個(gè)數(shù)據(jù),判斷是否在呼叫自己,若是,則往下接受第3個(gè)數(shù),即本次要接受的數(shù)據(jù)個(gè)數(shù),并按照其所給信息相應(yīng)設(shè)定往下要連續(xù)接受的數(shù)據(jù)個(gè)05數(shù)。
評(píng)論