串行232接口與USB接口的轉(zhuǎn)接口設(shè)計(jì)_第1頁(yè)
串行232接口與USB接口的轉(zhuǎn)接口設(shè)計(jì)_第2頁(yè)
串行232接口與USB接口的轉(zhuǎn)接口設(shè)計(jì)_第3頁(yè)
串行232接口與USB接口的轉(zhuǎn)接口設(shè)計(jì)_第4頁(yè)
串行232接口與USB接口的轉(zhuǎn)接口設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1緒論

1.1USB轉(zhuǎn)RS232應(yīng)用價(jià)值

USB自從1994年推出以來(lái),逐漸得到了廣泛的應(yīng)用,現(xiàn)在的計(jì)算機(jī)都配備有USB

接口。USB具有傳輸速度快,使用方便,支持熱插拔,連接靈活,獨(dú)立供電等優(yōu)點(diǎn),

可以連接鼠標(biāo)、鍵盤(pán)、打印機(jī)、掃描儀、攝像頭、閃存盤(pán)、手機(jī)等幾乎所有的外部設(shè)

備。正是由于USB的強(qiáng)大功能,使原來(lái)流行的RS-232接口逐漸退出了市場(chǎng),現(xiàn)在很

多新型的計(jì)算機(jī)甚至不帶有串口。但是RS-232可以做很多USB無(wú)法進(jìn)行的工作;而

且目前尚有很多外圍設(shè)備,如打印機(jī),Modem,傳真機(jī)仍是用串口連接的,計(jì)算機(jī)如

果不帶串口或者串口數(shù)量少就會(huì)給使用者帶來(lái)極大的不便。所以設(shè)計(jì)出一種USB轉(zhuǎn)

RS232的設(shè)備是非常具有實(shí)用價(jià)值的,它可以滿足某些沒(méi)有串口或者串口數(shù)量少的計(jì)

算機(jī)對(duì)串口通信的需求,

USB轉(zhuǎn)RS232通信線可使你在串口和USB接口之間非常容易地建立可靠的連接,

通過(guò)利用USB接口具有的即插即用和熱插拔的功能給串口外圍設(shè)備提供非常容易使

用的環(huán)境。它的設(shè)計(jì)可以輕松實(shí)現(xiàn)USB接口到通用串口之間的轉(zhuǎn)換,為沒(méi)有串口的計(jì)

算機(jī)提供快速的通道,而且其傳輸速率高達(dá)1Mbps以上[1].

1.2現(xiàn)有USB轉(zhuǎn)RS232專用芯片介紹

隨著新型的計(jì)算機(jī)的串口數(shù)量逐漸減少,用戶對(duì)于USB轉(zhuǎn)RS232通信線的要求也

在不斷的增加。許多芯片制造商陸續(xù)推出不同功能的USB轉(zhuǎn)S232專用芯片,用來(lái)滿

足廣大用戶的需求。一下是現(xiàn)在市面上比較流行的幾種USB轉(zhuǎn)RS232專用芯片。

(DPL2303芯片一:臺(tái)灣玖旺科技公司推出。兼容USB1.1規(guī)格;通信速率最高為

1.5Mbps;內(nèi)含USBL1全雙工收發(fā)器;支持RS232串行接口。

(2)CJS1O15芯片:深圳金鑫電子科技公司推出。兼容USB2.0規(guī)格;使用USB

全速通信(12Mbps);內(nèi)含USB2.0全雙工收發(fā)器,48MHz晶振。

(3)FT232BM芯片:FTDI公司推出。同時(shí)兼容USB2.0和USB1.1規(guī)格;適合

任意波特率的數(shù)據(jù)傳輸;內(nèi)置EEPROM,可在線編程。

2通信基本原理

2.1USB總線

2.1.1USB特點(diǎn)及規(guī)范

USB的全稱是UniversalSerialBus,是由Intel、Microsoft等公司在1994年聯(lián)合

推出的通用串行總線。USB具有以下特點(diǎn):

(1)具有熱拔插和即插即用功能。

(2)傳輸速度快,提供低速(1.5Mbps)、全速(12Mbps)、高速(480Mbps)3中數(shù)據(jù)

傳輸速率。

(3)支持異步傳輸和同步傳輸兩種傳輸方式。

(4)數(shù)據(jù)傳輸可靠,具有較強(qiáng)糾錯(cuò)功能。

(5)使用方便,易于擴(kuò)展。理論上可同時(shí)接127個(gè)外設(shè)。

(6)可提供最大電壓5V,最大電流500mA[2]。

USB有兩個(gè)版本,USB1.1和USB2.0。前者最高數(shù)據(jù)傳輸速率為12Mbps,后者

的最高數(shù)據(jù)傳輸速率為480Mbps。二者的物理接口完全一致,數(shù)據(jù)傳輸率上的差別完

全由PC的USBhost控制器以及USB設(shè)備決定。USB2.0規(guī)范是由USB1.1規(guī)范演變

而來(lái)的。它的傳輸速率足以滿足大多數(shù)外設(shè)的速率要求。USB2.0中的“增強(qiáng)主機(jī)控

制器接口”(EHCI)定義了一個(gè)與USB1.1相兼容的架構(gòu)。它既可以驅(qū)動(dòng)USB2.0也

可以驅(qū)動(dòng)USBL1。換言之,所有支持USB1.1的設(shè)備都可以直接在USB2.0的接口

上使用而不必?fù)?dān)心兼容性問(wèn)題。

2.1.2USB電氣特性

USB接口傳送信號(hào)和電源是通過(guò)一種四線的電纜,圖2-1中的D-和D+兩根線是

