当前位置:首页 >> 电子/电路 >>

数字量输入输出-串行通信


串行通信接口

教学重点
?异步串行通信协议和RS232C接口 ?8250的内部结构和编程 ?异步通信编程举例

串行通信基础
? 串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传 送的方式 ? 串行通信的优势:用于通信的线路少,因而在远距离通信时可以极 大地降低成本 ? 串行通信适合于远距离数据传送,也常用于速度要求不高的近距离 数据传送 ? PC系列机上有两个串行异步通信接口、键盘、鼠标器与主机间采用 串行数据传送
串行I/O:逐位串行方式(先低后高)

0 1

0 0

1

0 1 1 (4BH)

源 TxD
RxD GND

RxD
TxD GND

目 的

异步通信

? 串行通信时的数据、控制和状态信息都使用同一 根信号线传送 ? 收发双方必须遵守共同的通信协议(通信规程), 才能解决传送速率、信息格式、位同步、字符同 步、数据校验等问题 ? 串行异步通信以字符为单位进行传输,其通信协 议是起止式异步通信协议

起止式异步通信协议
字符
起始位 数据位 校验位 停止位 空闲位

1

0

0/1 0/1
低位



0/1 0/1 1 1
高位

1

起始位——每个字符开始传送的标志,起始位采用逻辑0电平 数据位——数据位紧跟着起始位传送。由5~8个二进制位组成,低位先传送 校验位——用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位

停止位——表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位
空闲位——传送字符之间的逻辑1电平,表示没有进行传送

数据传输速率
? 数据传输速率也称比特率(Bit Rate)
? 每秒传输的二进制位数bps ? 字符中每个二进制位持续的时间长度都一样,为数据 传输速率的倒数

? 当进行二进制数码传输,且每位时间长度相等时, 比特率还等于波特率(Baud Rate) ? 过去,串行异步通信的数据传输速率限制在50 bps到9600 bps之间。现在,可以达到115200 bps 或更高

同步通信
? 以一个数据块(帧)为传输单位,每个数据块附加1 个或2个同步字符,最后以校验字符结束 ? 同步通信的数据传输效率和传输速率较高,但硬件 电路比较复杂 ? 串行同步通信主要应用在网络当中 ? 最常使用高级数据链路控制协议HDLC ~ ~

同步字符

数据

数据 ~ ~

数据

校验字符

传输制式

全双工 半双工 单工

站A

站B

站A

站B

站A

站B

调制解调器

?调制(Modulating)
?把数字信号转换为电话线路传送的模拟信号

?解调(Demodulating)
?将电话线路的模拟信号转换为数字信号

?调制解调器MODEM
?具有调制和解调功能的器件合制的一个装置

串行接口标准RS-232-C ?美国电子工业协会EIA制定的通用标准串 行接口
?1962年公布,1969年修订 ?1987年1月正式改名为EIA-232D

?RS-232-C标准对下述两个方面作了规定:
1、信号电平标准 2、控制信号的定义

RS-232-C的电气特性
? RS-232C规定的信号电平标准
? 逻辑”1”为-3V~-15V ? 逻辑”0”为+3V~+15V ? 实际常用±12V 相互转换

?

标准TTL电平(输出)
? ?

逻辑”1”:+2.4V~+5V 逻辑”0”:0V~0.4V

MC1489长线接收器(RS232=>TTL) Quad line receivers
RS232电平 TTL电平 +5V

MC1488 长线驱动器(TTL => RS232)

Quad Line Driver(+12V/-12V)
-12V TTL电平 RS232电平 +12V

长线收发器Tranceiver
ICL232 MAX232

单5V电源 SN75176: RS485/422

TTL

RS232

RS-232-C的信号定义

?232C接口标准使用一个25针连接器(DB25)

?绝大多数设备只使用其中9个信号,所以 就有了9针连接器(DB9)

RS-232-C的主要信号定义(1) ?TxD:发送数据
?串行数据的发送端

?RxD:接收数据
?串行数据的接收端

