VB6.0環(huán)境下基于USB的虛擬串口通訊實現(xiàn)
摘要:以FTDI公司的FT232BL芯片為核心設(shè)計并實現(xiàn)了基于USB接口的計算機與單片機之間的虛擬串口通訊。單片機采用Philips公司P89系列單片機,完成數(shù)據(jù)的存儲。計算機在Windows環(huán)境下利用MSComm通訊控件實現(xiàn)上位機與下位機之間的數(shù)據(jù)傳輸。在此提出了PC機對虛擬串口的自動識別方法,并提供了程序的源代碼。實驗結(jié)果表明,用虛擬串口實現(xiàn)計算機與單片機之間的USB通信,具有速度快,軟件實現(xiàn)簡單等優(yōu)點。
關(guān)鍵詞:VB6.0;USB口;FT232BL;虛擬串口
0 引言
數(shù)據(jù)傳輸是現(xiàn)代通訊過程中的一個重要環(huán)節(jié),在數(shù)據(jù)傳輸過程中,不僅要求數(shù)據(jù)傳輸?shù)臏?zhǔn)確率要高,而且要求速度快、連接方便。傳統(tǒng)的RS 232串口通訊和并口通訊都存在傳輸速度低、擴展性差、安裝麻煩等缺點,而基于USB接口的數(shù)據(jù)傳輸系統(tǒng)能夠較好地解決這些問題。目前,USB接口以其傳輸速率高、即插即用、支持熱插拔等優(yōu)點,逐步成為PC機的標(biāo)準(zhǔn)接口。
本文中的數(shù)據(jù)傳輸系統(tǒng)采用了USB接口進行上位機與下位機之間的數(shù)據(jù)通訊。下位機采用Philips公司P89系列單片機,完成數(shù)據(jù)的存儲。上位機通過VB6.0編程,實現(xiàn)上位機與下位機之間的數(shù)據(jù)傳輸。
1 數(shù)據(jù)傳輸系統(tǒng)的總體設(shè)計
系統(tǒng)的硬件部分主要包括2部分:上位機端和下位機端。上位機采用PC機或筆記本電腦,操作系統(tǒng)為Windows XP,實現(xiàn)上位機和下位機之間的數(shù)據(jù)傳輸、顯示、處理、存儲及查詢功能。系統(tǒng)的下位機采用philips公司P89系列單片機,完成數(shù)據(jù)的存儲。下位機為一個手持的數(shù)據(jù)存儲儀,由USB轉(zhuǎn)串口數(shù)據(jù)轉(zhuǎn)換模塊、TTL轉(zhuǎn)RS 422總線模塊、中央處理模塊、顯示模塊、存儲模塊、電源模塊等組成。上位機與下位機的連接利用PC機自帶的USB接口,原理框圖如圖1所示。
把數(shù)據(jù)記錄卡插入數(shù)據(jù)存儲儀內(nèi),可把卡內(nèi)數(shù)據(jù)轉(zhuǎn)存到存儲模塊。數(shù)據(jù)存儲儀通過USB口與PC機連接,把所存數(shù)據(jù)傳輸?shù)缴衔粰C,上位機對數(shù)據(jù)進行顯示、處理及存儲。
系統(tǒng)采用FTDI公司的FT232BL芯片作為USB轉(zhuǎn)串口模塊,可以和單片機的內(nèi)置串口直接連接,使單片機通過USB口和PC機通訊。芯片一方面可以接收從PC機發(fā)來的USB數(shù)據(jù),并將其轉(zhuǎn)換為串行I/O數(shù)據(jù)格式發(fā)送給單片機串口;另一方面可把單片機從串口發(fā)出的數(shù)據(jù)轉(zhuǎn)換為USB的數(shù)據(jù)格式傳回PC機。與其他USB接口芯片相比,用FT232BL芯片進行USB外設(shè)開發(fā),只需熟悉單片機編程及簡單的VC或VB編程,而無需考慮固件設(shè)計以及驅(qū)動程序的編寫,從而能大大縮短USB外設(shè)產(chǎn)品的開發(fā)周期。
2 硬件電路設(shè)計
2.1 FT232BL芯片簡介
FT232BL內(nèi)部結(jié)構(gòu)如圖2所示,主要由USB收發(fā)器、串行接口引擎(SIE)、USB協(xié)議引擎、通用異步收發(fā)(UART)先進先出(FIFO)控制器和通用異步收發(fā)(UART)轉(zhuǎn)換器等構(gòu)成。USB收發(fā)器提供USB1.1/2.0全速物理接口到USB總線;串行接口引擎主要用于完成USB數(shù)據(jù)的串/并雙向轉(zhuǎn)換,并按照USB2.0規(guī)范來完成USB數(shù)據(jù)流的位填充/位反填充,以及循環(huán)冗余校驗碼(CRC5/CRC16)的產(chǎn)生和檢錯;USB協(xié)議引擎管理來自USB設(shè)備控制端口的數(shù)據(jù)流;通用異步收發(fā)(UART)先進先出(FIFO)控制器處理收發(fā)通道緩沖與通用異步收發(fā)(UART)寄存器之間的數(shù)據(jù)傳遞。
通用異步收發(fā)器(UART)實現(xiàn)與單片機(如P89V51RD2)的串行接口,通過TXD,RXD,GND3根數(shù)據(jù)線分別與單片機的RXD,TXD,GND相連,完成與單片機的數(shù)據(jù)交換。FT232BL內(nèi)含2個數(shù)據(jù)緩沖區(qū),一個是128 B的發(fā)送緩沖區(qū),另一個是384 B的接收緩沖區(qū)。它們均用于USB數(shù)據(jù)與串行I/O數(shù)據(jù)的交換緩沖區(qū)。
另外,F(xiàn)T232BL還包括1個內(nèi)置的3.3 V穩(wěn)壓器,1個6 MHz的振蕩器、8倍頻的時鐘倍頻器、USB鎖相環(huán)和電擦除只讀存儲器接口。
2.2 FT232BL電路設(shè)計
根據(jù)USB設(shè)計規(guī)范,USB設(shè)備有總線供電和自供電2種方式??紤]到USB通訊功能僅在連接PC機時使用,所以,F(xiàn)T232BL芯片由USB總線供電,電路其他部分通過雙觸點開關(guān)的一個常開觸點連到USB總線電源正極上。典型硬件電路如圖3所示。采用上電復(fù)位方式,通過輸出可使單片機復(fù)位。時鐘電路采用1個6 MHz無源晶振及2個27 pF的陶瓷電容組成。PWREN腳與單片機的P1.7相連,用于判斷USB總線是處于掛起狀態(tài)還是正常狀態(tài)。在USB接口的電源端接一個磁珠,用以減少主機與設(shè)備的干擾;電源端增加了去耦電容和旁路電容,以提高電路的抗干擾性。在印刷電路板的設(shè)計中,2根串行數(shù)據(jù)線的走線應(yīng)可能短,并且長度相等。圖3中的93C46(93C56或93C66)是一片電擦除只讀存儲器(E2PROM),用于存儲產(chǎn)品的VID,PID,設(shè)備序列號及一些說明性文字等。這需要用戶自己編寫,編寫的應(yīng)用程序由FTDI公司提供。用戶只需運行相應(yīng)的VB程序,寫入相應(yīng)的信息即可。該電擦除只讀存儲器(E2PROM)是可選的。若沒有電擦除只讀存儲器(E2PROM),F(xiàn)T232BL將使用默認(rèn)的VID,PID(進程標(biāo)識符),產(chǎn)品描述符和電源描述符,并且沒有設(shè)備的序列號。
3 上位機的軟件設(shè)計與編程
3.1 虛擬串口驅(qū)動程序安裝
當(dāng)下位機連接到上位機的USB接口時,上位機會檢測到新硬件,這時需要安裝一個從FTDI公司網(wǎng)站上免費下載的虛擬串口(VCP)驅(qū)動程序。該驅(qū)動程序適用于Windows 98/2000/ME/XP等不同操作系統(tǒng)。用戶可以在這虛擬串口上進行應(yīng)用程序的開發(fā)。該虛擬串口可以像一個標(biāo)準(zhǔn)的物理串口那樣被訪問,可本質(zhì)上所有針對虛擬串口的數(shù)據(jù)通信都是通過USB總線完成的。
3.2 上位機的軟件編程
上位機軟件采用VB 6.0提供的串口通訊MSComm控件進行應(yīng)用程序的編寫。MSComm控件提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能,它有2種處理通信的方式:一種是事件驅(qū)動方式,當(dāng)串口發(fā)生事件或錯誤時,MSComm控件會產(chǎn)生OnComm事件,程序可以捕獲該事件進行響應(yīng)處理;另一種是查詢方式,在程序中查詢MSComm控件的CommEvent屬性的值是否發(fā)生變化,從而確定響應(yīng)處理。
3.2.1 虛擬串口的自動識別
一般來說,上位機操作系統(tǒng)為FT232BL芯片分配的虛擬COM端口是不確定的,下位機連接到同一上位機的不同USB口,其虛擬COM端口號不同,下位機連接到不同的上位機,虛擬COM端口號更是無法確定。為了讓上位機能夠自動識別下位機連接的虛擬COM口,程序中采用了循環(huán)訪問各COM口的方式,如果該COM口是存在的則按照通訊協(xié)議向該端口發(fā)送“3CH”,如果該COM口不存在,則跳過,判斷下一個COM口。如果收到下位機回送的“3CH”,則說明通訊檢測成功。
程序代碼如下:
4 系統(tǒng)運行結(jié)果
上位機可以從下位機中讀取最多31組數(shù)據(jù)(數(shù)據(jù)組數(shù)由下位機存儲器容量決定),每組數(shù)據(jù)8 KB,用戶可根據(jù)需要自行選擇查看各組數(shù)據(jù)。圖4是數(shù)據(jù)傳輸系統(tǒng)實際運行的結(jié)果。
5 結(jié)語
該系統(tǒng)通過調(diào)試,已成功應(yīng)用到項目中,運行穩(wěn)定、可靠,滿足了設(shè)計需求和功能,對開發(fā)類似的系統(tǒng)具有很好的參考價值。