8086基础-串行通信

描述

4.1 串行通信简介

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

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

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

4.2 8251简介

4.1.1 引脚详解

计算机系统

(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 内部结构框图

计算机系统

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个。

计算机系统

解析过程:由于波特率是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。根据上述分析,源代码如下图所示:

计算机系统

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分