RS-232-C的主要信号定义(2)
? RTS:请求发送(出) ? 当数据终端设备准备好送出数据时,就发出有效的RTS信号,用 于通知数据通信设备准备接收数据 ? CTS:清除发送(允许发送)(入) ? 当数据通信设备已准备好接收数据终端设备的传送数据时,发 出CTS有效信号来响应RTS信号 RTS和CTS是数据终端设备与数据通信设备间一对用于数据发送的 联络信号 ? DTR:数据终端准备好(出) ? DSR:数据装置准备好(入) DTR和DSR也可用做数据终端设备与数据通信设备间的联络信号,例 如应答数据接收

RS-232-C的主要信号定义(3)
? GND:信号地 ? 为所有的信号提供一个公共的参考电平 ? DCD:载波信号检测(入) ? 当本地调制解调器接收到来自对方的载波信号时,该引脚向数 据终端设备提供有效信号 ? RI:振铃指示(入) ? 当调制解调器接收到对方的拨号信号期间,该引脚信号作为电 话铃响的指示、保持有效 ? 保护地(机壳地) ? 起屏蔽保护作用的接地端,一般应参照设备的使用规定,连接 到设备的外壳或大地 ? TxC:发送器时钟 ? 控制数据终端发送串行数据的时钟信号 ? RxC:接收器时钟 ? 控制数据终端接收串行数据的时钟信号

RS-232C的连接

?微机利用232C接口连接调制解调器,用于 实现通过电话线路的远距离通信 ?微机利用232C接口直接连接进行短距离通 信。这种连接不使用调制解调器,所以被 称为零调制解调器(Null Modem)连接

连接调制解调器
MODEM MODEM 微机(DB25) 发送数据TxD 2 2 2 接收数据RxD 3 3 3 请求发送RTS 4 4 4 电话线 允许发送CTS 5 5 5 数据装置准备好DSR 6 6 6 信号地GND 7 7 7 载波检测DCD 8 8 8 数据终端准备好DTR 20 20 20 振铃指示RI 22 22 22 微机

2 3 4 5 6 7 8 20 22

不使用联络信号的3线相连方式
微机 TxD RxD GND 微机

为了交换信息,TxD和RxD应当交叉连接 程序中不必使RTS和DTR有效,也不检测 CTS和DSR是否有效

“伪”使用联络信号的3线相连方式
微机 微机

TxD RxD RTS CTS
GND DSR DTR

RTS和CTS各自互接,DTR和DSR各自互接 表明请求传送总是允许、数据装置总准备好

使用联络信号的多线相连方式
微机 TxD RxD RTS CTS GND DSR DTR 微机

通信比较可靠,所用连线较多,不如前者经济

异步串行通信控制器接口芯片Ins8250
? 1M~10M时钟频率 ? PC/XT机: 外接1.8432MHZ

8250的内部结构 ?8250实现了起止式串行异步通信协议,支 持全双工通信
?通信字符可选择数据位为5~8位 ?停止位1、1.5或2位 ?可进行奇偶校验 ?具有奇偶、帧和溢出错误检测电路

Ins8250内部结构
数 据 总 线 缓 冲 寻 址 及 控 制 逻 辑
发送保持寄存器 接收缓冲寄存器 线路控制寄存器 线路状态寄存器 除数寄存器高位
CS0 CS1 CS2 A2 A1 A0 /ADS DISTR /DISTR DOSTR /DOSTR DDIS MR

UART
发送移位寄存器 接收移位寄存器
RCLK XTAL1 XTAL2 Sout Sin

D0~D7

1M~10M

除数寄存器低位

波特率发生器

/BAUDOUT
/RTS /CTS

MODEM 内 部 数 据 总 线
MODEM控制寄存器
MODEM状态寄存器

控制逻辑

握 /RI /DSR手 /RLSD /DTR 线
/OUT1 /OUT2

中断允许寄存器 中断识别寄存器

控制逻辑

INTRPT

中断

UART内部结构示意
接收时钟 RxC DATA_BUS UART 接 收位 移 寄存器 接 收数 据 缓冲器 RDA RxD

/RESET /WR /RD CS

溢出错误 OVRN 帧格式错误 FRERR 校验错误PE

/RxC

控制逻辑
TBE

