#C0308


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】

沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系

如有问题定为本集记录有谬,切勿深究


引子:串行通信技术

1、串行通信的优势

串行通信将数据分解成二进制位用一条信号线,一位一位顺序传送。
优点 缺点

通信线路简单,适于远距离传输

抗干扰能力强,通信费用低

传输线既传数据,又传联络信号

传输速度慢

需要串并转换

对数据格式有要求

2、异步通信协议

  • 串行通信时的数据、控制和状态信息都使用同一根信号线传送。
  • 收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题。
  • 串行异步通信以字符为单位进行传输,其通信协议是起止式异步通信协议。
起止式异步通信协议
起始位 数据位 校验位 停止位
0 0/1 ··· 0/1 0/1 1
  • 起始位:字符开始传送的标志,采用逻辑0电平;
  • 数据位:数据位紧跟着起始位传送。由5~8个二进制位组成,低位先传送;
  • 校验位:用于校验是否传送正确;可选择奇检验、偶校验或不传送校验位;
  • 停止位:表示该字符传送结束。停止位采用逻辑1电平,可选择1、1.5或2位;
  • 空闲位:不传输信息时,为逻辑1电平;

3、波特率

每秒钟传送的二进制数据位数称为波特率,单位为波特(bps)。在串行通信中,利用波特率来表示数据传送的速率。 异步串行传送常用的波特率为110,300,600,1200,2400,4800,9600,19200,28800,36400,57600波特。同步传送的波特率高于异步传送的波特率。

4、异步通信方式

异步通信要求在发送每一个字符时都要在数据位的前面加上1位起始位,在数据位后面要有1位或1.5位或2位的停止位。在数据位和停止位之间可以有1位校验位,数据位可以为5-8位长。字符之间允许有不定长度的空闲位。

传送开始后,接收设备不断地检测传输线,当在测到一系列的“1”之后检测到一个“0”,就确认一个字符开始,于是以位时间(1/波特率)为间隔移位接收规定的数据位和奇偶校验位,拼装成一个字符的并行字节。这之后应接收所规定位长的停止位“1”,若没有收到即为“帧出错”。

只有既无帧出错又无奇偶错才算正确地接收到一个字符。一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来和下一字符的开始。

示例:设数据传送的速率为120字符/秒,每个字符8个数据位,采用1位停止位,无校验

                传送的波特率为:10 × 120 = 1200 bps

5、数据传送方式

单工方式

半双工方式
半双工方式

6、信号传输方式

  • 基带传输方式:在传输线路上直接传输不加调制的二进制信号。它要求传送线的频带较宽,传输的数字信号是矩形波。由于线路中存在着电感、电容及漏电感、漏电容等分布参数,矩形波通过传输线后会发生畸变、衰减和延迟而导致传输的错误。信号的频率越高、传输的距离越远这种现象则越严重,因此基带传输方式仅适宜于近距离和速度较低的通信。
  • 频带传输方式:频带传输方式又称为载波传输方式。在远距离通信时,通常是利用电话线传输的。电话线的频带在300HZ-3400HZ之间,由于频带不宽,用它来直接传输数字信号时,就会出现畸变失真,但用它来传送一个频率为1000Hz-2000Hz的模拟信号时,则失真较小。

一、串行接口标准

串行接口标准指的是计算机或终端(数据终端设备DTE)的串行接口电路与调制解调器MODEM等(数据通信设备DCE)之间的连接标准。在计算机网络中,由它构成网络的物理层协议。

        常用标准:RS-232C接口、RS-422A接口、RS-485接口、USB接口

1、RS-232C标准

  • 设计目的:连接调制解调器;
  • 功能:可实现远距离通信,也可近距离连接两台微机;
  • 所在层次:物理层。
  • 接口电平:EIA电平(逻辑1为 -3V ~ -15V,逻辑0为 +3V ~ +15V)

