0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

8086基础-串行通信

汽车电子技术 来源:滑小稽笔记 作者:滑小稽 2023-03-02 09:59 次阅读

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
收藏 人收藏

    评论

    相关推荐

    如何使用MATLAB进行串行通信

    在本教程中,我们将学习如何使用 MATLAB 进行串行通信。对于串行通信的接收端,我们在这里使用Arduino。
    发表于 11-01 16:38 2916次阅读
    如何使用MATLAB进行<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    8086通过8255读取TLC549的汇编!!

    这个TLC549是用在SPI总线下的串行AD转换器,网上多是51单片机模拟SPI总线的程序(c和汇编),所以我也用8086+8255模拟了一下,却总是出不来正确结果,求一段8086汇编{:3:}{:3:}
    发表于 04-29 22:15

    串行通信的分类,常见的串行通信接口?

    设备之间通信的方式串行通信的分类常见的串行通信接口UART引脚连接方法STM32的UART特点STM32中UART参数
    发表于 03-17 07:32

    什么是串行通信

    【朱老师课程总结 侵删】第一部分、章节目录1.13.1.通信有关的常见概念1.13.2.什么是串行通信1.13.3.51单片机的串行通信1.
    发表于 11-22 08:13

    串行通信通信方式是什么?常见的串行通信接口有哪些?

    串行通信通信方式是什么?常见的串行通信接口有哪些?STM32F4异步通信方式特点是什么?
    发表于 12-03 07:35

    如何区分串口通信串行通信

    串口通信串行通信的区分串行通信串行通信是指计算机
    发表于 12-24 06:46

    串行通信实验

    串行通信实验 实验目的: 1、掌握TMS320LF2407串行通信模块的工作原理 2、掌握TMS320LF2407串行
    发表于 10-17 22:34 2545次阅读

    什么是串行通信和接口

    什么是串行通信和接口 串行通信设备和接口通过点对点数据链路传输信号。在串行流中一个接一个地传输比特。
    发表于 03-19 14:33 4902次阅读
    什么是<b class='flag-5'>串行</b><b class='flag-5'>通信</b>和接口

    串行通信资料

    串行通信,基于串行通信,快来下载学习吧,很好的学习资料。
    发表于 01-13 14:14 21次下载

    INTEL 8086 微处理器应用入门 附录1 8086指令详解

    INTEL 8086 微处理器应用入门 附录1 8086指令详解
    发表于 09-22 11:23 20次下载
    INTEL <b class='flag-5'>8086</b> 微处理器应用入门 附录1 <b class='flag-5'>8086</b>指令详解

    8086CPU中文资料汇总(8086引脚图及功能_工作原理及应用电路)

    本文开始介绍了8086引脚图功能和8086工作模式,其次介绍了8086结构与系统组成,最后介绍了8086微处理器的工作原理及应用电路。
    发表于 04-16 11:02 6.9w次阅读
    <b class='flag-5'>8086</b>CPU中文资料汇总(<b class='flag-5'>8086</b>引脚图及功能_工作原理及应用电路)

    8086CPU引脚图及功能_8086CPU组成部分

    本文开始介绍了8086的性能特点,其次介绍了8086的组成部分与存储器组织,最后详细介绍了8086CPU引脚图及功能。
    发表于 04-16 14:27 6.9w次阅读
    <b class='flag-5'>8086</b>CPU引脚图及功能_<b class='flag-5'>8086</b>CPU组成部分

    串行通信的介绍及串行通信的应用说明

    串行是与并行想对应的,并行通信是指数据的各位同时被传送。串行通信是将要传送的数据一位位的依次顺序发送。串行
    发表于 04-17 17:28 1次下载
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>的介绍及<b class='flag-5'>串行</b><b class='flag-5'>通信</b>的应用说明

    SYN8086语音合成芯片最全手册

    包涵:SYN8086语音合成芯片-用户手册SYN8086语音合成芯片-硬件手册SYN8086语音合成芯片-评估工具使用手册SYN8086语音芯片-外围电路原理图SYN
    发表于 02-03 14:59 5次下载

    常见串行通信协议 串行通信和并行通信的区别

    串行通信是一种通过单个传输线按照顺序传送数据的通信方式。在串行通信中,每个数据位按照顺序依次传输,一个接一个地发送到目标设备。
    的头像 发表于 03-05 16:38 1203次阅读
    常见<b class='flag-5'>串行</b><b class='flag-5'>通信</b>协议 <b class='flag-5'>串行</b><b class='flag-5'>通信</b>和并行<b class='flag-5'>通信</b>的区别