/TxC

发送时钟 TxC

发 送数 据 缓冲器 发 送位 移 寄存器

TxD

8250的引脚信号介绍

?分成连接CPU的部分和连接外设的部分 ?注意:8250不是Intel公司的产品,所以该 芯片引脚名称与前面学习的8253、8255等 Intel产品有所不同,但是引脚功能却是类 似的

1.与外设连接的信号

8250

发送数据SOUT 接收数据SIN 请求发送/RTS 允许发送/CTS 数据装置准备好/DSR 数据终端准备好/DTR 信号地GND 载波检测/DCD 振铃指示/RI

2.与处理器连接的信号引脚
? ? ? ? ? ? D0~D7 数据线 A0~A2 地址线 CS0、CS1、/CS2 片选线 CSOUT 片选输出信号 /ADS 地址选通信号 DISTR /DISTR 数据输入选通, CPU从8250内部寄存器读出数据, 相当于I/O读信号 ? DOSTR /DOSTR 数据输出选通,CPU将数据写入8250内部寄存器, 相当于I/O写信号

? MR ? INTRPT

? ? ?

? ?

复位信号线 中断请求信号输出:8250有4级共10个中断源,当任一个 未被屏蔽的中断源有请求时,INTRPT输出高电平向CPU 请求中断 XTAL1 XTAL2 时钟输入引脚和时钟输出引脚: /BAUDOUT 波特率输出引脚,其频率是发送波特率的16倍 RCLK 接收时钟引脚, 接收外部提供的接收时钟信号;若采用发 送时钟作为接收时钟,则只要将RCLK引脚和/BAUDOUT 引脚直接相连 /OUT1和/OUT2 两个一般用途的输出信号,由芯片内部调制控制寄存器的 D2和D3使其输出低电平有效信号,复位使其恢复为高 DDIS 驱动器禁止信号输出, CPU从8250读取数据时,DDIS引 脚输出低电平,用来禁止外部收发器对系统总线的驱 动;其他时间,DDIS为高电平,PC/XT中未用

异步通信适配器接口电路介绍 ?IBM PC/XT机的串行异步通信适配器
?以8250为核心 ?完成发送时的并转串和接收时的串转并以及相 应的控制工作 ?配置了TTL电平与EIA电平转换电路等

异步通信适配器的部分接口电路
LS245 DIR

注意:J9~J12跨接器 和OUT2*的作用
D0~D7 DISTR DOSTR A0~A2 CS2 +5V 8250

D0~D7 IOR IOW A0~A2 AEN A3~A7A9

RCLK BAUDOUT CS0 CS1 ADS DISTR DOSTR

+5V

A8 IRQ4 IRQ3 RESET

J9 J10 J11 J12

OUT1 OUT2 INTRPT MR 1.8432MHz XTAL1

适配器端口地址译码:
A9 A8
J12通

A7 A6 A5 A4

A3 A2 A1 A0 I/O地址

1 1 1 1 1 0 1 0

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1

3F8H 3FFH 2F8H 2FFH

J10通

8250的寄存器

?8250内部有9种可访问的寄存器,除数寄存 器是16位的,占用两个连续的8位端口 ?内部寄存器用引脚A0~A2来寻址;同时还 要利用通信线路控制寄存器的最高位,即 除数寄存器访问位DLAB,来区别共用两 个端口地址的不同寄存器(P336表5.10)

INS8250内部寄存器地址
A2 A1 A0 000 000 001 001 010 011 100 101 110 111 DLAB 0 1 1 0 x x x x x x COM1 3F8 3F8 3F9 3F9 3FA 3FB 3FC 3FD 3FE 3FF 寄存器 写发送寄存器/读接收寄存器 除数寄存器低字节 除数寄存器高字节 中断允许 中断识别 线路控制 MODEM控制 线路状态 MODEM 状态 不用

1.接收缓冲寄存器RBR
CPU 接收缓冲寄存器 接收移位寄存器 同步控制 8250 SIN 并行数据 串行数据
0/1 0/1 0/1 0/1

检测接收错误 去除起始位、 校验位、停止位

双缓冲寄存器结构保证数 据的连续接收

