<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > RS232接口規范及編程資料(上)

RS232接口規范及編程資料(上)

作者: 時(shí)間:2016-12-12 來(lái)源:網(wǎng)絡(luò ) 收藏
大多數的電腦設備都具有RS-232C接口,盡管它的性能指標并非很好。在廣泛的市場(chǎng)支持下依然常勝不衰。就使用而言,RS-232也確實(shí)有其優(yōu)勢:僅需3根線(xiàn)便可在兩個(gè)數字設備之間全雙工的傳送數據。不過(guò),RS-232C的控制要比使用并行通訊的打印機接口更難于控制。RS-232C使用了遠較并行口更多的寄存器。這些寄存器用來(lái)實(shí)現串行數據的傳送及RS-232C設備之間的握手與流量控制。本文將分別描述的串行通訊的原理及具體的軟件設計。

(1)RS-232C介紹與PC硬件:

本文引用地址:http://dyxdggzs.com/article/201612/328777.htm

RS-232C使用-3到-25V表示數字“1”,使用3V到25V表示數字“0”,RS-232C在空閑時(shí)處于邏輯“1”狀態(tài),在開(kāi)始傳送時(shí),首先產(chǎn)生一起始位,起始位為一個(gè)寬度的邏輯“0”,緊隨其后為所要傳送的數據,所要傳送的數據有最低位開(kāi)始依此送出,并以一個(gè)結束位標志該字節傳送結束,結束位為一個(gè)寬度的邏輯“1”狀態(tài)。

PC機一般使用8250或16550作為串行通訊的控制器,使用9針或25針的接插件將串行口的信號送出。該插座的信號定義如下:

DB-25

DB-9

信號名稱(chēng)

方向

含 義

2

3

TXD

輸出

數據發(fā)送端

3

2

RXD

輸入

數據接收端

4

7

RTS

輸出

請求發(fā)送(計算機要求發(fā)送數據)

5

8

CTS

輸入

清除發(fā)送(MODEM準備接收數據)

6

6

DSR

輸入

數據設備準備就緒

7

5

SG

-

信號地

8

1

DCD

輸入

數據載波檢測

20

4

DTR

輸出

數據終端準備就緒(計算機)

22

9

RI

輸入

響鈴指示

 

以上信號在通訊過(guò)程之中可能會(huì )被全部或部分使用,最簡(jiǎn)單的通訊僅需TXD及RXD及SG即可完成,其他的握手信號可以做適當處理或直接懸空,至于是否可以懸空這視乎你的通訊軟件。比如說(shuō),如果使用DOS所提供的BIOS通訊驅動(dòng)程序,那么,這些握手信號則需要做如下處理,因為BIOS的通訊驅動(dòng)使用了這些信號。如果使用自己編寫(xiě)的串行驅動(dòng)程序則可以完全不使用這些握手信號(詳見(jiàn)下面有關(guān)章節)。

PC機一般使用8250或16550的作為串行通訊控制器,8250及16550的管腳排列如下:

8250(16550)的寄存器如下表所示:

基地址

讀/寫(xiě)

寄存器縮寫(xiě)

注 釋

0

Write

-

發(fā)送保持寄存器(DLAB=0)

0

Read

-

接收數據寄存器(DLAB=0)

0

Read/Write

-

波特率低八位(DLAB=1)

1

Read/Write

IER

中斷允許寄存器

1

Read/Write

-

波特率高八位(DLAB=1)

2

Read

IIR

中斷標識寄存器

2

Write

FCR

FIFO控制寄存器

3

Read/Write

LCR

線(xiàn)路控制寄存器

4

Read/Write

MCR

MODEM控制寄存器

5

Read

LSR

線(xiàn)路狀態(tài)寄存器

6

Read

MSR

MODEM狀態(tài)寄存器

7

Read/Write

-

Scratch Register

PC機支持1-4個(gè)串行口,即COM1-COM4,其基地址在BIOS數據區0000:0400-0000:0406中描述,對應地址分別為3F8/2F8/3E8/2E8,COM1及COM3使用PC機中斷4,COM2及COM4使用中斷3。

在上表中,8250共有12個(gè)寄存器,使用了8個(gè)地址,其中部分寄存器共用一個(gè)地址,由DLAB=0/1來(lái)區分,在DLAB=1用于設定通訊所需的波特率。常用的波特率參數見(jiàn)下表:

 

速率(BPS)

波特率高八位

波特率低八位

50

09h

00h

300

01h

80h

600

00h

C0h

2400

00h

30h

4800

00h

18h

9600

00h

0Ch

19200

00h

06h

38400

00h

03h

57600

00h

02h

115200

00h

01h

 

以下幾個(gè)表格為8250的寄存器的功能描述:

中斷允許寄存器(IER):

注 釋

7

未使用

6

未使用

5

進(jìn)入低功耗模式(16750)

4

進(jìn)入睡眠模式(16750)

3

允許MODEM狀態(tài)中斷

2

允許接收線(xiàn)路狀態(tài)中斷

1

允許發(fā)送保持器空中斷

0

允許接收數據就緒中斷

Bit0置1將允許接收到數據時(shí)產(chǎn)生中斷,Bit1置1時(shí)允許發(fā)送保持寄存器空時(shí)產(chǎn)生中斷,Bit2置1將在LSR變化時(shí)產(chǎn)生中斷,相應的Bit3置位將在MSR變化時(shí)產(chǎn)生中斷。

中斷識別寄存器(IIR):

注 釋

Bit6:7=00

無(wú)FIFO

Bit6:7=01

允許FIFO,但不可用

Bit6:7=11

允許FIFO

Bit5

允許64字節FIFO(16750)

Bit4

未使用

Bit3

16550超時(shí)中斷

