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