用來(lái)傳送差動(dòng)數(shù)據(jù);而VBUS、GND二條線,向設(shè)備提供+5V電源。

USB引腳編號(hào)和導(dǎo)線顏色見(jiàn)表2-1o

圖2-1

管腳號(hào)信號(hào)分配導(dǎo)線顏色

1VBUSC+5V電源)紅

2【)-(反相數(shù)據(jù))白

3D+(正相數(shù)據(jù))綠

4GND(地)黑

表2-1

2.2RS-232C總線

2.2.1RS-232串口概述。

RS-232是一種串行通信總線標(biāo)準(zhǔn),是數(shù)據(jù)終端設(shè)備1pc

14

2TYR

b1AM

1$

(DTE)和數(shù)據(jù)通信設(shè)備(DC玲之間的標(biāo)準(zhǔn)接口,它是1969Pq

16bKAL)

年由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)和BELL等公司一起開(kāi)發(fā)的通■4RT。

17

V

SPTC

w■一

18V1o

Pq

信協(xié)議。但是這個(gè)協(xié)議僅僅保證了硬件兼容而沒(méi)有軟件兼6nep

19

W一

容。當(dāng)用它進(jìn)行數(shù)據(jù)傳輸時(shí),由于線路的損耗和噪聲的干20■

DTR▼

■8r【)

21

擾方面的原因,傳輸?shù)木嚯x一般都不超過(guò)15米。如果在9

22■

RI▼10

5

傳輸終端之間加上Modem,數(shù)據(jù)可以在世界范圍內(nèi)傳播23q

PII

245

[3]/X12

o25q

713

RS-232具有以下幾個(gè)優(yōu)點(diǎn):

(1)應(yīng)用廣泛,可以做很多USB無(wú)法進(jìn)行的工作。

(2)傳輸距離長(zhǎng),可以達(dá)到12米。圖2-2

(3)對(duì)于雙向連接,只需要3條導(dǎo)線,節(jié)約了成本。

RS-232c接口通向外部的連接器是一種標(biāo)準(zhǔn)的“D”型保護(hù)殼的25針插頭(見(jiàn)圖

2-2)o25個(gè)插腳定義了22個(gè)(見(jiàn)表2-2)。這22個(gè)信道分為兩個(gè)信道組:一個(gè)主信道

組(標(biāo)有)和一個(gè)短信道組,大多數(shù)微機(jī)通信系統(tǒng)僅使用主信道組的信號(hào)線。

表2-2:DB-25插腳功能說(shuō)明

插腳號(hào)插腳功能

*1保護(hù)地(FG)

*2發(fā)送數(shù)據(jù)(TXD)

*3接收數(shù)據(jù)(RXD)

*4請(qǐng)求發(fā)送(RTS)

*5允許發(fā)送(CTS)

*6信號(hào)通訊設(shè)備(DCE)準(zhǔn)備好(DSR)

*7信號(hào)地(SG)

*8數(shù)據(jù)載體檢測(cè)(DCD)

9(保留供數(shù)據(jù)通信設(shè)備測(cè)試)

10(保留供數(shù)據(jù)通信設(shè)備測(cè)試)

11未定義

12(輔信道)數(shù)據(jù)載體檢測(cè)(DCD)

13(輔信道)清除發(fā)送(CTS)

14(輔信道)發(fā)送數(shù)據(jù)(TXD)

*15發(fā)送信用單元定時(shí)(DCE為源)

16(輔信道)接收數(shù)據(jù)(RXD)

*17接收信號(hào)單元定時(shí)(DCE為源)

*18未定義

19(輔信道)請(qǐng)求發(fā)送(RTS)

*20數(shù)據(jù)終端準(zhǔn)備好(DTR)

*21信號(hào)質(zhì)量檢測(cè)

*22振鈴指示很1)

*23數(shù)據(jù)信號(hào)速率選擇(DTE/DCE為源)

*24發(fā)送信號(hào)單元定時(shí)(DTE為源)

25未定義

但是在通信時(shí),并非所有的主信道組的信號(hào)腳都要連接上。

在微機(jī)通信中,通常使用的RS-232接口信號(hào)只有9根引腳(如

圖2-3),連接上這9根引腳線,便可實(shí)現(xiàn)正常的串行通信。

這9根引腳的定義見(jiàn)表2-3。

圖2-3

表2-3:DB-9插腳功能說(shuō)明

引腳號(hào)符號(hào)方向功能

1DCD輸入數(shù)據(jù)載體檢測(cè)

2RXD輸入接收數(shù)據(jù)

3TXD榆出發(fā)送數(shù)據(jù)

4DTR輸出數(shù)據(jù)終端準(zhǔn)備好

5SG信號(hào)地

6DSR輸入信號(hào)通信設(shè)備準(zhǔn)備好

7RTS輸出請(qǐng)求發(fā)送

8CTS榆入清除發(fā)送

9RI輸入振鈴指示

2.2.2RS-232電氣特性

在TXD和RXD上:

邏輯1=3V?-15V。

邏輯0=+3V?+15V。

在RTS、CTS、DSR、DTR和DCD等控制線上:

信號(hào)有效(接通狀態(tài))=+3V?+15V。

信號(hào)無(wú)效(斷開(kāi)狀態(tài))=-3V?-15V。

對(duì)于介于-3V?+3V之間的電壓出于模糊區(qū),即可能會(huì)被視為邏輯0,也可能被視為

邏輯1,這會(huì)使通信時(shí)產(chǎn)生大量誤碼,所以這個(gè)范圍的電壓是不允許出現(xiàn)的。