2、RS-232C引脚定义

  • 完全版标准:使用25针连接器(DB25);
  • 一般设备:只用其中9个信号,使用9针连接器(DB9)即可;
  • 信道:两个信道,一主一次(次信道为辅助串行通道提供数据控制和通道,传输速率比主信道低得多);

引脚缩写 引脚名称 功能
TxD 发送数据 串行数据的发送端
RxD 接收数据 串行数据的接收端
TxC 发送器时钟 控制数据终端发送串行数据的时钟信号
RxC 接收器时钟 控制数据终端接收串行数据的时钟信号
RTS 请求发送

数据终端设备准备好送出数据,发出有效的RTS信号

用于通知数据通信设备准备接收数据

CTS 清除发送(允许发送)

数据通信设备准备好接收数据终端设备的传送数据时

发出CTS有效信号来响应RTS信号

DTR 数据终端准备好

数据终端设备一加电,该信号就有效

表明数据终端设备准备就绪

DSR 数据装置准备好

表示数据通信设备已接通电源连到通信线路上

处在数据传输方式

GND 信号地 为所有的信号提供一个公共的参考电平
CD 载波检测

本地调制解调器接收到来自对方的载波信号时

该引脚向数据终端设备提供有效信号

RI 振铃指示

调制解调器接收到对方的拨号信号期间

该引脚信号作为电话铃响的指示、保持有效

3、RS-232C的连接

  • 远距离通信:利用232C接口连接调制解调器,调制解调器连接电话线路进行通信;
  • 短距离通信:不使用调制解调器,直接连接,又称零调制解调器连接;通信时RTS和CTS各自互接,DTR和DSR各自互接,表明请求传送总是允许、数据装置总准备好。(如果互接通信比较可靠,但不经济)

通过调制解调器(MODEM)进行数据通信

零调制解调器连接

二、Inter 8251A芯片

1、8251A的基本功能

  • 可以选择工作方式。同步方式波特率为0~64K,异步方式波特率为0~19.2K。
  • 在同步方式下,每个字符可以用5 ~ 8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。
  • 在异步方式下,每个字符可以用5 ~ 8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。此外,8251A在异步方式下能自动为每个数据增加1个启动位,并能根据编程为每个数据增加1个、1.5个或2个停止位。同时,可以检查假启动位,自动检测和处理终止字符。
  • 全双工的工作方式,其内部提供具有双缓冲器的发送器和接收器。
  • 提供出错检测,具有奇偶、溢出和帧错误等校验电路。

2、8251A的内部结构

8251A的内部结构
  •  发送器

由发送缓冲器和发送控制电路两部分组成。

当发送器中发送缓冲器已空(即可接收数据),由发送控制电路向CPU发出TxRDY有效信号,如果CPU与8251A之间采用中断方式交换信息,那么TxRDY可作为向CPU发出的中断请求信号。此时,CPU可向8251A输出数据。CPU送出的数据经数据总线缓冲器并行输入锁存到发送缓冲器中。

采用异步方式传输,则由发送控制电路在其首尾加上起始位和停止位,经移位寄存器从数据输出线TxD逐位串行输出,其发送速率取决于TxC端收到的发送时钟频率。

采用同步方式传输,则在发送数据之前,发送器将自动送出1~2个同步字符(对应内同步方式)或在收到有效的同步信号(对应外同步方式)后,才逐位串行输出数据。

当发送器中的数据发送完,由发送控制电路向CPU发出TxE有效信号,表示发送器中移位寄存器已空。因此,发送缓冲器和发送移位寄存器构成发送器的双缓冲结构。

  • 接收器

接收器由接收缓冲器和接收控制电路组成。接收移位寄存器用来从RxD引脚上接收串行数据,按照相应格式转换成并行数据后存入接收缓冲器。而接收控制电路则配合接收缓冲器工作,管理有关接收的所有功能。

