串行异步通信_8086基础4——串行通信

本文介绍了串行通信的基本概念,包括其与并行通信的区别和应用场景。重点讲解了8251芯片在串行通信中的作用,详细阐述了8251的引脚功能、内部结构和寄存器配置,并提供了串口通信配置流程及源代码示例。
摘要由CSDN通过智能技术生成

4.1 串行通信简介

       并行通信虽然通信速度比较快,但是如果数据位数很多的时候,对应的数据线也会很多,之前学习的端口输入输出本质上就是一种并行通信,为了较少数据线的数量,降低人工布线的难度,串行通信被设计了出来。

       串行通信作为计算机通信方式之一,主要起到主机与外设以及主机之间的数据传输作用,串行通信具有传输线少、成本低的特点,主要适用于近距离的人-机交换、实时监控等系统通信工作当中,借助于现有的电话网也能实现远距离传输,因此串行通信接口是计算机系统当中的常用接口。

       现在常用的串行通信就是能够产生TTL电平的异步串行通信,通过外扩的芯片,例如RS232,MAX485就产生了现在常用的232通信和485通信,随着串行通信的发展,通信速率几乎和并行通信一样,甚至比并行通信还快。

4.2 8251简介

4.1.1 引脚详解

594eb33779ac5ac8d5f0b3853420954f.png

(1)三态双向八位数据口D0~D7:用于和CPU进行数据通信

(2)写控制WR:低电平有效

(3)读控制RD:低电平有效

(4)片选CS:低电平有效

(5)复位RESET:高电平有效,用于复位芯片

(6)传送时钟TXC:数据发送时钟线

(7)接收时钟RXC:数据接收时钟线

(8)芯片时钟CLK:为内部电路提供时钟脉冲,应该大于传送速率的30倍

(9)传送寄存器空信号TXE:没有可以发送的数据时,该引脚为1,当从CPU接收到数据且控制字的TXEN=1时,该引脚变为0,在同步工作方式时,若CPU来不及输出一个字符,则将使该引脚变为1,同时发送器在输出线上自动插入同步字符,以填补传输空隙

(10)传送允许信号CTS:Modem用于通知8251A,Modem准备接收数据

(11)SYNDET/BD:该引脚与状态寄存器中的SYNDET/BD一样,具有内同步方式和外同步方式两种

a.内同步方式:该引脚作为输出,如果SYNC字符被发现,则变为1,当CPU读取状态寄存器内容时,它被复位,高电平输出代表8251A已经同步

b.外同步方式:该引脚作为输入,当接收到高电平时,表示同步开始,用于通知接收电路开始装配收到的串行数据,在异步通信时表示Break状态出现在RXD线上,输入上升沿使8251A在下一个RXC的下降沿开始装载数据

(12)发送准备就绪TXRDY:可以作为CPU的中断请求信号,当传送寄存器空或者CTS引脚为0或者控制字的TXEN=1时该引脚置1

(13)接收准备就绪RXRDY:用于通知CPU芯片已经接收到一个字符,8251A每接收到一个字符该引脚置1,CPU取走后,该引脚变为0

(14)数据命令选择C/D:CPU向8251A写入时,该引脚为1选择命令,为0选择数据;当CPU向8251A读取时,该引脚为1用于选择状态,为0选择数据

(15)DTR:8251A输出给Modem表示8251A已经准备就绪

(16)RTS:8251A输出给Modem表示8251A已经准备传送数据

(17)DSR:表示Modem已经准备好

(18)数据发送TXD:发送数据

(19)数据接收RXD:接收数据

4.1.2 内部结构框图

5c8bfb451b6fa0c6b611685afec75d9e.png

4.1.3 寄存器详解

(1)8251A的模式字

模式字用于设置8251A的工作模式:同步/异步方式,数据位,奇偶校验位,校验方式与停止位的个数等。

D7

D6

D5

D4

D3

D2

D1

D0

S2/SCS

S1/ESD

EP

PEN

L2

L1