2.2.3串口通信速率

在串行通信中,用“波特率”來(lái)描述數(shù)據(jù)的傳輸速率.所謂波特率,即每秒鐘傳送

的二進(jìn)制位數(shù),其單位為“bps”.國(guó)際上規(guī)定了一個(gè)標(biāo)準(zhǔn)波特率系列:110bps、300bps、

600bps>1200bps、1800bps2400bps>4800bps、9600bps>14.4Kbps、19.2Kbps>

28.8Kbps、33.6Kbps、56Kbps等。大多數(shù)串行接口電路的接收波特率和發(fā)送波特率

可以分別設(shè)置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同,這樣正確的

通信才能建立。

2.2.4RS-232串口通信基本接線方法

串口之間通信時(shí),若距離小于12米的時(shí)候,可以用電纜線直接連接標(biāo)準(zhǔn)RS-232

接口;若距離較遠(yuǎn)時(shí),需要附加調(diào)制解調(diào)器。最為簡(jiǎn)單且常用的是三線制接法,即地

線,接收數(shù)據(jù)線和發(fā)送數(shù)據(jù)線。具體連接方法如表2-4所示。

表2-4:RS-232串口通信基本接線方法

9針-9針25-25針9-25針

232322

323233

557757

3總體設(shè)計(jì)方案

3.1通信總圖

上圖是一個(gè)簡(jiǎn)單的以USB轉(zhuǎn)RS232通信線連接計(jì)算機(jī)USB口和外設(shè)的串口進(jìn)行通

信的示意圖,其中的USBtoRS232數(shù)據(jù)轉(zhuǎn)換模塊和電平轉(zhuǎn)換模塊是本論文需要設(shè)計(jì)

的硬件部分,串口通信程序是本論文需要設(shè)計(jì)的軟件部分。

3.2通信模塊介紹

計(jì)算機(jī):計(jì)算機(jī)作為通信的主控制器,運(yùn)行底層串口通信程序和頂層的應(yīng)用程序

(棋盤(pán)控制程序等),通過(guò)其自身的USB接口傳送數(shù)據(jù)和指令,控制通信的開(kāi)始和結(jié)

束。

USBtoRS232數(shù)據(jù)轉(zhuǎn)換模塊:由臺(tái)灣玖旺科技公司的PL2303專用轉(zhuǎn)換芯片和?

些外圍的電阻和電容構(gòu)成。主要功能是進(jìn)行USB類型的數(shù)據(jù)和RS232類型的數(shù)據(jù)相

互轉(zhuǎn)換和雙向傳輸。

電平轉(zhuǎn)換模塊:由MAX公司的MAX213cAi電平轉(zhuǎn)換芯片和一些外圍電容構(gòu)成。

主要工作是將RS232電平和TTL/CMOS電平進(jìn)行相互的轉(zhuǎn)換,保證電氣特性匹配。

外圍設(shè)備:是一些以串行端口作為通信接口的設(shè)備,比如像打印機(jī)、Modem和

傳真機(jī)等。

4硬件設(shè)計(jì)

4.1PL2303芯片介紹

PL23O3是臺(tái)灣旺玖科技公司推出的一款USB轉(zhuǎn)RS232專用芯片。它完全兼容

USB1.1規(guī)范;支持RS-232串行接口;具備自動(dòng)握手功能;具有雙向數(shù)據(jù)流緩沖器和

片上USB收發(fā)滯;傳輸速率超過(guò)lMbps[4]。其內(nèi)部模塊結(jié)構(gòu)如圖4-1所示。

圖4T:PL2303內(nèi)部結(jié)構(gòu)

A

USBPort

PL2303芯片有28個(gè)引腳,采用SSOP28封裝,具有體積小,價(jià)格便宜,應(yīng)用簡(jiǎn)

便等優(yōu)點(diǎn)。其引腳功能描述如表4-1。

表41:PL2303引腳功能

引腳號(hào)名稱類型描述

1TXD0向聿口輸出數(shù)據(jù)

2DTR_NO數(shù)據(jù)終端準(zhǔn)備好

3RTS_N0請(qǐng)求發(fā)送

4VDD_232pRS-232電源

5RXDI從串口榆入數(shù)據(jù)

6RI_NI振鈴指示

7GNDP地信號(hào)

8VDDP電源信號(hào)

9DSR_NI數(shù)據(jù)通信設(shè)備準(zhǔn)備好

10DCD_NI數(shù)據(jù)載體檢測(cè)

11CTS_NI允許發(fā)送

12SHTD_NO關(guān)閉RS232收發(fā)器

13EE_CLKI/O串行只讀存儲(chǔ)器時(shí)鐘

14EE.DATAI/O串行只讀存儲(chǔ)器數(shù)據(jù)信號(hào)

15DPI/OUSB數(shù)據(jù)加信號(hào)

16DMI/OUSB數(shù)據(jù)減信與

17VDD_3V3O內(nèi)部巳壓調(diào)節(jié)器3.3伏電壓輸出

18GND_3V3P3.3伏電壓地端

19RESETI系統(tǒng)重啟

20VDDP電源

21GNDP地

22TRI.MODEIRS232三態(tài)輸出控制

23LD_MODEI負(fù)載模式

24VDD_PLLP鎖相環(huán)5伏電源

25GND_PLLP鎖相環(huán)地端

26PLL_TESTI鎖相環(huán)測(cè)試模式控制

27OSC1I晶振輸入端

28OSC20晶振輸出端

由于電子棋盤(pán)對(duì)數(shù)據(jù)傳輸速率要求不高,所以采用USB1.1規(guī)范的轉(zhuǎn)換芯片,足