当8251A工作在异步方式并准备接收一个字符时:①在RxD线上检测低电平,将检测到的低电平作为起始位;②启动接收控制电路中的一个内部计数器进行计数,计数脉冲就是8251A的接收器时钟脉冲;③当计数进行到相应于半个数位传输时间(比如时钟脉冲为波特率的16倍,则计到第8个脉冲)时,再对RxD线进行检测,如果此时仍为低电平,则确认收到一个有效的起始位

数据接收时钟频率是数据传输频率的16倍,防止因干扰引起的误识别

然后,8251A开始进行常规采样,数据进入接收移位寄存器完成字符装配,并进行奇偶校验,然后,送入接收缓冲器,同时向CPU发出RxRDY信号,表示已经收到一个可用的数据,通知CPU来取数。如果CPU与8251A之间采用中断方式交换信息,那么RxRDY可作为向CPU发出的中断请求信号。

  • 数据总线缓冲器

数据总线缓冲器是8251A与CPU之间进行交换信息的必经之路,或者说它是CPU与8251A之间的数据接口。CPU从8251A读取的数据或状态信息,及写入的数据或控制字都经由数据总线缓冲器完成。

  • 读/写控制电路
CS* C / D* RD* WR* 相应的操作
0 0 0 1 CPU从8251A输入数据
0 0 1 0 CPU从8251A输出数据
0 1 0 1 CPU读入8251A的状态
0 1 1 0 CPU往8251A写入控制命令
  • 调制解调控制电路

调制解调控制电路提供了一组通用的控制信号,用来完成8251A和调制解调器的连接。包括DTR*、DSR*、RTS*、CTS*。

3、8251A的引脚

连接CPU:

  • D7~D0:数据总线,用于连接CPU;
  • WR*:输入,低电平有效,CPU输出数据时有效;
  • RD*:输入,低电平有效,CPU输入数据时有效;
  • C/D*:输入,数据/控制信息选择引脚,低电平时传输数据,高电平时传输控制信息;
  • CS*:输入,低电平有效,有效时芯片才工作;
  • TxRDY:发送器准备好信号,既可作为中断请求信号也可作为查询信号;
  • TxE:发送器空信号;
  • RxRDY:接收器准备好信号,既可作为中断请求信号也可作为查询信号;
  • SYNDET:同步检测信号,只用于同步方式。外同步时是输入信号,内同步时是输出信号;
  • RESET:复位信号输入,高电平有效

连接外设:

  • RxD:接收数据引脚;
  • TxD:发送数据引脚;
  • DTR*:数据终端准备好信号,由825lA送往外设,低电平时有效。CPU可以通过控制命令使有效,从而通知外部设备,CPU当前已经准备就绪;
  • DSR*:数据设备准备好信号,由外设送往8251A。该信号低电平时有效,用来表示当前外设已经准备好。当其出现低电平时,8251A状态寄存器的第7位自动置1,CPU可以通过读状态寄存器的操作,实现对该信号的检测。
  • RTS*:请求发送信号 由8251A送往外设,低电平时有效,表示CPU已经做好发送准备。CPU可以通过编程命令使RTS变为有效电平;
  • CTS*:允许发送信号 是对RTS的响应,由外设送往8251A。只有当  CTS为低电平时,8251A才能执行发送操作。

注:实际使用时,CTS*必须为低,其余三个联络信号可以悬空。

其他引脚:

  • CLK:工作时钟输入,用来产生芯片的内部时序,要求CLK的频率

    • 在同步方式下,大于TxC /RxC的30倍;
    • 在异步方式下,大于TxC /RxC的4.5倍
  • VCC:电源;
  • GND:地;
  • TxC:发送器时钟输入;
  • RxC:接收器时钟输入;

注:在异步方式下,时钟频率可以为字符传输波特率的x1 / x16 / x64,决定于初始化编程指定的波特率因子。

Inter 8251A 的引脚

8251A与CPU、外设的连接

三、Inter 8251A的初始化编程

1、方式选择控制字(模式字)

写入控制端口(奇地址),用来确定8251A的工作方式、数据格式、校验方法等。

2、操作命令控制字(控制字)