Bit2:1=00

MODEM狀態(tài)中斷(CTS/RI/DTR/DCD)

Bit2:1=01

發(fā)送保持寄存器空中斷

Bit2:1=10

接收數據就緒中斷

Bit2:1=11

接收線(xiàn)路狀態(tài)中斷

Bit0=0

有中斷產(chǎn)生

Bit0=1

無(wú)中斷產(chǎn)生

IIR為只讀寄存器,Bit6:7用來(lái)指示FIFO的狀態(tài),均為0時(shí)則無(wú)FIFO,此時(shí)為8250或16450芯片,為01時(shí)有FIFO但不可以使用,為11時(shí)FIFO有效并可以正常工作。Bit3用來(lái)指示超時(shí)中斷(16550/16750)。

Bit0用來(lái)指示是否有中斷發(fā)生,Bit1:2標識具體的中斷類(lèi)型,這些中斷具有不同的優(yōu)先級別,其中LSR中斷級別最高,其次是數據就緒中斷,然后是發(fā)送寄存器空中斷,而MSR中斷級別最低。

FIFO控制寄存器(FCR):

注 釋

Bit7:6=00

1Byte產(chǎn)生中斷

Bit7:6=01

4Byte產(chǎn)生中斷

Bit7:6=10

8Byte產(chǎn)生中斷

Bit7:6=11

14Byte產(chǎn)生中斷

Bit5

允許64字節FIFO

Bit4

未使用

Bit3

DMA模式選擇

Bit2

清除發(fā)送FIFO

Bit1

清除接收FIFO

Bit0

允許FIFO

FCR可寫(xiě)但不可以讀,該寄存器用來(lái)控制16550或16750的FIFO寄存器。Bit0置1將允許發(fā)送/接收的FIFO工作,Bit1和Bit2置1分別用來(lái)清除接收及發(fā)送FIFO。清除接收及發(fā)送FIFO并不影響移位寄存器。Bit1:2可自行復位,因此無(wú)需使用軟件對其清零。Bit6:7用來(lái)設定產(chǎn)生中斷的級別,發(fā)送/接收中斷將在發(fā)送/接收到對應字節數時(shí)產(chǎn)生。

線(xiàn)路控制寄存器(LCR):

注 釋

Bit7=1

允許訪(fǎng)問(wèn)波特率因子寄存器

Bit7=0

允許訪(fǎng)問(wèn)接收/發(fā)送及中斷允許寄存器

Bit6

設置間斷,0-禁止,1-設置

Bit5:3=XX0

無(wú)校驗

Bit5:3=001

奇校驗

Bit5:3=011

偶校驗

Bit5:3=101

奇偶保持為1

Bit5:3=111

奇偶保持為0

Bit2=0

1位停止位

Bit2=1

2位停止位(數據位6-8位),1.5位停止位(5位數據位)

Bit1:0=00

5位數據位

Bit1:0=01

6位數據位

Bit1:0=10

7位數據位

Bit1:0=11

8位數據位

LCR用來(lái)設定通訊所需的一些基本參數。Bit7為1指定波特率因子寄存器有效,為0則指定發(fā)送/接收及IER有效。Bit6置1會(huì )將發(fā)送端置為0,這將會(huì )使接收端產(chǎn)生一個(gè)“間斷”。Bit3-5用來(lái)設定是否使用奇偶校驗以及奇偶校驗的類(lèi)型,Bit3=1時(shí)使用校驗,Bit4為0則為奇校驗,1為偶校驗,而B(niǎo)it5則強制校驗為1或0,并由Bit4決定具體為0或1。Bit2用來(lái)設定停止位的長(cháng)度,0表示1位停止位,為1則根據數據長(cháng)度的不同使用1.5-2位停止位。Bit0:1用來(lái)設定數據長(cháng)度。

MODEM控制寄存器(MCR):

注 釋

Bit7

未使用

Bit6

未使用

Bit5

自動(dòng)流量控制(僅16750)

Bit4

環(huán)路測試

Bit3

輔助輸出2

Bit2

輔助輸出1

Bit1

設置RTS

Bit0

設置DSR

MCR寄存器可讀可寫(xiě),Bit4=1進(jìn)入環(huán)路測試模式。Bit3-0用來(lái)控制對應的管腳。

線(xiàn)路狀態(tài)寄存器(LSR):

注 釋

Bit7

FIFO中接收數據錯誤

Bit6

發(fā)送移位寄存器空

Bit5

發(fā)送保持寄存器空

Bit4

間斷

Bit3

幀格式錯

Bit2

奇偶錯

Bit1

超越錯

Bit0

接收數據就緒

LSR為只讀寄存器,當發(fā)生錯誤時(shí)Bit7為1,Bit6為1時(shí)標示發(fā)送保持及發(fā)送移位寄存器均空,Bit5為1時(shí)標示僅發(fā)送保持寄存器空,此時(shí),可以由軟件發(fā)送下一數據。當線(xiàn)路狀態(tài)為0時(shí)Bit4置位為1,幀格式錯時(shí)Bit3置位為1,奇偶錯和超越錯分別將Bit2及Bit1置位為1。Bit0置位為1表示接收數據就緒。

MODEM狀態(tài)寄存器(MSR):

注 釋

Bit7

載波檢測

Bit6

響鈴指示

Bit5

DSR準備就緒

Bit4

CTS有效

Bit3

DCD已改變

Bit2

RI已改變

Bit1

DSR已改變

Bit0

CTS已改變

MSR寄存器的高4位分別對應MODEM的狀態(tài)線(xiàn),低4位表示MODEM的狀態(tài)線(xiàn)是否發(fā)生了變化。



關(guān)鍵詞: RS232接口規范編程資

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>