2.发送保持寄存器THR
CPU 发送保持寄存器 并行数据

串行数据
SOUT
0/1 0/1 0/1 0/1

发送移位寄存器
同步控制 8250

加入起始位、 校验位、停止位

双缓冲寄存器结构保证 数据的连续发送

3.除数寄存器
16 T

数据线 (SIN)
时钟 (RCLK)

起始位 T

8T

16 T

除数寄存器保存设定的分频系数 分频系数(除数)=外部时钟频率÷(16×波特率)

4.通信线路控制寄存器LCR
DLAB
寄存器选择 0 正常值 1 除数寄存器 中止字符 0 无作用 1 发送中止字符

D6

D5 D4 D3
校验位设置 ××0 无校验位 001 设置奇校验 011 设置偶校验 101 校验位为1 111 校验位为0

D2

D1 D0
数据位个数 00 5位 01 6位 10 7位 11 8位

指定串行异步 通信的字符格式

停止位个数 0 1位 1 1.5位(数据位为5位时) 1 2位(数据位为6~8位时)

5.通信线路状态寄存器LSR(P338图5.58)
0 D6 D5 D4
为1, 表示 正在 传输 中止 字符

D3
为1, 表示 出现 帧错 误

D2
为1, 表示 出现 奇偶 错

D1
为1, 表示 出现 溢出 错

D0
为1,表示 接收数据缓 冲器收到一 个数据,即 接收数据准 备好;当 CPU读走数 据后,该位 为0

为1,表示 发送移位寄 存器空;当 数据由发送 保持寄存器 移入发送移 位寄存器时, 该位为0

为1,表 示发送保 持寄存器 空,当 CPU将字 符写入发 送保持寄 存器后, 该位为0

提供串行异步通信的 当前状态供CPU读取 和处理

6.调制解调器控制寄存器MCR(P339图5.59)
0 0 0 LOOP OUT2
为1使 /OUT2引 脚为低否 则为高

OUT1

RTS
为1使 /RTS引脚 为低否则 为高

DTR

为1使8250为 自诊断工作 方式否则为 正常工作方 式

设置8250与数据通信 设备之间联络应答的 输出信号

为1使 /OUT1引 脚为低否 则为高

为1使 /DTR引脚 为低否则 为高

7.调制解调器状态寄存器MSR(P339图5.60)
RLSD RI DSR CTS RLSD RI DSR CTS

? 反映4个控制输入信号的当前状态及其变化 ? MSR高4位中某位为1,说明相应输入信号当前为低有 效,否则为高电平 ? MSR低4位中某位为1,则说明从上次CPU读取该状态 后,相应输入信号已发生改变,从高变低或反之 ? MCR低4位任一位置1,可产生调制解调器状态中断 ? 当CPU读取该状态寄存器或复位后,低4位被清零

8.中断允许寄存器IER
D7 D4 D3
MODEM 状态变化

D2
接收数据 错

D1
发送寄存 器空

D0
接收数据 就绪

0000

中断允许寄存器的低4位控制8250这4级中断是否被 允许 ? 某位为1,则对应的中断被允许 ? 某位为0,则对应的中断被屏蔽 ? 8250设计有2个中断寄存器和4级中断 ? 4级中断的优先权,是按照串行通信过程中事件的 紧迫程度安排的、是固定不变的 ? 用户可利用中断允许或禁止进行控制

4级中断
? 接收线路状态中断
? 奇偶错、溢出错、帧错和中止字符 优先权高

? 接收器数据准备好中断 ? 发送保持寄存器空中断 ? 调制解调器状态中断
? 清除发送状态改变 ? 数据终端准备好状态改变 ? 振铃接通变成断开 ? 接收线路信号检测状态改变

优先权低

4级10种中断源

9.中断识别寄存器IIR
00000
ID1ID0 优先权

ID1 ID0

IP 0 有中断 1 无中断

中断类型

1 1 0 0

1 0 1 0

1 2 3 4

接收线路状态 接收数据准备好 发送保持寄存器空 调制解调器状态

*保存正在请求中断的优先权最高的中断 级别编码 *IRR寄存器的内容仅可以读出 *复位后D0=1,其余位为0