写入控制端口(奇地址),其作用是使8251A处于某种工作状态,以便接收或发送数据。

异步方式下通常写37H

3、状态字

从奇地址端口读取。

4、初始化流程

  1. 芯片复位后,第一次往控制端口写入的是方式选择控制字(模式字)
  2. 如果在方式选择控制字中,规定8251A是同步工作方式,则接下来向控制端口写入1个或2个字节就是同步字符,同步字符被写入同步字符寄存器;
  3. 不管是在同步方式还是在异步方式下,接下来由CPU往控制端口写入的是操作命令控制字即控制字,如果规定是内部复位命令,则转去对芯片复位,重新初始化。否则,进入应用程序,通过数据端口传输数据。

敬谢诸君。


金陵钟山之阳。

【沧海拾昧】微机原理:可编程串行接口芯片8251A相关推荐

  1. 【沧海拾昧】微机原理:可编程计数器/定时器8253芯片

    #C0303 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  2. 【沧海拾昧】微机原理:可编程中断控制器8259A芯片

    #C0306 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  3. 【沧海拾昧】微机原理:存储器系统

    #C0302 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  4. 【沧海拾昧】微机原理:8086/8088中断系统

    #C0305 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  5. 【沧海拾昧】C# .Net 基本控件介绍

    #C0201 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  6. 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

    #C0104 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 [如有问题必是本集记录有谬 ...

  7. 【沧海拾昧】用MATLAB画一张简单的图

    #C0401 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题定为本集记录有谬, ...

  8. 【沧海拾昧】C# .Net SplitContainer(分割器)控件的使用笔记

    #C0202 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  9. 【沧海拾昧】Proteus8仿真stm32:ADC转换程序

    #C0102 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

  10. 【沧海拾昧】Keil uVision5新建stm32工程并联合Proteus 8 Professional简单仿真

    #C0101 沧海茫茫千钟粟,且拾吾昧一微尘 --<沧海拾昧集>@CuPhoenix [阅前敬告] 沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系 如有问题必是本集记录有谬, ...

最新文章

  1. 竞赛老陪跑怎么办?来自一位Kaggle比赛失败者的含泪总结
  2. java split 逗号_咦,Java拆分个字符串都这么讲究
  3. 做了6年的Java,java视频教程传智播客
  4. 大型互联网架构概述,看完文章又涨知识了
  5. 每日一博 - 常见的Spring事务失效事务不回滚案例集锦
  6. webservice axis1.4生成客户端
  7. C++ 菱形虚继承 通过指针来寻找继承过来的成员变量
  8. ELK之日志收集filebeat,并对nginx,tomcat access日志JSON格式化
  9. Martin Odersky Scala编程公开课 第二周作业
  10. 【例5.2】组合的输出
  11. 安装自己写的插件时,报插件版本过高,请升级JAR包或者安装低版本插件的问题
  12. Kotlin StandardKt 标准库源码走一波
  13. 参加了博客园北京俱乐部4月4日的活动-Nice
  14. 物联网架构成长之路(23)-Docker练习之Elasticsearch服务搭建
  15. 【网络安全】考试试卷十一
  16. 如何编译CWM Recovery
  17. java菜鸟突破面试系列-终章
  18. CNC精雕机加工需要牢记的22个常识,一起来学习
  19. Unity手机上查看日志的插件LogViewer
  20. element ui 前台模板_element-ui 菜单模板封装(递归)

热门文章

  1. 三星nfc添加门禁卡实测有效_今天才知道!iPhone手机还能变成门禁卡,60秒就能实现...
  2. 深入理解Risk aversion||风险偏好||Risk utility function
  3. DGIOT物联网平台简介
  4. html静态页面兼职,兼职.html · teayork/master - Gitee.com
  5. 获取百度首页的源代码
  6. C# Delegate引介
  7. Redhat7/Centos7服务器设置IP地址
  8. GNE: 4行代码实现新闻类网站通用爬虫
  9. 新手学Windows XP
  10. MySQL中emoji表情包的存储问题