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。根据上述分析,源代码如下图所示:
-
接口
+关注
关注
33文章
8475浏览量
150779 -
计算机系统
+关注
关注
0文章
280浏览量
24083 -
串行通信
+关注
关注
4文章
564浏览量
35261
发布评论请先 登录
相关推荐
评论