串行通信涉及到的几个问题

(一)
全双工方式:一个通信系统中,对数据的两个传输方向采用不同的通道,系统可以同时进行发送和接受。
半全工方式:输入过程和输出过程使用同一通道,所以,两个不能同时进行。
单工方式:系统只能在一个方向上传输信息,即只能发送或只能接受。

(二)按时钟对通信过程的定时方式:
同步方式:收发双方采用同一个时钟信号来定时。在每组信息的开始要加上同步字符,在没有信息要传输时,必须填上空字符,因为同步传输不允许有间隙。
异步方式:收发双方不用统一的时钟进行计时,两个字符之间的传输间隔是任意的,靠起始位和停止位来识别信息帧。

上图为标准的异步通信数据格式
步骤:
1.在传输前,输出线必须处于“1”状态,称为标识态;
2.传输开始,输出线由标识态变为“0”态,从而作为起始位;
3.起始位后面为5~8个信息位,信息位由低到高排列,即第1位为字符的最低位,在同一个传输系统中,信息位的数目是固定的;
4.信息位后面为校验位,若为奇校验,前面偶数个1,则该位为1,校验位也可不设置;
5.最后为停止位,取值为’“1”,可占1、1.5、2位;

在异步通信中,发送端需要用时钟来决定每一位对应的时间长度,接收端也需要用一个时钟来确定每一位的时间长度,前者叫发送时钟,后者叫接受时钟。这两个时钟的频率可以是位传输率的16倍、32倍或64倍,这个倍数称为波特率因子。
若取波特率因子为16,。通信时,接收端在检测到电平由高到低变化以后,便开始计数,计数时钟就是接受时钟。当计到8个时钟以后,就对输入信号进行采样,如仍为低电平,则确认这是起始位,而不是干扰信号。此后接收端每隔16个时钟脉冲对输入信号进行一次采样,指导各个信息位以及停止位都输入以后,采样才停止。

(三)
传输率就是指每秒传输多少位,串行传输率也常叫波特率(bps)

串行接口

采用串行通信方式的外设,要用串行接口和计算机主机系统连接。串行接口部件内部有4个主要寄存器,即控制寄存器、状态寄存器、数据输入寄存器和数据输出寄存器。

控制寄存器:容纳CPU送来的各种控制信息,以决定接口的工作方式。
状态寄存器:每1个状态位都可用来指示传输过程中的某一种状态。
数据输入寄存器和串行输入并行输出移位寄存器配对使用:输入过程中,串行数据1位1位从外设进入接口的移位寄存器,当接受完1个字符以后,数据就从移位寄存器送到数据输入寄存器,再等待CPU来取走。
数据输出寄存器和并行输入串行输出移位寄存器配对使用:当CPU往数据输出寄存器中输出1个数据后,数据便传输到移位寄存器,然后转换成串行数据1位1位通过输出线送到外设。
控制寄存器和数据输出寄存器是只写的,状态寄存器和数据输入寄存器是只读的,,所以可用读信号和写信号来区分这两组寄存器,再用一位地址来区分2个只读寄存器和2个只写寄存器,因此,4个寄存器只用两个端口地址。

8251A的基本工作原理

(一)8251A的基本性能

(1)可编程实现同步或者异步工作方式,波特率不同;
(2)同步方式:5-8bits代表字符,可奇偶校验
(3)异步方式:5-8bits代表字符,1bits奇偶校验;自动增加启动位、停止位。

(二)8251A的功能结构


接收缓冲器:从RXD引脚接受串行数据,并转换成并行数据;
接受控制电路:配合接收缓冲器工作的,它管理有关接受的所有功能(各种检测);
发送缓冲器:把来自CPU的并行数据加上响应的控制信息,然后转换成串行数据从TXD引脚发送出去;
发送控制电路:与发送缓冲器配合工作,控制和管理所有与串行发送有关的功能;
数据总线缓冲器:用来把8251A和系统数据总线相连,在CPU执行输入/输出指令时,由数据总线缓冲器发送和接受数据,此外,控制字、命令字和状态信息也通过数据总线缓冲器传输。
读/写控制逻辑电路用来配合数据总线缓冲器工作:用来通知8521A当前读写的是数据还是控制字/状态字。
调制/解调控制电路:实现8251A和调制/解调器的连接。在进行远程通信时,常常要解调器将串行接口送出的数字信号变成模拟信号,再发出去,接收端则要用调制器将模拟信号变为数字信号,再由串行接口转换为并行数据送往计算机主机。在全双工通信情况下,每个收发站都要连接调制/解调器。有了调制/解调控制电路,就提供了一组通用的控制信号,使得8251A可直接和调制/解调器相连。

8251A的对外信号


(一)8251ACPU之间的连接信号
(1)片选信号
CS :是CPU的一部分地址信号通过译码后得到的,代表是否选中芯片。
(2)数据信号
D7~D0:8251A有8根数据线,与系统的数据总线相连,也传送CPU对8251A的编程命令和8251A送往CPU的状态信息。
(3)读/写控制信号
RD :有效时通知8251A,CPU当前正从8251A读取数据或状态信息。
WR :有效时同时8251A,CPU当前正在往8251A写入数据或控制信息。
C/D :区分读写的是数据信息还是控制/状态信息。

8251A只用两个连续的端口地址,数据输入端口和数据输出端口合用一个偶地址,状态端口和控制端口合用一个奇地址,在具体系统中,用1位地址线区分奇地址端口和偶地址端口,16位系统中用A1。
(4)收发联络信号
TxRDY:发送器准备好信号TxRDY告诉CPU,8251A已准备好发送一个字符,因而可往8251A传输一个数据。
TxE:发送器空信号TxE有效时,表示此时8251A发送器中并-串转换器空,指示了一个发送动作的完成。
RxRDY:接收器准备好信号RxRDY用来表示当前8251A已从外设或调制/解调接受到一个字符,正在等待CPU取走。
SYNDET:同步检测信号标志位。

(二)8251A外设之间的连接信号
(1)数据信号
TxD:输出数据,CPU送往8251A的并行数据转换为串行数据后,通过TxD送往外设。
RxD:接收外设送来的串行数据,数据进入8251A后转换为并行方式。
(2)和外设的联络信号
DTR :数据终端(8251A)准备好信号
DSR :数据设备(外设)准备好信号,是对DTR 的应答信号,告诉对方可以通信(外设发数据给8251A)
RTS :请求发送信号
CTS :清除发送信号,是对RTS 的应答信号,表示可以进行通信(8251A发送数据)
上述联络信号本质为CPU与外设的联络,8251A起媒介作用。

8251A的编程

(一)8251A的初始化
8251A有一奇一偶两个端口地址,偶地址端口对应数据输入/输出寄存器,奇地址端口对应状态寄存器、模式寄存器、控制寄存器和同步字符寄存器。
初始化步骤:
(1)芯片复位后,第一次用奇地址端口写入的值作为模式字送入模式寄存器。
(2)如果模式字中规定了8251A工作在同步模式,那么,那么,CPU接着往奇地址端口输出的就是同步字符,同步字符被写入同步字符寄存器。若此前规定同步字符为两个,则按先后次序分别写入第一个同步字符寄存器和第2个同步字符寄存器。
(3)此后,只要不是复位命令,不管是同步模式还是异步模式,由CPU往奇地址端口写入的值都将作为控制字送到控制寄存器,而往偶地址端口写入的值都将作为数据送到数据发送缓冲器中。
流程图

(二)模式寄存器的格式

对8251A进行初始化时,要按模式寄存器的格式来设置模式字。

(三)控制寄存器的格式

上图为控制寄存器的格式,一般写入x0110111。

(三)状态寄存器的格式

当需要检测8251A的工作状态时,经常要用到状态字。
当CPU往8251A输出1个字符以后,状态位TxRDY会自动清0,与此类似,当CPU从8251A输入1个字符时,状态位RxRDY会自动清0。

8251A编程举例

(一)异步模式下的初始化程序举例
模式字和控制字都必须写入奇地址端口,这里假设为42H。
设置模式字时,设定了字符用7位二进制数表示,带1个偶校验位、2个停止位,波特率因子为16,故模式字应为11111010,即0FAH。
设置控制字时,设置为00110111,即37H。

(二)同步模式下的初始化程序
模式字为00111000,即38H。用两个同步字符,采用内同步模式,用偶校验,用7位作为数据位。
2个同步字可相同也可不同,他们必须紧跟在模式字后面写入奇地址端口。
控制字为10110111,即B7H。

(三)利用状态字进行编程
功能:先对8251A进行初始化,再对状态字作测试,以便输入字符。本程序段可用来输入80个字符。
这里规定8251A的控制和状态端口地址为42H,数据输入和数据输出端口地址为40H。字符输入后,放在BUFFER标号所指的内存缓冲区中。

注释:
1.异步模式下的初始化;
BEGIN:
1.42H的端口读取1个字节送到AL中(状态寄存器);
2.测试该字节的第1位,RxRDY;
3.如果等于0的话,则8251A未收到数据还没有,跳到BEGIN继续查询;
4.40H的端口读取一个字节到AL;
5.将BUFFER的有效地址送到DX;
6.将AL中的内容送到内存;
7.内存指针加1;
8.42H的端口读取1个字节到AL(状态寄存器);
9.检测三个错误位;
10.如果不等于0,跳到ERROR;
11.否则继续循环,直到CX等于0;

