微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RS232接口规范及编程资料(上)

RS232接口规范及编程资料(上)

时间:12-12 来源:互联网 点击:
大多数的电脑设备都具有RS-232C接口,尽管它的性能指标并非很好。在广泛的市场支持下依然常胜不衰。就使用而言,RS-232也确实有其优势:仅需3根线便可在两个数字设备之间全双工的传送数据。不过,RS-232C的控制要比使用并行通讯的打印机接口更难于控制。RS-232C使用了远较并行口更多的寄存器。这些寄存器用来实现串行数据的传送及RS-232C设备之间的握手与流量控制。本文将分别描述的串行通讯的原理及具体的软件设计。

(1)RS-232C介绍与PC硬件:

RS-232C使用-3到-25V表示数字“1”,使用3V到25V表示数字“0”,RS-232C在空闲时处于逻辑“1”状态,在开始传送时,首先产生一起始位,起始位为一个宽度的逻辑“0”,紧随其后为所要传送的数据,所要传送的数据有最低位开始依此送出,并以一个结束位标志该字节传送结束,结束位为一个宽度的逻辑“1”状态。

PC机一般使用8250或16550作为串行通讯的控制器,使用9针或25针的接插件将串行口的信号送出。该插座的信号定义如下:

DB-25

DB-9

信号名称

方向

含 义

2

3

TXD

输出

数据发送端

3

2

RXD

输入

数据接收端

4

7

RTS

输出

请求发送(计算机要求发送数据)

5

8

CTS

输入

清除发送(MODEM准备接收数据)

6

6

DSR

输入

数据设备准备就绪

7

5

SG

-

信号地

8

1

DCD

输入

数据载波检测

20

4

DTR

输出

数据终端准备就绪(计算机)

22

9

RI

输入

响铃指示

 

以上信号在通讯过程之中可能会被全部或部分使用,最简单的通讯仅需TXD及RXD及SG即可完成,其他的握手信号可以做适当处理或直接悬空,至于是否可以悬空这视乎你的通讯软件。比如说,如果使用DOS所提供的BIOS通讯驱动程序,那么,这些握手信号则需要做如下处理,因为BIOS的通讯驱动使用了这些信号。如果使用自己编写的串行驱动程序则可以完全不使用这些握手信号(详见下面有关章节)。

PC机一般使用8250或16550的作为串行通讯控制器,8250及16550的管脚排列如下:

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

基地址

读/写

寄存器缩写

注 释

0

Write

-

发送保持寄存器(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

线路控制寄存器

4

Read/Write

MCR

MODEM控制寄存器

5

Read

LSR

线路状态寄存器

6

Read

MSR

MODEM状态寄存器

7

Read/Write

-

Scratch Register

PC机支持1-4个串行口,即COM1-COM4,其基地址在BIOS数据区0000:0400-0000:0406中描述,对应地址分别为3F8/2F8/3E8/2E8,COM1及COM3使用PC机中断4,COM2及COM4使用中断3。

在上表中,8250共有12个寄存器,使用了8个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1用于设定通讯所需的波特率。常用的波特率参数见下表:

 

速率(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

 

以下几个表格为8250的寄存器的功能描述:

中断允许寄存器(IER):

注 释

7

未使用

6

未使用

5

进入低功耗模式(16750)

4

进入睡眠模式(16750)

3

允许MODEM状态中断

2

允许接收线路状态中断

1

允许发送保持器空中断

0

允许接收数据就绪中断

Bit0置1将允许接收到数据时产生中断,Bit1置1时允许发送保持寄存器空时产生中断,Bit2置1将在LSR变化时产生中断,相应的Bit3置位将在MSR变化时产生中断。

中断识别寄存器(IIR):

注 释

Bit6:7=00

无FIFO

Bit6:7=01

允许FIFO,但不可用

Bit6:7=11

允许FIFO

Bit5

允许64字节FIFO(16750)

Bit4

未使用

Bit3

16550超时中断

Bit2:1=00

MODEM状态中断(CTS/RI/DTR/DCD)

Bit2:1=01

发送保持寄存器空中断

Bit2:1=10

接收数据就绪中断

Bit2:1=11

接收线路状态中断

Bit0=0

有中断产生

Bit0=1

无中断产生

IIR为只读寄存器,Bit6:7用来指示FIFO的状态,均为0时则无FIFO,此时为8250或16450芯片,为01时有FIFO但不可以使用,为11时FIFO有效并可以正常工作。Bit3用来指示超时中断(16550/16750)。

Bit0用来指示是否有中断发生,Bit1:2标识具体的中断类型,这些中断具有不同的优先级别,其中LSR中断级别最高,其次是数据就绪中断,然后是发送寄存器空中断,而MSR中断级别最低。

FIFO控制寄存器(FCR):

注 释

Bit7:6=00

1Byte产生中断

Bit7:6=01

4Byte产生中断

Bit7:6=10

8Byte产生中断

Bit7:6=11

14Byte产生中断

Bit5

允许64字节FIFO

Bit4

未使用

Bit3

DMA模式选择

Bit2

清除发送FIFO

Bit1

清除接收FIFO

Bit0

允许FIFO

FCR可写但不可以读,该

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top