以滿足串口要求,進(jìn)而正常實(shí)現(xiàn)數(shù)據(jù)傳輸功能。

4.2電平介紹

4.2.1TTL電平標(biāo)準(zhǔn)

TTL電平:Transistor-TransistorLogic晶體管-晶體管邏輯電平,采用正邏輯,

其邏輯電平標(biāo)準(zhǔn)見(jiàn)表4-2.

表4-2:TTL電平標(biāo)準(zhǔn)

邏揖1邏輯0

輸入電壓>=2V<=0.8V

與俞出電壓>=2.4V<=0.5V

電源電壓5V

4.2.2CMOS電平標(biāo)準(zhǔn)

CMOS電平:互補(bǔ)型金屬氧化物半導(dǎo)體電平,采用正邏輯,其邏輯電平標(biāo)準(zhǔn)見(jiàn)表

4一3。

表4-3:CMOS電平標(biāo)準(zhǔn)

邏輯1邏輯0

輸入電壓>=3.5V<=1.5V

輸出電壓>=4.5V<=0.5V

電源電壓5V

4.2.3RS-232電平標(biāo)準(zhǔn)

RS-232電平是采用的是負(fù)邏輯,其邏輯電平標(biāo)準(zhǔn)見(jiàn)表4-4。

表4-4:RS232電平標(biāo)準(zhǔn)

邏輯1邏輯0

輸入電壓-3V-15V+3V-+15V

輸出電壓-3V-15V+3V-+15V

4.3MAX213cAi芯片介紹

由于PL2303轉(zhuǎn)換芯片的輸入輸出電壓要求TTL/CMOS電平,所以需要在RS232

接口與PL2303芯片之間進(jìn)行電平轉(zhuǎn)換,才能滿足電路正常運(yùn)行的要求。本電平轉(zhuǎn)換

電路采用MAX213CAI芯片來(lái)達(dá)到電平轉(zhuǎn)換的目的。MAX213cAi芯片是由MAXIM公司

推出的,專門(mén)用于RS232電平轉(zhuǎn)換到TTL/CMOS電平的專用芯片。

MAX213CAI具有以下特點(diǎn):符合EIA/TIA-232E規(guī)范;外接電容范圍0.1uF?1OuF;

數(shù)據(jù)傳輸速率20Kbits/sec;具有4個(gè)RS232電平驅(qū)動(dòng)器和5個(gè)RS232電平接收器;

TTL/CMOS接收器三態(tài)輸出[5]。其內(nèi)部原理圖及封裝如圖4-2。

IOPVILW

T叵

30lJI

110111叵

2aJ咖I

I叵

*叵

aT2IN

T1M叵)

10u123一

R1IN叵

MAX213藥R4?,-

GN()叵

罰R4FC

Rva:

cn叵0

v.20

叵-

c1.畫(huà)

R5FW

畫(huà)

13四C2.

C?.

151

?ACHVFINSHUIDDV^

圖4-2

4.4硬件電路設(shè)計(jì)框圖

4.5硬件電路設(shè)計(jì)具體實(shí)現(xiàn)方案

4.5.1USB接口與PL2303芯片連線情況

USB接口的D.(引腳2)數(shù)據(jù)線連接PL2303芯片的DM端(引腳16)

USB接口的D+(引腳3)數(shù)據(jù)線連接PL2303芯片的DP端(引腳15)

這樣就建立了USB接口到PL2303轉(zhuǎn)換芯片的電氣連接,布線時(shí)應(yīng)該注意PL2303

芯片與USB接口的距離應(yīng)該盡量的短;而且D+和D-差分?jǐn)?shù)據(jù)線的長(zhǎng)度要盡量保持一

致,這樣可以避免了差分?jǐn)?shù)據(jù)線阻抗的不連續(xù)性;在繪制差分?jǐn)?shù)據(jù)線時(shí),必須使用

45°彎角或圓弧彎角來(lái)代替90。彎角。

4.5.2PL2303芯片與MAX213芯片連線情況

下面三根導(dǎo)線是RS232串口通信的輸出線,PL2303先轉(zhuǎn)換從USB端接收到的數(shù)

據(jù),然后把數(shù)據(jù)發(fā)送到MAX213芯片進(jìn)行電平轉(zhuǎn)換,最后數(shù)據(jù)傳送到RS232接口并

輸出。

PL2303芯片,的DTR_N端(引腳2)連接MAX213芯片的引腳7(RS232電平驅(qū)動(dòng)器

T1的輸入端)

PL2303芯片的TXD端(引腳1)連接MAX213芯片的引腳6(RS232電平驅(qū)動(dòng)器

T2的輸入端)

PL2303芯片的RTS_N端(引腳3)連接MAX213芯片的引腳2KRS232電平驅(qū)動(dòng)

器T4的輸入端)

下面五根導(dǎo)線是RS232串口通信的輸入線,RS232接口傳送的數(shù)據(jù)經(jīng)過(guò)MAX213

芯片把電平轉(zhuǎn)換成TTUCMOS電平,然后傳送到PL2303的下列五個(gè)引腳,數(shù)據(jù)經(jīng)過(guò)

PL2303轉(zhuǎn)換成USB類型的數(shù)據(jù)后,最終傳送到USB接口。

PL2303芯片的CTS_N端(引腳11)連接MAX213芯片的引腳8(RS232電平接收

器R1的輸出端)

PL2303芯片的DSR_N端(引腳9)連接MAX213芯片的引腳5(RS232電平接收

器R2的輸出端)

