




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年黑龍江省五常市輔警招聘考試試題題庫(kù)含答案詳解(綜合題)
- 小額貸款考試題及答案
- 希望杯一試試題及答案
- 石材接縫寬度均勻性
- 2025合作伙伴合同范本內(nèi)容
- 2025科技有限公司合同模板
- 大健康零售業(yè)務(wù)O2O數(shù)字化戰(zhàn)略規(guī)劃方案
- S-R-S-AHPC-PEG4-tosyl-生命科學(xué)試劑-MCE
- Cephemimycin-生命科學(xué)試劑-MCE
- 2025年天津市河西區(qū)二年級(jí)上學(xué)期期中歷史試卷(含答案)
- GB/T 17642-2025土工合成材料非織造布復(fù)合土工膜
- (四調(diào))武漢市2025屆高中畢業(yè)生四月調(diào)研考試 數(shù)學(xué)試卷(含答案詳解)
- ISO 37001-2025 反賄賂管理體系要求及使用指南(中文版-雷澤佳譯-2025)
- 2024年上海市中考英語(yǔ)試題和答案
- 國(guó)開(kāi)(河北)2024年秋《現(xiàn)代產(chǎn)權(quán)法律制度專題》形考作業(yè)1-4答案
- 應(yīng)急預(yù)案演練記錄表
- 如何構(gòu)建印刷企業(yè)的安全文化
- 肺痿肺癰咳嗽上氣病脈證治第七
- EN779-2012一般通風(fēng)過(guò)濾器——過(guò)濾性能測(cè)定(中文版)
- 雙橫臂獨(dú)立懸架設(shè)計(jì)
- 綜采工作面停產(chǎn)及恢復(fù)生產(chǎn)安全技術(shù)措施
評(píng)論
0/150
提交評(píng)論