异步通信适配器的初始化编程 ? 对8250的内部控制寄存器进行编程写入 ⑴ 写入除数寄存器
? 设置波特率 ⑵ 写入通信线路控制寄存器 ? 设置字符格式 ⑶ 写入调制解调器控制寄存器 ? 设置工作方式 ⑷ 写入中断允许寄存器 ? 设置中断允许或屏蔽位

异步通信编程举例 (P340) ;初始化编程 ;设置波特率为2400 (P338表5.11) MOV DX, 3FBH ;线路控制寄存器地址 MOV AL, 80H OUT DX, AL ;DLAB=1, 设置写除数标志 MOV DX, 3F9H ;高位除数寄存器 MOV AL, 0 OUT DX, AL MOV DX, 3F8H ;低位除数寄存器 MOV AL, 30H OUT DX, AL

;设置数据格式 ;数据长7位,1个停止位,偶校验 MOV DX, 3FBH ;注意DLAB=0 MOV AL, 00011010B OUT DX, AL
;设置操作方式,不用中断 ;/OUT2=1,/DTR=0,/RTS=0 MOV DX, 3FCH ;MODEM控制寄存器 MOV AL, 00000011B ;设置/RTS、 /DTR有效 OUT DX, AL MOV DX, 3F9H ;中断允许寄存器 MOV AL, 0 ;屏蔽全部中断 OUT DX, AL

;查询式通信 ;发送字符在CL中,若收到字符,暂存于AL KEEP_TRY:MOV DX,3FDH ;读线路状态寄存器端口 IN AL,DX TEST AL,00011110B ;检查出错否 JNZ ERROR_ROUTINE ;转出错处理 TEST AL, 00000001B ;检查收到新数否 JNZ RECEIVE ;转接收 TEST AL,00100000B ; 检查可否发送数据 JZ KEEP_TRY ;重新检查 MOV DX,3F8H MOV AL,CL ;发送数据 OUT DX,AL JMP SHORT KEEP_TRY RECEIVE: MOV DX,3F8H ;接收数据 IN AL,DX ….

INS8250内部寄存器地址
A2 A1 A0 000 000 001 001 010 011 100 101 110 111 DLAB 0 1 1 0 x x x x x x COM1 3F8 3F8 3F9 3F9 3FA 3FB 3FC 3FD 3FE 3FF 寄存器 写发送寄存器/读接收寄存器 除数寄存器低字节 除数寄存器高字节 中断允许 中断识别 线路控制 MODEM控制 线路状态 MODEM 状态 不用

4.通信线路控制寄存器LCR
DLAB
寄存器选择 0 正常值 1 除数寄存器 中止字符 0 无作用 1 发送中止字符

D6

D5 D4 D3
校验位设置 ××0 无校验位 001 设置奇校验 011 设置偶校验 101 校验位为1 111 校验位为0

D2

D1 D0
数据位个数 00 5位 01 6位 10 7位 11 8位

指定串行异步 通信的字符格式

停止位个数 0 1位 1 1.5位(数据位为5位时) 1 2位(数据位为6~8位时)

6.调制解调器控制寄存器MCR(P339图5.59)
0 0 0 LOOP OUT2
为1使 /OUT2引 脚为低否 则为高

OUT1

RTS
为1使 /RTS引脚 为低否则 为高

DTR

为1使8250为 自诊断工作 方式否则为 正常工作方 式

设置8250与数据通信 设备之间联络应答的 输出信号

为1使 /OUT1引 脚为低否 则为高

为1使 /DTR引脚 为低否则 为高

8.中断允许寄存器IER
D7 D4 D3
MODEM 状态变化

D2
接收数据 错

D1
发送寄存 器空

D0
接收数据 就绪

0000

中断允许寄存器的低4位控制8250这4级中断是否被 允许 ? 某位为1,则对应的中断被允许 ? 某位为0,则对应的中断被屏蔽 ? 8250设计有2个中断寄存器和4级中断 ? 4级中断的优先权,是按照串行通信过程中事件的 紧迫程度安排的、是固定不变的 ? 用户可利用中断允许或禁止进行控制