PL2303芯片的DCD_N端(引腳10)連接MAX213芯片的引腳26(13232電平接

收器R3的輸出端)

PL2303芯片的RI_N端(引腳6)連接MAX213芯片的引腳22(RS232電平接收器

R4的輸出端)

PL2303芯片的RXD端(引腳5)連接MAX213芯片的引腳19(RS232電平接收器

R5的輸出端)

4.5.3MAX213芯片與9針RS232接口連線情況

MAX213芯片的引腳2(RS232電平驅(qū)動(dòng)港T1的輸出端)連接RS232接口的DTR

端(引腳4)

MAX213芯片的引腳3CRS232電平驅(qū)動(dòng)器T2的輸出端)連接RS232接口的TXD

端(引腳3)

MAX213芯片的引腳28(RS232電平驅(qū)動(dòng)器T4的輸出端)連接RS232接口的RTS

端(引腳7)

MAX213芯片的引腳9(RS232電平接收器R1的輸入端)連接RS232接口的CTS

端(引腳8)

MAX2I3芯片的引腳4(RS232電平接收器R2的輸入端)連接RS232接口的DSR

端(引腳6)

MAX213芯片的引腳27(RS232電平接收器R3的輸入端)連接RS232接口的CD

端(引腳1)

MAX2I3芯片的引腳23(RS232電平接收器R4的輸入端)連接RS232接口的RI

端(引腳9)

MAX213芯片的引腳18(RS232電平接收器R5的輸入端)連接RS232接口的RXD

端(引腳2)

除了上面的硬件連接外,本硬件電路還需在PL2303芯片的DSR_N、DCD_N和

CTS_N引腳上鏈接有220K的上拉電阻,并接到5Y電源。這樣一旦USB轉(zhuǎn)RS232通

信線連接到計(jì)算機(jī)的USB接口,接口就會(huì)對(duì)通信線供電,DSR_N>DCD_N和CTS_N

引腳將會(huì)被上拉成高電平。這就通知計(jì)算機(jī)已經(jīng)和USB轉(zhuǎn)RS232通信線建立了連接,

并且可以發(fā)送數(shù)據(jù)了。這三個(gè)上拉電阻的作用就是使計(jì)算機(jī)與USB轉(zhuǎn)RS232通信線

建立了電氣上的連接。具體電路圖及PCB版圖見(jiàn)附錄一和附錄二。

4.6硬件電路測(cè)試結(jié)果

把制作完成后的USB轉(zhuǎn)RS232通信線的USB接口一端插入到計(jì)算機(jī)的USB接

口,計(jì)算機(jī)則會(huì)自動(dòng)檢測(cè)出這個(gè)新的硬件,并在“設(shè)備管理器”中可以查詢到這個(gè)硬

件。由于PL2303已經(jīng)將USB接口轉(zhuǎn)換成了.一_

白3端口(COM和LPT)

?個(gè)虛擬的RS232接口,當(dāng)查詢“設(shè)備管理IgECP打印機(jī)端口QPT1)

?-?■-3/ProlificUSB-to-SerialCommPort(COM5)

器”的“端口”欄時(shí),我們會(huì)發(fā)現(xiàn)計(jì)算機(jī)增|“J通訊端口(COM1)

加了一個(gè)串行端口,而不是一個(gè)USB口,圖4-3

如圖4-3。在圖中可以發(fā)現(xiàn)計(jì)算機(jī)多了一個(gè)串口——ProlificUSB-to-SerialCommPort

(C0M5).說(shuō)明計(jì)算機(jī)己經(jīng)識(shí)別了這個(gè)外接電路并巨把這個(gè)它當(dāng)成了一個(gè)串行通信口。

當(dāng)硬件接到不同的計(jì)算機(jī)時(shí),并不一定都是顯示C0M5字樣,而是根據(jù)不同的計(jì)算

機(jī)的串口數(shù)量而定的,例如某臺(tái)計(jì)算機(jī)只有2個(gè)串口,則會(huì)顯示COM3字樣。

圖4-4

再查看這個(gè)虛擬串口的“屬性”欄中的“端

每秒位數(shù)值):[96003

口設(shè)置”,可以看見(jiàn)如圖4?4中的設(shè)置。里面顯示

數(shù)據(jù)位6):[83

了數(shù)據(jù)傳輸速率,數(shù)據(jù)位,奇偶效驗(yàn)位和停止位

奇偶校驗(yàn)也):悅?cè)齶

等設(shè)置,這對(duì)后續(xù)為該串口編寫(xiě)通信程序是非常

停止位6):n2

流控制更):僑3

必要的,編寫(xiě)的通信程序中的設(shè)置必須和“端口設(shè)置”中的設(shè)置完全符合才能實(shí)現(xiàn)正

常的串口通訊。

5軟件設(shè)計(jì)

5.1開(kāi)發(fā)環(huán)境介紹

VisualC++是微軟公司推出的功能強(qiáng)大的編程軟件之一,它是在Windows下進(jìn)行

軟件開(kāi)發(fā)的主要選擇之一。該軟件主要具有以下匚個(gè)特點(diǎn)。

(1)VisualC++的語(yǔ)法符合ANSIC++標(biāo)準(zhǔn),并且在此基礎(chǔ)上針對(duì)Windows操作系

統(tǒng)的特點(diǎn)增加了一些新的語(yǔ)句。

(2)集成了MFC(MicrosoftFoundationClasses)類庫(kù),MFC封裝了大量Windows

API(ApplicationProgrammingInterface)函數(shù)和消息,使程序員可以更高效的使用MFC

