USB虛擬串口通信實(shí)現(xiàn)
摘要 以一種高度集成的USB總線轉(zhuǎn)接芯片CH341為核心,設(shè)計(jì)并實(shí)現(xiàn)了基于USB接口的PC機(jī)與下位機(jī)的虛擬串口通信。上位機(jī)在Windows環(huán)境下利用MSComm控件實(shí)現(xiàn)與下位機(jī)通信,介紹了USB轉(zhuǎn)虛擬串口的實(shí)現(xiàn)方法,并基于該虛擬串口編寫了智能家居控制應(yīng)用軟件。實(shí)驗(yàn)測(cè)試表明,采用虛擬串口實(shí)現(xiàn)上位機(jī)與單片機(jī)通信,具有結(jié)構(gòu)簡(jiǎn)單、速度快和易于軟件開發(fā)等特點(diǎn),能滿足于各種串口通信場(chǎng)合。
在嵌入式系統(tǒng)中,異步串行通信接口多作為標(biāo)準(zhǔn)外圍設(shè)備出現(xiàn)。隨著大量支持USB的個(gè)人電腦的普及,易于使用的接口。USB接口逐步成為PC機(jī)的標(biāo)準(zhǔn)接口,使得對(duì)USB接口相關(guān)應(yīng)用軟件的開發(fā)和外圍設(shè)備的研究顯得越來越重要。
本文中的智能家居控制系統(tǒng)采用基于USB的虛擬串口同中心匯聚節(jié)點(diǎn)通信,中心匯聚節(jié)點(diǎn)采用意法半導(dǎo)體公司STM8S103系列微處理器,實(shí)現(xiàn)數(shù)據(jù)的接收與發(fā)送。上位機(jī)系統(tǒng)控制軟件在Windows環(huán)境下通過VC++6.0編程開發(fā),基于USB的虛擬串口具有傳輸數(shù)據(jù)穩(wěn)定、安裝簡(jiǎn)便、即插即用等特點(diǎn)。
1 控制系統(tǒng)總體設(shè)計(jì)
系統(tǒng)總體結(jié)構(gòu)如圖1所示,主要由3部分組成,基于PC機(jī)的上位機(jī)系統(tǒng)控制軟件、中心匯聚節(jié)點(diǎn)和各家電子設(shè)備節(jié)點(diǎn)。中心匯聚節(jié)點(diǎn)和各家電子設(shè)備節(jié)點(diǎn)均搭載433無線通信模塊。各家電子設(shè)備節(jié)點(diǎn)可以根據(jù)自身設(shè)備的狀態(tài)信息,整合成一定格式的數(shù)據(jù)幀,經(jīng)433無線模塊將數(shù)據(jù)信息傳送給中心匯聚節(jié)點(diǎn),而后通過基于USB的虛擬串口將數(shù)據(jù)轉(zhuǎn)發(fā)給上位機(jī)系統(tǒng)控制軟件,上位機(jī)軟件實(shí)時(shí)顯示家電子設(shè)備的狀態(tài)信息。同樣,當(dāng)用戶需要控制和管理家電設(shè)備時(shí),控制指令經(jīng)虛擬串口和433無線模塊將指令下發(fā)至相應(yīng)家電設(shè)備,根據(jù)指令執(zhí)行相應(yīng)操作。
2 虛擬串口硬件電路設(shè)計(jì)
2.1 芯片簡(jiǎn)介
CH341是一種高度集成的USB總線轉(zhuǎn)接芯片,通過USB總線提供異步串口、打印口、并口以及常用的2線和4線等同步串行接口。在異步串口方式下,CH341提供串口發(fā)送使能、串口接收就緒等交互式的速率控制信號(hào)以及常用的MODEM聯(lián)絡(luò)信號(hào),用于為計(jì)算機(jī)擴(kuò)展異步串口,或者將普通的串口設(shè)備直接升級(jí)到USB總線。具備USB全速接口,兼容USB V2.0,外圍器件簡(jiǎn)單,只需晶振和電容。完全兼容計(jì)算機(jī)端Windows操作系統(tǒng)下的串口應(yīng)用程序。硬件全雙工串口,內(nèi)置收發(fā)緩沖區(qū),支持通訊速率50bit·s-1~2Mbit·s-1和5、6、7或者8位數(shù)據(jù)位、奇校驗(yàn)、偶校驗(yàn)、空白、標(biāo)志以及無校驗(yàn)、串口發(fā)送使能、串口接收就緒等傳輸速率控制信號(hào)和MODEM聯(lián)絡(luò)信號(hào)。
2.2 串口硬件電路設(shè)計(jì)
USB轉(zhuǎn)虛擬串口部分電路主要由CH341和STM8S103構(gòu)成,其電路原理如圖2所示,設(shè)備采用USB總線供電方式,時(shí)鐘電路由12 MHz晶振搭配2個(gè)20 pF電容構(gòu)成,將CH341芯片的SDA和SCL引腳懸空,從而使其工作于異步串行口模式,采用常用的三線式串口通信方式,將CH341芯片的RXD、TXD、GND引腳分別于單片機(jī)STM8S103的TXD、RXD和GND引腳相連。在USB接口的電源端連接一個(gè)磁珠,以減少PC機(jī)與設(shè)備的干擾,同時(shí)在電源端增加去耦和旁路電容,以提高設(shè)備的抗干擾能力。
3 上位機(jī)系統(tǒng)軟件設(shè)計(jì)
3.1 USB轉(zhuǎn)虛擬串口驅(qū)動(dòng)安裝
當(dāng)完成硬件連接后,為實(shí)現(xiàn)正常的串口通信,還需為PC機(jī)安裝相應(yīng)的驅(qū)動(dòng)程序。從互聯(lián)網(wǎng)上可下載相應(yīng)芯片的驅(qū)動(dòng)程序,因本設(shè)計(jì)選用USB總線轉(zhuǎn)接芯片為CH341,故下載并安裝對(duì)應(yīng)的CH341 SER驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序支持Windows 98//XP/Win7 32位/64位等操作系統(tǒng)。該虛擬串口實(shí)現(xiàn)仿真標(biāo)準(zhǔn)串口,完全兼容計(jì)算機(jī)端Windows操作系統(tǒng)環(huán)境下的串口應(yīng)用程序,用戶可以像訪問標(biāo)準(zhǔn)串口設(shè)備一樣對(duì)該虛擬串口進(jìn)行通信,但實(shí)質(zhì)其數(shù)據(jù)通信則是通過USB總線完成。待安裝完驅(qū)動(dòng)程序后,便可以對(duì)該設(shè)備進(jìn)行基于串口的上位機(jī)應(yīng)用程序開發(fā)。
3.2 系統(tǒng)控制軟件設(shè)計(jì)
上位機(jī)控制軟件在VC++6.0環(huán)境下開發(fā),采用VC++6.0提供的MSComm控件進(jìn)行應(yīng)用程序設(shè)計(jì)。MSCOM控件提供了完善的數(shù)據(jù)接收與發(fā)送功能,支持事件驅(qū)動(dòng)和查詢兩種通信模式。事件驅(qū)動(dòng)方式下,當(dāng)有串口發(fā)生事件或錯(cuò)誤時(shí)便響應(yīng)OnComm事件處理程序;查詢模式下,則通過定期查詢MSComm控件的ComEvent屬性變化來進(jìn)行數(shù)據(jù)處理??紤]到控制系統(tǒng)的實(shí)時(shí)響應(yīng)能力,上位機(jī)應(yīng)用軟件采用事件驅(qū)動(dòng)方式,即當(dāng)串口有數(shù)據(jù)接收時(shí)便響應(yīng)OnComm事件,然后在OnComm事件處理函數(shù)中加入相應(yīng)的通信處理代碼。系統(tǒng)控制軟件操作界面如圖3所示。
3.2.1 通信參數(shù)設(shè)置
為保證控制系統(tǒng)能成功進(jìn)行串口通信,系統(tǒng)控制軟件與匯聚節(jié)點(diǎn)設(shè)備應(yīng)設(shè)置相同的波特率、數(shù)據(jù)位等通信參數(shù),此外因?yàn)镻C機(jī)為USB總線轉(zhuǎn)接芯片CH341分配的虛擬串口是不確定的,為此設(shè)計(jì)了通信參數(shù)設(shè)置對(duì)話框來對(duì)虛擬串口的通信參數(shù)進(jìn)行設(shè)置,界面如圖4所示。
3.2.2 通信數(shù)據(jù)處理
上位機(jī)系統(tǒng)控制軟件主要負(fù)責(zé)用戶控制指令的發(fā)送與接收,同時(shí)及時(shí)更新顯示當(dāng)前家用電子設(shè)備的狀態(tài)信息。應(yīng)用軟件主要包含系統(tǒng)初始化程序、串口接收與發(fā)送程序和數(shù)據(jù)處理與顯示程序3部分。初始化程序主要負(fù)責(zé)系統(tǒng)的串口通信參數(shù)配置;串口接收與發(fā)送程序則負(fù)責(zé)將數(shù)據(jù)組合成數(shù)據(jù)幀,并發(fā)送或接收匯聚節(jié)點(diǎn)數(shù)據(jù)幀;數(shù)據(jù)處理與顯示程序則根據(jù)不同的數(shù)據(jù)幀進(jìn)行相應(yīng)處理,并及時(shí)更新對(duì)應(yīng)家電子設(shè)備的控制界面,程序流程如圖5所示。
4 實(shí)驗(yàn)驗(yàn)證
為進(jìn)一步驗(yàn)證USB轉(zhuǎn)虛擬串口通信在具體系統(tǒng)應(yīng)用中的可靠性和穩(wěn)定性,按照?qǐng)D1搭建測(cè)試系統(tǒng),在PC機(jī)上安裝好對(duì)應(yīng)的USB轉(zhuǎn)虛擬串口驅(qū)動(dòng)程序,打開上位機(jī)系統(tǒng)控制軟件,選擇對(duì)應(yīng)的串口,設(shè)置與中心匯聚節(jié)點(diǎn)相匹配的串口通信參數(shù),在應(yīng)用軟件中選擇加濕器操作界面,改變界面狀態(tài)以發(fā)送控制指令,查看對(duì)應(yīng)的加濕器是否執(zhí)行相應(yīng)的操作;通過手動(dòng)改變加濕器的狀態(tài),查看上位機(jī)系統(tǒng)控制軟件中加濕器界面狀態(tài)是否及時(shí)更新,測(cè)試結(jié)果如圖6所示,實(shí)驗(yàn)測(cè)試表明系統(tǒng)響應(yīng)速度快、穩(wěn)定性強(qiáng),USB轉(zhuǎn)虛擬串口通信能夠滿足實(shí)際控制系統(tǒng)的通信需求。
5 結(jié)束語
本文設(shè)計(jì)了基于USB虛擬串口通信技術(shù)的串口通信模塊,介紹了其設(shè)計(jì)方法與原理,開發(fā)了基于虛擬串口通信的上位機(jī)系統(tǒng)控制軟件,并將其應(yīng)用于智能家居控制系統(tǒng)。采用USB虛擬串口解決了傳統(tǒng)串口逐漸消失、擴(kuò)展性差、安裝繁瑣等問題,實(shí)驗(yàn)測(cè)試表明基于USB的虛擬串口具有傳輸速率穩(wěn)定、即插即用等特點(diǎn)。