B2

B1

D7~D6:这两位在同步方式与异步方式下含义不一样,具体配置如下表所示

S2/SCS

S1/ESD

停止位个数

异步方式

0

0

无效

0

1

1位

1

0

1.5位

1

1

2位

同步方式

S2/SCS

0

2个SYNC字符

1

1个SYNC字符

S1/ESD

0

内字符同步

1

外字符同步

D5:奇偶校验方式选择,仅在PEN=1时有效

0:奇校验

1:偶校验

D4:奇偶校验位开关

0:关闭校验

1:开启校验

D3~D2:数据位的位数,具体配置如下表所示

L2

L1

数据长度

0

0

5位

0

1

6位

1

0

7位

1

1

8位

D1~D0:工作模式设置(同步/异步方式和波特率因子的配置),其中波特率因子定义为时钟与波特率的比值。

B2

B1

工作方式

波特率因子

0

0

同步

1

0

1

异步

1

1

0

异步

16

1

1

异步

64

(2)8251A的控制字

控制字用于控制8251A的基本功能,如是否允许接收或发送数据,与Modem连接的控制信号,软件复位等。

D7

D6

D5

D4

D3

D2

D1

D0

RH

IR

RTS

ER

SBRK

RXE

DTR

TXEN

D7:接收电路寻找同步字符

0:寻找方式停止

1:寻找方式开始

D6:用于内部复位

0:下一个字符不为模式字

1:下一个字符为模式字

D5:该位为0芯片RTS输出高电平,为1芯片RTS输出低电平

D4:将状态寄存器中的奇偶位错误,停止位错误,溢出错误标志复位

0:不影响PE,OE,FE

1:使PE,OE,FE复位

D3:强迫TXD变为低电平

0:正常工作

1:送Break状态,即TXD=0

D2:接收使能

0:不允许接收

1:允许接收

D1:控制8251A引脚的信号

0:使输出端DTR=1

1:使输出端DTR=0

D0:发送使能

0:不允许发送

1:允许发送

(3)8251A的状态字

状态字用于反映8251A在传送数据过程中所出现的各种状态。

D7

D6

D5

D4

D3

D2

D1

D0

DSR

SYNDET/BD

FE

OE

PE

TEX

RXRDY

TXRDY

D7:将引脚DSR置为0

0:输入端DSR=1

1:输入端DSR=0

D6:检测到SYNC或者Break后该位置1

D5:停止位错误

0:停止位正常

1:停止位出错

D4:数据溢出错误

0:数据没有溢出

1:数据溢出

D3:奇偶校验错误

0:奇偶校验正常

1:奇偶校验出错

D2:发送寄存器空标志

0:发送寄存器非空

1:发送寄存器空

D1:接收就绪标志

0:接收寄存器空

1:接收寄存器非空

D0:发送就绪标志

0:发送寄存器非空

       1:发送寄存器空

4.3 串口通信配置流程

    由于8251A芯片是通过顺序来识别写入的数据的,所以首先写入的是模式字,然后写入控制字,这两个均属于命令,然后写入数据即可。

4.4 源代码

例题:利用8251A发送一串字符串,要求串口波特率9600,无校验位,停止位1个,数据位8个。

a0dbcf9aacedbff5c2136641b828e828.png

解析过程:由于波特率是9600KBps,根据公式,波特率等于时钟与波特率因子的比值,这个时钟指的是发送与接收的时钟。根据硬件的连接表如下图所示

CS

C/D

RD

WR

功能

0

0

0

1

读取8251A的数据

0

1

0

1

读取8251A的命令

0

0

1

0

8251A写入数据

0

1

1

0

8251A写入命令

0

×

1

1

8251A数据总线缓冲器为高阻态

1

×

×

×

未选中

       根据表格的代码可知,写入模式字和控制字的地址为20H(因为A5接在C/D上),写数据的地址为00H。根据上述分析,源代码如下图所示:

36a323c4b9b2cb3d69e33a316fac6083.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值