開(kāi)發(fā)軟件。

⑶提供了MFCApPWizard,可方便的生成程序框架

⑷提供了基于MFC的ClassWizard,可以更高效的對(duì)各種MFC類使用與維護(hù)。

5.2串口編程主要方法

串口編程的資料很多,但由于工程上需求多種多樣,需要根據(jù)不同的條件對(duì)串口

進(jìn)行靈活控制,在實(shí)際應(yīng)用中,分以下三種:

(1)用匯編或標(biāo)準(zhǔn)通訊函數(shù),往指定端口直接讀寫(xiě)數(shù)據(jù)。

(2)利用VisualStudio提供的MSComm控件。

⑶使用Windows提供的API函數(shù)。

5.3MSComm控件介紹

MSComm控件是專門(mén)用于串行通訊的控件,它提供了一系列標(biāo)準(zhǔn)通信命令的接

口,我們可以通過(guò)它可以建立串口連接、數(shù)據(jù)發(fā)送、命令發(fā)送以及監(jiān)視和響應(yīng)在通信

過(guò)程中的事件和錯(cuò)誤。MSComm控件在串口編程時(shí)非常方便,程序員不必花時(shí)間去

了解復(fù)雜的API函數(shù)。

5.3.1程序中MSComm控件的函數(shù)屬性

(1)CommPort屬性

voidSetCommPort(shortnNewValue)和shortGetCommPort()

該屬性設(shè)置并返回連接的串行端口號(hào),Windows將會(huì)利用該串口和外界進(jìn)行通

訊。

(2)Settings屬性

voidSetSettings(LPCTSTRIpszNewValue)和CStringGetSettings()

該屬性設(shè)置并返回串口的數(shù)據(jù)傳輸速率,奇偶效驗(yàn),數(shù)據(jù)比特,停止比特等參數(shù)。

由四個(gè)設(shè)置值組成,格式為:“BBBB,P,D,S\

(3)RThrcshold屬性

voidSetRThrcshold(shortnNewValue)和shortGetRThreshold()

該屬性設(shè)置并返回要接受的字符數(shù),說(shuō)明在產(chǎn)生OnComm事件之前要接收的字

符數(shù)。

(4)InputLen屬性

voidSetInputLen(shortnNewValue)和shortGetInputLen()

該屬性用于設(shè)置并返回Input屬性從接收緩沖區(qū)讀取的字符數(shù)。

(5)InBufferSize屬性

voidSetInBufferSize(shortnNewValue)和shortGetInBufferSize()

該屬性用于設(shè)置或返回輸入緩沖區(qū)的大小,默認(rèn)為1024字節(jié)。

(6)Input屬性

voidSctlnput(constVARIANT&newValuc)和VARIANTGctlnput()

該屬性表示從接收緩沖區(qū)移走一串字符,將緩沖區(qū)最終收到的數(shù)據(jù)讀入變量。該

屬性在串行端口未打開(kāi)忖不可用,在運(yùn)行時(shí)為只讀。

(7)PortOpen屬性

voidSetPortOpen(BOOLbNewValue)和BOOLGetPortOpen()

該屬性用于打開(kāi)或者關(guān)閉串口。如果bNewValue設(shè)為T(mén)rue,可以打開(kāi)端口;設(shè)

為False時(shí)可以關(guān)閉串口。

(8)OutBufferSize屬性

voidSetOutBufferSize(shortnNewValue)和shortGetOutBufferSize()

該屬性用于設(shè)置或者返回發(fā)送緩沖區(qū)的大小,默認(rèn)值為512字節(jié)。

(9)OutPul屬性

voidSctOutput(constVARIANT&newValuc)和VARIANTGctOutput()

該屬性用于向發(fā)送緩沖區(qū)寫(xiě)數(shù)據(jù)流,在串行端口未打開(kāi)時(shí)不可用,在運(yùn)行時(shí)是只

寫(xiě)的。

(lO)CommEvent屬性

voidSetCommEvent(shortnNewValue)和shortGetCommEvent()

如果在通訊過(guò)程中發(fā)生錯(cuò)誤或事件,將會(huì)引發(fā)OnComm事件并且改變其屬性值。

CommEvcnt屬性值反映錯(cuò)誤或者事件類型,通信程序的設(shè)計(jì)中可以根據(jù)該屬性值執(zhí)

行不同的操作。該屬性在串行端口未打開(kāi)時(shí)不可用,在運(yùn)行時(shí)為只讀。

5.3.2MSComm控件處理通信問(wèn)題方法

MSCoom控件提供了兩種處理通信問(wèn)題的方法:事件驅(qū)動(dòng)法和查詢法。

(1)事件驅(qū)動(dòng)法:當(dāng)串口接受緩沖區(qū)中有字符,或者CD線或RTS線上一個(gè)字符

到達(dá)或一個(gè)事件發(fā)生時(shí),MSCoom控件可以利用OnComm事件捕獲并處理這些通信

事件。OnComm事件還可以檢查和處理通信錯(cuò)誤。

(2)查詢法:在程序的每個(gè)關(guān)鍵功能執(zhí)行后,通過(guò)檢查CommEvenl屬性的值來(lái)查

詢事件或錯(cuò)誤,只要CommEvcnt屬性的值發(fā)生了變化,就表明一個(gè)通信事件或一個(gè)

錯(cuò)誤發(fā)生了。

5.3.3OnComm事件

MSComm控件只有?個(gè)事件,即OnComm事件。利用MSComm控件編寫(xiě)的通

信程序在運(yùn)行中如果產(chǎn)生事件或錯(cuò)誤,將會(huì)引發(fā)OnComm事件并改變其屬性值,通