5.通信线路状态寄存器LSR(P338图5.58)
0 D6 D5 D4
为1, 表示 正在 传输 中止 字符

D3
为1, 表示 出现 帧错 误

D2
为1, 表示 出现 奇偶 错

D1
为1, 表示 出现 溢出 错

D0
为1,表示 接收数据缓 冲器收到一 个数据,即 接收数据准 备好;当 CPU读走数 据后,该位 为0

为1,表示 发送移位寄 存器空;当 数据由发送 保持寄存器 移入发送移 位寄存器时, 该位为0

为1,表 示发送保 持寄存器 空,当 CPU将字 符写入发 送保持寄 存器后, 该位为0

提供串行异步通信的 当前状态供CPU读取 和处理

异步通信适配器的部分接口电路
LS245 DIR

注意:J9~J12跨接器 和OUT2*的作用
D0~D7 DISTR DOSTR A0~A2 CS2 +5V 8250

D0~D7 IOR IOW A0~A2 AEN A3~A7A9

RCLK BAUDOUT CS0 CS1 ADS DISTR DOSTR

+5V

A8 IRQ4 IRQ3 RESET

J9 J10 J11 J12

OUT1 OUT2 INTRPT MR 1.8432MHz XTAL1

中断通信方式的编程注意

?

关键
注意 简便方法

解决主程序与中断服务程序的数据传递
?

处理好8250的4级10种中断源
?

例:只允许接收数据准备好中断


相关文章:
串行输入输出接口
串行输入/输出接口 第一节 串行通信基础知识 一、...因此现在越来越多的数字化仪器仪表电路中不再 采用 ...(2)中断传输方式(Interrupt) 该方式传送的数据量很...
第9章 模拟量输入输出
第9 章 模拟量输入/输出 9.1 DA 转换器 把数字信号转换成模拟信号的方法很多...根据串行通信协议的不同,串行输出 ADC 转换器种类也很多,如 SPI 总线接口、 ...
修改新编单片机实验指导书
实验十 数字量输入输出实验 定时与中断实验 串行通信实验 串行 A/D 转换实验 交通灯控制实验 现实人体视觉暂留特性测试实验 实时时钟制作实验 简易电子琴制作实验…...
...Modbus串行通信(Modbus通信给定速度、数字量输出控...
通信; 标准 RJ45 插头; Unity Premium 与 ATV31 的 Modbus 串行通信向导 11 施耐德技术服务中心 TSC 4.2 Premium 数字量输出模块与 ATV31 逻辑输入端子的连接...
...、数字量输出控制启停)_完全通信指导_图文
通信给定速度、数字量输出控制启停本向导分为两部分: 1.《快速操作指南》---...输入/输出设置 << >> QUICK Code Unity M340 与 ATV71 的 CANopen 串行通信...
修改新编单片机实验指导书
数字量输入输出实验 实验二 定时与中断实验 实验三 串行通信实验 实验四 串行 ...教学板自检程序设计 掌握单片机串行通信收发接口的使用 3.学习一般应用系统自检...
1--S7-200 PLC系统构成
S7-200 CPU 之间的通信;通过 自由口通信协议和 MOD-BUS 协议, 可以与其他设备 进行串行通信;通过 AS-I 通信接口模块,可以接入 496 个远程数字量输入/输出。 ...
第二章 过程通道与输入输出接口
如图,I/O 通道分为:模拟量输入通道 模拟量输出通道 数字量输入通道 数字量...并行通信 ? ? 串行通信一、并行通信 并行通信:把一个字符的各数位用几条线...
西门子S7-200PLC试题及答案
是将模拟量输出寄存器 AQW 中的数字量转换为模拟量...10.EM231 模拟量输入模块最多可连接___ ___个模拟...12.S7-200 系列 PLC 的串行通信口可以由用户程序...
第五章 数字量输入输出
第五章 数字量输入输出_理学_高等教育_教育专区。微机原理4 第五章 数字量输入...接口。这两种接口分别以串行通信与并行通信方式实现微型计算机与外设的连 接。 (...
更多相关标签: