PL2303單片機(jī)串口轉(zhuǎn)USB口實現(xiàn)串行通信
引言
隨著科學(xué)技術(shù)的快速發(fā)展,單片機(jī)的應(yīng)用已經(jīng)滲入到了生產(chǎn)、生活的方方面面,其應(yīng)用范圍越來越廣泛,應(yīng)用前景越來越好。基于單片機(jī)的開發(fā)應(yīng)用在目前創(chuàng)新技術(shù)發(fā)展中一支獨秀,非常受廣大科技愛好者、在校大學(xué)生以及科技開發(fā)工作者的青睞。多功能、超強(qiáng)型的單片機(jī)在市場上也層出不窮,為單片機(jī)的開發(fā)應(yīng)用提供了很好的基礎(chǔ)。目前,在單片機(jī)的應(yīng)用系統(tǒng)設(shè)計中,USB接口的使用越來越多,簡化了單片機(jī)系統(tǒng)與外部系統(tǒng)進(jìn)行信息交換的接口電路,提高了信息交換的可靠性及交換速度。目前市場上提供的各類型單片機(jī)品種中,有些型號的單片機(jī)在其內(nèi)部集成有USB接口部件,但大部分的單片機(jī)不含有USB接口電路。對芯片內(nèi)部不含有USB串行接口的單片機(jī),進(jìn)行USB接口設(shè)計時,要通過外圍接口芯片來實現(xiàn)USB串行接口,這樣的接口芯片,目前市場上已經(jīng)有很多種了。本文僅就采用單片機(jī)本身的串口通過外圍芯片PL2303來實現(xiàn)串口轉(zhuǎn)USB接口進(jìn)行介紹。
1 USB接口的實現(xiàn)
USB(Universal Serial Bus)是一種通用的串行總線技術(shù),它是通過PCI總線和PC的內(nèi)部系統(tǒng)數(shù)據(jù)線連接,實現(xiàn)數(shù)據(jù)的傳送,具有即插即用功能,支持熱插拔,兩個通信設(shè)備之間線纜長度可達(dá)5 m。
USB接口線有4條,其中兩條為電源線和地線(Vbus與GND),另外兩條是以差分形式傳遞信息的信號線(D+和D-),從而實現(xiàn)主機(jī)系統(tǒng)與USB設(shè)備之間的數(shù)據(jù)通信。含有USB接口的主機(jī)與含有USB接口的設(shè)備之間通信數(shù)據(jù)流的示意圖如圖1所示。
USB總線技術(shù)是基于分組交換方式的總線通信。它首先把數(shù)據(jù)分成若干塊,然后在每塊數(shù)據(jù)前添加上同步信號、包標(biāo)識,后面再添加上CRC校驗碼,形成USB數(shù)據(jù)包。USB通信總線使用差分輸出驅(qū)動器來控制數(shù)據(jù)信號在USB電纜上的傳送,即通過控制D+和D-線從空閑狀態(tài)到相反的邏輯電平,實現(xiàn)原端口的數(shù)據(jù)包發(fā)送,數(shù)據(jù)包發(fā)送完以后,信號線(D+)和(D-)上的輸出驅(qū)動器均處于高阻狀態(tài)。
2 單片機(jī)串口轉(zhuǎn)USB接口的電路
無論哪一款的單片機(jī),其芯片上都有串行通信引腳TXD和RXD,利用這兩個引腳,通過某種接口芯片來實現(xiàn)串口轉(zhuǎn)USB口的電路。本文采用Prolific公司推出的串口轉(zhuǎn)USB接口的轉(zhuǎn)換芯片PL2303來實現(xiàn)單片機(jī)的串口轉(zhuǎn)USB接口的電路。接口電路的設(shè)計如圖2所示。
在圖2中,PL2303的TXD引腳和RXD引腳分別與單片機(jī)的P3.0(RXD)引腳和P3.1(TXD)引腳相連,這樣就完成了單片機(jī)的串口與USB口的轉(zhuǎn)換。單片機(jī)從串口發(fā)送出去的數(shù)據(jù)信息通過PL2303芯片轉(zhuǎn)換為USB數(shù)據(jù)流,再通過USB口的連接器傳送給主機(jī)設(shè)備??梢钥闯鯬L2303與單片機(jī)的連接非常簡單,只需兩根信號線就可以。
3 單片機(jī)串口軟件設(shè)計
串口轉(zhuǎn)USB口串行通信方式采用異步半雙工通信方式,即通信雙方發(fā)送和接收信息是分時段交替進(jìn)行的,雙方不能同時進(jìn)行收發(fā)操作。通信的數(shù)據(jù)格式為每幀10位,其中1位起始位,8位數(shù)據(jù)位,1位停止位。一幀數(shù)據(jù)的格式如圖3所示。數(shù)據(jù)的發(fā)送是低位在先,高位在后。
在串行通信中,收發(fā)雙方對發(fā)送和接收數(shù)據(jù)的速率要有約定,即設(shè)定波特率。通過軟件可以對單片機(jī)串口設(shè)置為4種工作方式,即方式0、方式1、方式2、方式3。其中方式0和方式2的波特率是固定不變的,方式1和方式3的波特率是可以調(diào)整的。波特率由單片機(jī)內(nèi)部的定時器T1的溢出率來決定,用定時器T1作為串行通信波特率發(fā)生器時,典型的使用方法是使T1工作在自動重裝的8位定時方式,即定時器的工作方式2,這時定時器T1的溢出率取決于TH1中的初值。而單片機(jī)的串行通信方式采用方式1,即數(shù)據(jù)發(fā)送是10位幀格式。串行通信方式1的波特率的計算如下:
方式1波特率=(2SMOD/32)x T1溢出率 (1)
T1溢出率=fOSC/[12×(256-TH1)] (2)
上式中,SMOD是單片機(jī)芯片內(nèi)部的電源控制寄存器PCON中的D7位,可取值為0或1;fOSC是表示單片機(jī)外接的晶體振蕩器的頻率。
在實際應(yīng)用中,數(shù)據(jù)傳送的波特率最好選擇標(biāo)稱值,又由于TH1的初值是整數(shù),為了減小波特率計算誤差,單片機(jī)外接的晶振頻率盡量選用11.059 2 MHz,這樣串行通信方式1的波特率與TH1的初值的對應(yīng)關(guān)系基本上是一個確定值,如表1所列。
根據(jù)表1,如果串行通信的波特率選用9 600,則裝入單片機(jī)定時器1的TH1中的初值就是FDH,通過下面的程序完成初始化:
4 PL2303的驅(qū)動
PL2303是Prolmc公司生產(chǎn)的一種高度集成的RS232-USB接口轉(zhuǎn)換器,可提供一個RS232全雙工異步串行通信裝置與USB功能接口便利連接的解決方案。該器件內(nèi)置USB功能控制器、USB收發(fā)器、振蕩器和帶有全部調(diào)制解調(diào)器控制信號的UART,只需外接幾個電容就可實現(xiàn)USB信號與RS232信號的轉(zhuǎn)換,能夠方便地嵌入到手持設(shè)備中。該器件作為USB/RS232雙向轉(zhuǎn)換器,一方面從主機(jī)接收USB數(shù)據(jù),并將其轉(zhuǎn)換為RS232信息流格式發(fā)送給外設(shè);另一方面從RS232外設(shè)接收數(shù)據(jù),轉(zhuǎn)換為USB數(shù)據(jù)格式傳送回主機(jī)。這些工作全部由器件自動完成,開發(fā)者無需考慮固件設(shè)計。
PL2303的驅(qū)動可在大多數(shù)操作系統(tǒng)上模擬成傳統(tǒng)的COM端口,并允許基于COM端口應(yīng)用方便地轉(zhuǎn)換為USB接口應(yīng)用,實現(xiàn)通信,其數(shù)據(jù)傳輸?shù)牟ㄌ芈士筛哌_(dá)6 Mbps。通過利用USB塊傳輸模式,利用龐大的數(shù)據(jù)緩沖器和自動流量控制,PL2303能夠?qū)崿F(xiàn)更高的數(shù)據(jù)吞吐量,比傳統(tǒng)的UART(通用異步收發(fā)器)端口要快。
前面介紹了單片機(jī)與PL2303的接口電路,通過PL2303的橋接,將單片機(jī)的串口轉(zhuǎn)成了USB口。當(dāng)單片機(jī)系統(tǒng)與PC主機(jī)系統(tǒng)通過USB通信線連接起來后,PC機(jī)將這個USB接口看成是一個COM口(RS232全雙工異步串行通信接口),此時,PC機(jī)要裝入PL2303的驅(qū)動程序,這個驅(qū)動程序就是將該USB口模擬成為一個COM口,USB轉(zhuǎn)串口線的端口號可能是COM4,也可能是COM5,此端口號是電腦系統(tǒng)自動分派的,不是每臺電腦都一樣。在沒有必要的情況下,請不要去修改它,使用時只需記住這個端口號就可以了。在使用此端口的軟件中,都務(wù)必按此端口來選擇,如STC—ISP下載軟件、串口調(diào)試軟件等。PL2303的驅(qū)動程序可以從官方網(wǎng)站下載。
結(jié)語
本文介紹的單片機(jī)串口轉(zhuǎn)USB口的接口電路已經(jīng)通過實際的電路板實現(xiàn),在實際的應(yīng)用中效果很好,通信的可靠性很高,特別適合筆記本電腦與單片機(jī)系統(tǒng)之間的通信。有些筆記本電腦的操作系統(tǒng)是Win7操作系統(tǒng),此時要注意在官方網(wǎng)站上下載Win7操作系統(tǒng)的PL2303驅(qū)動.PART.RAR。在使用中感覺到的不足之處是PL2303芯片在做電路時,外接的電阻、電容等器件比較多,畫電路板比較麻煩。