過(guò)GelCommEvenl。函數(shù)即可獲得OnComm產(chǎn)生事件或錯(cuò)誤的代碼。在設(shè)計(jì)的程序中

可以通過(guò)CommEvent不同的屬性值來(lái)執(zhí)行不同的操作[6]。

5.4軟件設(shè)計(jì)流程圖

創(chuàng)

于編

對(duì)譯

話并

框測(cè)

的試

5.5軟件設(shè)計(jì)具體方法

5.5.1編輯對(duì)話框圖5-1

控件

匾an

abl

國(guó)

區(qū)

(1)建立名稱為SerialPort的對(duì)話框工作空間,并在國(guó)

TDDSERTALPORTDIALOG對(duì)話框中插入MSComm控件。缶

對(duì)應(yīng)的對(duì)話框工具欄會(huì)中增加了一個(gè)“電話”圖標(biāo),如圖所示。

5T回

C3日

MSComm控件中包含mscomm.h文件和mscomm.cpp文件。所有的國(guó)rr=0

函數(shù)聲明都在mscomm.h文件中;而mscomm.cpp文件中則包含了回

控件中所有函數(shù)的定義,

(2)由于本對(duì)話框同時(shí)具備接收數(shù)據(jù)和發(fā)送數(shù)據(jù)的功能,所以需要添加兩個(gè)“電

話”圖標(biāo)到對(duì)話框。因?yàn)槊總€(gè)MSComm控件對(duì)應(yīng)著一個(gè)串口號(hào),如果應(yīng)用程序需要

訪問(wèn)多個(gè)串口端口,就必須使用多個(gè)MSComm控件,才可以實(shí)現(xiàn)不同串口的收發(fā)數(shù)

據(jù)功能。然后還需在對(duì)話框中添加其它控件,控件列表5-1如下.

表5-1:添加控件列表

資源類型ID描述

靜態(tài)文本ID.STATIC接收數(shù)據(jù)框

靜態(tài)文本ID_STATIC發(fā)送數(shù)據(jù)框

組合框IDC_SEL_RECV_COM選擇接收串口

組合框IDC_SEL_SEND_COM選擇發(fā)送串口

按鈕IDC_OPEN_RECV_COM打開(kāi)接收串口

按鈕IDC_OPEN_SEND_COM打開(kāi)發(fā)送串口

按鈕IDC.CLEAR清除接收到數(shù)據(jù)

按鈕IDC.SEND發(fā)送數(shù)據(jù)

MSComm控件IDC.MSCOMMl接收串口控件

MSComm控件IDCMSCOMM2發(fā)送串口控件

對(duì)話框編輯完成后如圖5-2

圖5-2

5.5.2與MSComm控件建立連接

即使在工程中已經(jīng)插入了MSComm控件,但是控件程序不會(huì)自動(dòng)使用控件來(lái)控

制串口通信,這就需要給控件添加變量,使用這些變量來(lái)建立與控件的連接,從而可

以調(diào)用控件中預(yù)定義的函數(shù)來(lái)控制串口通信。

(1)在SeialPorlDIg.h頭文件中添加下面聲明語(yǔ)句。

protected:

CMSCommm_Com1,m_Com2;

就聲明了兩個(gè)MSComm類型的變量。

(2)在ClassWizard的MessageMaps選項(xiàng)卡中為分別兩個(gè)MSComm控件添加這

兩個(gè)成員變量m_Conil和m_Con)2,其對(duì)應(yīng)的類型都為CMSComm。這樣就建立了變量

m_Coml到IDC_MSCOMM1控件,變量m_Com2到IDC_MSCOMM2控件的相互映

5.5.3串口初始化程序

通過(guò)調(diào)用MSComm控件中的SetCommPort()>SetInBufferSize()和

SctOutBufferSize。等函數(shù),可以直接設(shè)置通信串U端口、輸入緩沖區(qū)大小和輸出緩沖

區(qū)大小等串口通信必須的參數(shù)。以下是設(shè)置接收串行端口參數(shù)的源程序。

m_Com1.SetCommPort(m_sel_recv_com+1);//選擇接收串口,返回端口號(hào)

m_ComI.SetInBufferSize(1024);〃設(shè)置輸入緩沖區(qū)的大小,1024Bytes

m_Com1.SetOutBufferSize(512);〃設(shè)置輸入緩沖區(qū)的大小,512Bytes

if(!m_Coml.GetPoilOpen())〃打開(kāi)選擇的接收串口

m_Com1.SetPortOpen(TRUE);

m_Coml.SethiputMode⑴;〃設(shè)置輸入方式為二進(jìn)制方式

m_Com1.SetSettings(”9600,n,8,1");〃設(shè)置數(shù)據(jù)傳輸速率等參數(shù)

m_Coml.SetRThreshold(l);〃只要接收到一個(gè)字符就引發(fā)OnComm事件

m_Com1.SetlnputLen(O);〃讀取接收緩沖區(qū)的全部字符數(shù)

5.5.4控件程序和數(shù)據(jù)收發(fā)程序。

在前面編寫(xiě)的對(duì)話框中,存在著按鈕,它們都具有各自的函數(shù)來(lái)實(shí)現(xiàn)它們的功能,

下面做簡(jiǎn)要介紹。

按鈕”打開(kāi)接收串口”定義了函數(shù)OnOpcnRccvCom()。

按鈕”打開(kāi)發(fā)送串口”定義了函數(shù)OnOpenScndCom。。

按鈕“清除接收到數(shù)據(jù)”定義了函數(shù)OnCleaK)。