输出举例:

注释:
1.查询TxRDY,是否可以发送数据;
2.从堆栈中将AX弹出;
3.将AL的数据发送到端口中;

第六章——串并行通信与接口技术相关推荐

  1. 【正点原子MP157连载】 第十六章 UART串口通信实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  2. 第六章 使用RAID与LVM磁盘阵列技术

    文章目录 第六章 使用RAID与LVM磁盘阵列技术 一.RAID磁盘冗余阵列 1.部署磁盘阵列 (1).RAID0.1.5.10方案技术对比 (2).RAID0 RAID1 RAID5 RAID10介 ...

  3. 32位微型计算机原理与接口技术仇玉章,32位微型计算机与接口技术

    <32位微型计算机原理与接口技术>以Intel80486微处理器为背景,讲述32位微型计算机管理.汇编语言程序设计和接口技术.全书共16章,内容主要包括:80486微处理器结构.存储系统. ...

  4. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(五) 第六章 · 纹理贴图及相关技术 The Texturing

    本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/73718109 在计算机图形学中,纹理 ...

  5. 计算机网络作业第六章,计算机网络与通信第6章习题.doc

    计算机网络与通信第6章习题 第6章:网络层1.假设在以太网上运行IP协议,源主机A要和IP地址为192.168.1.250的主机B通信,请问A如何得到主机B的MAC地址?(说明采用的协议以及查找过程) ...

  6. 微型计算机技术第三版第三章答案,微型计算机原理与接口技术第三章习题及答案...

    第三章 习题及答案 2. DS=1000H, BX=0200H, SI=2, 内存10200H-10205H 单元的内容分别是10H, 2AH, 3CH, 46H, 59H, 6BH ,下列指令执行后 ...

  7. 微型计算机与接口技术总结,微型计算机与接口技术教程

    微型计算机与接口技术教程 语音 编辑 锁定 讨论 上传视频 <微型计算机与接口技术教程>是2002年1月1日北京航空航天大学出版社出版的图书,作者是魏坚华.[1] 书    名 微型计算机 ...

  8. 微型计算机接口技术425页,微机原理与接口技术(修订版高等院校电工电子技术类课程十二五规划教材)...

    导语 内容提要 谢四连.董辉.许岳兵主编的<微机原理与接口技术(修订版)>内容分为两部分:第一部分全面系统地介绍了Intel系列微处理器的工作原理.指令系统以及汇编语言程序设计方法:第二部 ...

  9. 计算机外围设备哪两类,《微机原理与接口技术》课后习题答案

    JZ N2 MOV [DI], AL INC SI INC DI LOOP N1 N2: HLT 8.条件同题7,但在传送过程中检查数的值,零不传送,不是零则传送到目的区. 解: MOV SI, 05 ...

最新文章

  1. powerdesigner显示列描述信息
  2. boost::graph模块实现边列表算法上的连通分量
  3. 萨蒂扬软件技术(南京)研发中心”落户高新区
  4. Blazor 基础入门
  5. 信息学奥赛一本通 1312:【例3.4】昆虫繁殖
  6. 第六篇:视图、触发器、事务、存储过程、函数
  7. 【自动驾驶定位要求论文翻译】Localization Requirements for Autonomous Vehicles
  8. 李宏毅2020机器学习资料汇总
  9. 中班音乐会跳舞的机器人_中班音乐律动机器人
  10. freeradius mysql ad_freeradiusmysql简单配置一例
  11. 原来清理手机内存,使用管家是不够的!还需删除这4个文件夹
  12. 网页编程----HTML网页编程
  13. win10办公局域网共享文件夹方法
  14. echarts 圆角环形图
  15. lumen5.5 使用 jwt-auth1.0 笔记
  16. 排球比赛计分程序功能说明书
  17. 无法正常启动0xc0000142的错误
  18. SPI读写FLASH 原理+完整代码
  19. 如何去除短视频中的硬字幕
  20. 说说我在机场碰上的那些大家喜闻乐见的事

热门文章

  1. python计算while循环次数_python-----运算符及while循环
  2. python3实用编程技巧_9.python3实用编程技巧进阶(四)
  3. pythonopencv测距_python opencv单目测距 小孔成像原理
  4. Asp.Net Core 轻松学-玩转配置文件
  5. ng6 常见错误汇总(持续更新)
  6. 当包装类的要与基本类型进行比较时候 需要先将包装类降级为基本类型
  7. 十六、在屏幕上显示时间
  8. jenkins发送邮件
  9. SpringMVC @ModelAttribute注解
  10. QT程序启动画面问题