引言
隨著(zhù)科學(xué)技術(shù)的快速發(fā)展,單片機的應用已經(jīng)滲入到了生產(chǎn)、生活的方方面面,其應用范圍越來(lái)越廣泛,應用前景越來(lái)越好?;趩纹瑱C的開(kāi)發(fā)應用在目前創(chuàng )新技術(shù)發(fā)展中一支獨秀,非常受廣大科技愛(ài)好者、在校大學(xué)生以及科技開(kāi)發(fā)工作者的青睞。多功能、超強型的單片機在市場(chǎng)上也層出不窮,為單片機的開(kāi)發(fā)應用提供了很好的基礎。目前,在單片機的應用系統設計中,USB接口的使用越來(lái)越多,簡(jiǎn)化了單片機系統與外部系統進(jìn)行信息交換的接口電路,提高了信息交換的可靠性及交換速度。目前市場(chǎng)上提供的各類(lèi)型單片機品種中,有些型號的單片機在其內部集成有USB接口部件,但大部分的單片機不含有USB接口電路。對芯片內部不含有USB串行接口的單片機,進(jìn)行USB接口設計時(shí),要通過(guò)外圍接口芯片來(lái)實(shí)現USB串行接口,這樣的接口芯片,目前市場(chǎng)上已經(jīng)有很多種了。本文僅就采用單片機本身的串口通過(guò)外圍芯片PL2303來(lái)實(shí)現串口轉USB接口進(jìn)行介紹。
1 USB接口的實(shí)現
USB(Universal Serial Bus)是一種通用的串行總線(xiàn)技術(shù),它是通過(guò)PCI總線(xiàn)和PC的內部系統數據線(xiàn)連接,實(shí)現數據的傳送,具有即插即用功能,支持熱插拔,兩個(gè)通信設備之間線(xiàn)纜長(cháng)度可達5 m。
USB接口線(xiàn)有4條,其中兩條為電源線(xiàn)和地線(xiàn)(Vbus與GND),另外兩條是以差分形式傳遞信息的信號線(xiàn)(D+和D-),從而實(shí)現主機系統與USB設備之間的數據通信。含有USB接口的主機與含有USB接口的設備之間通信數據流的示意圖如圖1所示。

USB總線(xiàn)技術(shù)是基于分組交換方式的總線(xiàn)通信。它首先把數據分成若干塊,然后在每塊數據前添加上同步信號、包標識,后面再添加上CRC校驗碼,形成USB數據包。USB通信總線(xiàn)使用差分輸出驅動(dòng)器來(lái)控制數據信號在USB電纜上的傳送,即通過(guò)控制D+和D-線(xiàn)從空閑狀態(tài)到相反的邏輯電平,實(shí)現原端口的數據包發(fā)送,數據包發(fā)送完以后,信號線(xiàn)(D+)和(D-)上的輸出驅動(dòng)器均處于高阻狀態(tài)。
2 單片機串口轉USB接口的電路
無(wú)論哪一款的單片機,其芯片上都有串行通信引腳TXD和RXD,利用這兩個(gè)引腳,通過(guò)某種接口芯片來(lái)實(shí)現串口轉USB口的電路。本文采用Prolific公司推出的串口轉USB接口的轉換芯片PL2303來(lái)實(shí)現單片機的串口轉USB接口的電路。接口電路的設計如圖2所示。

在圖2中,PL2303的TXD引腳和RXD引腳分別與單片機的P3.0(RXD)引腳和P3.1(TXD)引腳相連,這樣就完成了單片機的串口與USB口的轉換。單片機從串口發(fā)送出去的數據信息通過(guò)PL2303芯片轉換為USB數據流,再通過(guò)USB口的連接器傳送給主機設備??梢钥闯鯬L2303與單片機的連接非常簡(jiǎn)單,只需兩根信號線(xiàn)就可以。
3 單片機串口軟件設計
串口轉USB口串行通信方式采用異步半雙工通信方式,即通信雙方發(fā)送和接收信息是分時(shí)段交替進(jìn)行的,雙方不能同時(shí)進(jìn)行收發(fā)操作。通信的數據格式為每幀10位,其中1位起始位,8位數據位,1位停止位。一幀數據的格式如圖3所示。數據的發(fā)送是低位在先,高位在后。

在串行通信中,收發(fā)雙方對發(fā)送和接收數據的速率要有約定,即設定波特率。通過(guò)軟件可以對單片機串口設置為4種工作方式,即方式0、方式1、方式2、方式3。其中方式0和方式2的波特率是固定不變的,方式1和方式3的波特率是可以調整的。波特率由單片機內部的定時(shí)器T1的溢出率來(lái)決定,用定時(shí)器T1作為串行通信波特率發(fā)生器時(shí),典型的使用方法是使T1工作在自動(dòng)重裝的8位定時(shí)方式,即定時(shí)器的工作方式2,這時(shí)定時(shí)器T1的溢出率取決于TH1中的初值。而單片機的串行通信方式采用方式1,即數據發(fā)送是10位幀格式。串行通信方式1的波特率的計算如下:
方式1波特率=(2SMOD/32)x T1溢出率 (1)
T1溢出率=fOSC/[12×(256-TH1)] (2)
上式中,SMOD是單片機芯片內部的電源控制寄存器PCON中的D7位,可取值為0或1;fOSC是表示單片機外接的晶體振蕩器的頻率。
在實(shí)際應用中,數據傳送的波特率最好選擇標稱(chēng)值,又由于TH1的初值是整數,為了減小波特率計算誤差,單片機外接的晶振頻率盡量選用11.059 2 MHz,這樣串行通信方式1的波特率與TH1的初值的對應關(guān)系基本上是一個(gè)確定值,如表1所列。

根據表1,如果串行通信的波特率選用9 600,則裝入單片機定時(shí)器1的TH1中的初值就是FDH,通過(guò)下面的程序完成初始化:


聯(lián)系客服