按鈕“發(fā)送數(shù)據(jù)”定義了函數(shù)OnSencR)。

另外對(duì)于插入的兩個(gè)MSComm控件也定義了對(duì)■應(yīng)的函數(shù)OnOnCommMscommlO

和OnOnCommMscomm2()來(lái)控制數(shù)據(jù)流的收發(fā)功能。上面函數(shù)的源代碼在論文后的

附錄三。

5.5.5捕捉串口程序設(shè)計(jì)

改串口通信程序的MSComm控件是使用的事件驅(qū)動(dòng)方式從端口獲取數(shù)據(jù),所以

必須對(duì)SerialPortDlg.h文件和SerialPortDlg.cpp文件添加相應(yīng)的語(yǔ)句,才能實(shí)現(xiàn)事件

驅(qū)動(dòng)的功能。

⑴在SerialPortDlg.h文件中添加下列語(yǔ)句

protected:

DECLARE_EVENTSINK_MAP()

⑵在SerialPortDlg.cpp文件中添加下列語(yǔ)句

BEGIN_EVENTSlNK_MAP(CSerialPortDlg,CDialog)

ON_EVENT(CSerialPortDlg,IDC_MSCOMM1,1,OnOnCommMscomm1,

VTS_NONE)

ON_EVENT(CSerialPortDlg,IDC_MSCOMM2,1,OnOnCommMscomm2,

VTS_NONE)

END_EVENTSINK_MAP()

這樣就簡(jiǎn)單的實(shí)現(xiàn)了對(duì)兩個(gè)不同串口事件的捕獲。

5.6軟件測(cè)試結(jié)果

(1)整個(gè)程序編寫(xiě)完后,組建后會(huì)生成一個(gè)應(yīng)用程序SeriaIPort.exeo

⑵把前面制作完成的USB轉(zhuǎn)RS232通信線的USB接口端插到計(jì)算機(jī)的USB接

口,然后用一根串口通信線連接計(jì)算機(jī)的C0M1端口和轉(zhuǎn)換線的串口C0M5端口。

這樣就實(shí)現(xiàn)了同一臺(tái)計(jì)算機(jī)上一個(gè)虛擬串口和一個(gè)真是串口的硬件連接;也可以連接

兩臺(tái)不同的計(jì)算機(jī)的串口進(jìn)行通信。

(3)運(yùn)行SerialPort.exe文件,接收串口選擇C0M1,發(fā)送串口選擇COM5;選擇

完后分別點(diǎn)擊打開(kāi)串口按鈕,這時(shí)便可以實(shí)現(xiàn)串口通信了。在發(fā)送數(shù)據(jù)框中編輯數(shù)據(jù),

然后單擊“發(fā)送數(shù)據(jù)”按鈕,便可在接收數(shù)據(jù)框中收到發(fā)送的數(shù)據(jù)。

(4)測(cè)試結(jié)果見(jiàn)表5-2。

發(fā)送的數(shù)據(jù)收到的數(shù)據(jù)

文字鄭大西亞斯鄭大西亞斯

字符串SIASSIAS

數(shù)字2005108211420051082114

表5-2測(cè)試結(jié)果

6結(jié)論

本論文采用PL2303芯片研制一種低速、高性價(jià)比、適合于不同操作系統(tǒng)的USB

轉(zhuǎn)RS232通信線。其特點(diǎn)是即插即用,使用方便。整個(gè)電路中設(shè)計(jì)有電平轉(zhuǎn)換模塊,

可以很好的匹配不同總線對(duì)電平的要求,使通信順利進(jìn)行。本論文研制的低速轉(zhuǎn)換線

完全可以符合其對(duì)速率的要求,而且性價(jià)比高,通用性好,可以使用到其它低速的外

圍設(shè)備中。

串口通訊軟件主要是采用的當(dāng)前流行的MSComm控件來(lái)編程,無(wú)需了解復(fù)雜的

API函數(shù),而旦還可以任意選擇串口通信波特率和串口號(hào),降低了開(kāi)發(fā)成本,增加了

通用性。

但是,本論文所研制的USB轉(zhuǎn)RS232通信線也有一些缺點(diǎn)。最主要的就是只兼

容USB1.1規(guī)范,致使傳輸速率比較低,不適合高速外圍設(shè)備的要求;由于軟件采用

微軟公司提供的控件編程,這樣就不能把其編寫(xiě)成鏈接庫(kù)的形式供其它高層應(yīng)用軟件

調(diào)用,導(dǎo)致了軟件的可移植性比較差。

致謝

首先,衷心感謝我的指導(dǎo)老師X老師老師。在本次畢業(yè)設(shè)計(jì)過(guò)程中,X老師給予

我精心的指導(dǎo),并為我提供了豐富的背景資料和創(chuàng)新性的意見(jiàn)和建議,使我的畢業(yè)設(shè)

計(jì)得以順利完成。X老師嚴(yán)謹(jǐn)勤奮的工作作風(fēng)、扎實(shí)廣博的學(xué)識(shí)和平易近人的性格,

使我在學(xué)習(xí)方面得到了很大的收獲,它們將是我受益終生的財(cái)富。

其次,我也要感謝學(xué)校學(xué)習(xí)期間各位老師對(duì)我知識(shí)的傳授以及同學(xué)對(duì)我的支

持。

最后,我要深深感謝辛勤養(yǎng)育我的父母。在我求學(xué)期間,他們始終給予我最大的

支持和鼓勵(lì),使我勇于戰(zhàn)勝各種困難,順利完成學(xué)業(yè)。希望

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論