《微机原理与接口技术》第9章——串行接口和8251

虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!

目录

第1节——串行通信的相关概念

●串行传送

●串行通信的传送方向:单工、全双工、半双工

第2节——串行通信接口标准—RS232C

●RS — 232接口标准

●信号功能定义

●串行通信的信号线的连接

第3节——串行接口芯片8251A

●8251A的主要功能

8251A的特点

8251A内部结构

●接收器的工作过程

●发送器的工作过程

●8251A的外部引脚和特性

第4节——8251A操作和命令

❶方式命令字

❷工作命令

❸状态字


第1节——串行通信的相关概念

●串行传送的特点

●异步通信和同步通信

●信号的调制和解调

●信息的检错与纠错

●波特率与发送/接收时钟

 

●串行传送

❶在一根传输线上逐位传送,既作数据线又作联络线

❷数据格式有固定的要求:异步通信同步通信

❸传送速率需要控制:波特率

❹既适合近距离传输又适合远距离传输(MODEM支持)

❺容易出现差错

 

●串行传送方式

异步通信与同步通信

●异步串行通信

概念:

▶以字符为单位传送。字符作为一帧数据随机出现

▶一旦传送开始,双方以约定速率,逐个传送字符中的每一位。

特点:

▶字符随机出现:异步

▶位与位之间严格定时:同步

▶发和收双方不需严格同步和同频,允许相对延迟和频差。

 

●问题:如何实现串行通信的同步

▶在典型的串行通信系统中,不存在同步信号线

▶要实现有效的串行通信,通信双方遵从软硬件约定:波特率波特率因子通信格式

 

①波特率

▶指单位时间内传送二进制数据的位数,以位/秒为单位。

▶假如每秒传送120个字符,每字符含10bit。

  则波特率=10×120=1200bit/s

▶每位数据的传送时间Td = 1/1200 = 0.833ms

 

②波特率因子

▶发送端/接收端:发送时钟、接收时钟

▶传输线上每位数据持续长度对时钟周期的倍数:波特率因子

  波特率因子 = 每位长度 / 时钟周期

  1或16或32或64

 

③字符格式(起止式异步通信格式

▶每个数据都由起始位数据位奇偶校验位停止位组成。

起止式异步通信格式

起始位:1位,低电平(逻辑值0)

数据位:5-8位:紧跟在起始位后面,传送的有效信息

奇偶校验位:1位,可有可无

停止位:1位,1.5位,2位;高电平。

空闲位:紧跟停止位,个数不定,高电平。

 

串行传送的过程

①首先约定通信格式和波特率

②传输开始后接收方检测传输线是否有起始位(电平下跳沿)

③起始位后接着是已协商好的若干数据位、校验位、停止位

④当出现停止位时表示一个字符传输的结束

⑤去掉停止位,进行奇偶校验,确认接收正确

⑥继续开始监视下一个数据传输的起始位

起止位的作用

①起始位和停止位作为联络信号被附加到传输过程中。

②一定程度消除了收发双方时钟带来的传输误差;

③缺点:降低了传输效率

●串行通信的传送方向:单工、全双工、半双工

单工

通信双方中,一方固定当发送方发送数据,另一方固定当接收方接收数据。

全双工

数据可以在两个方向上同时传送。

特点

①使用二根传输线

②双方都具有发送器和接收器,能同时收发数据。

③适合实时的交互式的数据传送。

❸半双工

数据可以在两个方向上传送,但是不同同时进行。

特点

①一根传输线

②双方都具有发送器和接收器,但不可同时发送和接收。

③通过“收/发开关”切换发送和接收的功能

第2节——串行通信接口标准—RS232C

●调制和解调

▶传送前:数字变为模拟信号(调制:调制器, Modulate )

▶接收时:模拟还原数字信号(解调:解调器, Demodulate )

▶调制解调器(MODEM) :同时具有调制和解调两种作用

●RS — 232接口标准

▶适合于传输速率0-20Kb/s的通信

▶数据终端设备(DTE)与数据通信设备(DCE)之间的接口。

           DTE:处理二进制信号的设备(计算机)。

           DCE:信号匹配器,管理通信连接(MODEM)。

●RS232C

▶①接口的机械性能

▶②接口的电气特性

▶③接口的信号功能

▶④接口的连接方式

①机械特性——连接器类型和电缆长度

▶DB-25针

▶DB-9针

♦2个数据线

♦6个控制线

♦1个地线

▶电缆长度

♦(20kb/s)直连 < 15M

♦零MODEM

②电气特性——EIA逻辑

▶信号的逻辑定义

♦1:-5V~-15V

♦0:+5V~+15V

♦负逻辑

▶电平特点

♦范围宽,电压高

抑制噪声

增加距离

▶与TTL电平(0-5V)的转换

♦TTL->EIA:MC1488

♦EIA->TTL:MC1489

♦TTL<-->EIA:MAX232(0-5V<-->10V<-->-10V)

●信号功能定义

●串行通信的信号线的连接

❶近距离连接(<15m),不适用MODEM(调制解调器)

   ♦仅使用3条线(发送线TxD,接收线RxD,信号地线SG)

   ♦注意:ExD和TxD的交叉连接

❷远距离连接(>15m)使用MODEM,交换电话线

   ♦RI:表示MODEM收到交换台的呼叫

   ♦DTR:MODEM收到呼叫后给对方应答,从而建立通信链路

❸远距离连接(>15m)使用MODEM,专用传输线

♦不适用DTR(4号)和RI(9号)进行联络与控制

第3节——串行接口芯片8251A

●8251A的主要功能

❶串行数据←→并行数据

❷接收外设送来的串行数据→并行数据送给CPU

❸接收CPU送来的并行数据→串行数据送给外设

            ♦串行数据←→并行数据

            ♦格式化数据

            ♦错误检测和纠正

            ♦提供符合RS232C标准的信号线

❹缺乏:

            ♦电平适配:EIA电平←→TTL电平

            ♦传输速率控制

8251A的特点

♦①支持异步通信同步通信

♦②(同步通信)可设定停止位为1位、1位办或2位

♦③(同步通信)可设定同步方式:单同步、双同步或外同步。同步字符可由用户自己设定

♦④可设定奇偶校验方式或不检验。校验位的插入、检出及检错都由芯片本身完成。

♦⑤(异步通信)可设定时钟频率:波特率的1倍、16倍或64倍

♦⑥可设定波特率:0~19.2K(异步通信),0~64K(同步通信)

♦⑦接收数据、发送数据有分开的缓冲器,可进行全双工通信

♦⑧提供与外设(MODEM)的联络信号,便于和通信线路相连接

8251A内部结构

●I/O缓冲器

 

 

 

 

 

 

 

 

 

①接收缓冲器

     ♦串口收到的数据变成并行数据后,存这里供CPU读取。

②发送数据/命令缓冲器

     ♦CPU送来的并行数据存放在这里,准备向外发送

     ♦CPU命令存放在这里

③状态缓冲器

     ♦存放8251A状态供CPU查询

●读/写逻辑控制

接收CPU的控制信号,控制数据的传送方向

●调制解调器控制

提供和调制解调器的联络信号

●接收器及接收控制

从RxD接收串行数据,按字符格式装配成并行数据

接收器的工作过程

❶从RxD逐位接收串行码,转为并行码送到DB上

❷串口允许接收

❸接收控制电路监视RxD的电平,一旦出现低电平

❹开始采样数据位,并逐位移入接受移位寄存器中。采用重复进行,直至采样规定的停止位为止

❺将有效数据并行送入接收数据寄存器,并由奇偶检测逻辑输入数据进行奇偶校验,并根据校验结果置状态寄存器相应标志位

❻CPU读取数据

 

●发送器及发送控制

从CPU接收并行数据,自动加上适当的控制信号并转换成串行数据后从TxD引脚发送出去

 

发送器的工作过程

❶发送器接收CPU送来的并行数据,加上起始位奇偶校验位停止位,转换为串行码逐位送到TxD发送

❷CPU把要输出的数据写入发送数据寄存器

❸发送控制逻辑对数据格式化,即加上起始位、奇偶校验位和停止位等信息

❹格式化后的数据由发送移位寄存器按选定的传输速率逐位移出,由TxD逐位输出

8251A的外部引脚和特性

面向CPU的信号

面向外设(MODEM)的信号

时钟信号

面向CPU的信号

①D0~D7: 双向三态数据总线

②WR,RD:读,写控制信号

③CS:片选信号

④RESET:芯片复位

⑤C/D

          区分命令(含状态)或数据

          与A0连接,区分两个端口

●8251A的端口和读写操作

面向CPU的信号(和发送相关)

①TxRDY

              ♦输出,发送准备好,高电平有效

              ♦发送寄存器空闲,以通知CPU可以送来新的数据,当CPU写入新的数据后,变低电平

              ♦用法:产生中断请求信号或查询状态寄存器D0位

②TxE

              ♦输出,发送器空,高电平有效。

              ♦表示发送器的发送移位寄存器的数据发送完毕

              ♦用法:产生中断请求信号或查询状态寄存器D2位

发送过程

TxRDY有效→CPU写数据到8251A→8251发数据→发送完毕,TxE有效

面向CPU的信号(和接收相关)

①RxRDY

接收器准备好,高电平有效

     ♦已从RxD收到字符准备送CPU

     ♦CPu取走数据后,RxRDY变低

     ♦用法:产生中断或查询状态寄存器D1位

②SYNDET/BD

同步检测信号

            ♦同步方式:同步检测(内同步输出,外同步输入)

            ♦异步方式:间断检测(输出:检测到间断码输出高电平)

●接收过程

8251接收数据→RxRDY有效→CPU读8251

●面向外设的引脚(发送相关)发送数据线和相关联络信号

①TxD

           ♦发送数据的输出线

           ♦外设/Modem发来CTS=0开始发送

②RTS:请求发送,输出,低电平有效

           ♦通知外设/modem:DTE准备发送

           ♦通知工作命令的D5位  置1实现

③CTS:发送允许,输入信号,低电平有效

           ♦外设/MODEM对RTS的响应:允许8251A发送数据

●面向外设的引脚(接收相关):接收数据线和相关的联络信号

①RxD

           ♦串行数据接收线

②DTR:DTE准备好,输出,低有效

     ♦通知外设:已准备好接收新数据

     ♦通过工作命令D1位  置1实现

③DSR:DCE准备好,输入,低有效

     ♦DCE对DTR的响应,表示DEC已经准备好给DTR发送一个新数据

     ♦查询状态字D7位获得DSR状态

●时钟线

①RxC:接收器时钟

           ♦由外部提供,控制接收数据的速率

           ♦异步方式:RxC频率可以波特率的1倍16倍或64

           ♦同步方式:RxC的频率与波特率相同

②TxC:发送时时钟

           ♦由外部提供,其频率的选择和RxC相同。实际应用中把TxC和RxC连接同一个时钟源

           ♦数据在TxC的下降沿由发送器移位输出

③CLK:工作时钟

           ♦由外部时钟源提供。为芯片内部电路提供定时

           ♦异步方式CLK频率要大于RxC或TxC频率的30倍

第4节——8251A操作和命令

❶方式命令字

●确定8251A通信方式(同步/异步)、校验方式(奇校验/偶校验/不校验)、停止位位数、数据位位数及波特率因子

●在复位后写入,且只需写入一次

●方式命令

①D1 D0:确定8251A是工作于同步方式还是异步方式:D1D0=00:同步  ≠00:异步

                 D1D0的3种组合选择波特率因子(1、16或64)

②D3 D2:确定一个数据(字符)包含的数据位数

③D5 D4:确定要不要校验以及奇偶校验的性质

④D7D6:同步时用以指定位的位数

                同步时确定是内同步还是外同步,以及同步字符的个数

❷工作命令

●指定8251A进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种状态(如DTR),以便接收或发送数据

●格式

①D0:允许发送TxEN

           ♦D0=1:允许通过TxD线发送

           ♦D0=0:禁止发送

           ♦可作为发送中断屏蔽位

②D1:数据终端准备就绪DTR

           ♦D1=1:强置DTR有效(低电平),表示终端设备已准备好

           ♦D1=0:强置DTR无效

③D2:允许接收RxE

           ♦D2=1:允许通过RxD线接收

           ♦可作接收中断屏蔽位

④D3:发中止字符SBRK

           ♦D3=1:强迫TxD为低电平,输入连续的空号

           ♦D3=0:正常操作

⑤D4:错误标志位复位ER

           ♦D4=1:使状态字中的错误标志位(PE/OE/FE)复位

           ♦D4=0:错误标志不复位

⑥D5:请求发送RTS

          ♦D5=1:强迫RTS有效(低电平)

          ♦D5=0,不进行内部复位

⑦D6:内部复位IR

           ♦D6=1:内部复位

           ♦D6=0:不进行内部复位

⑧D7:进入搜索方式EH(只对同步方式起作用)

           ♦D7=1:启动搜索同步字符

           ♦D7=0:不搜索同步字符

●例:实现8251A复位

MOV  DX, 309H       ; 8251A命令口

MOV  AL, 01000000B  ;置D6=1.使内部复位

OUT   DX, AL

●例:异步通信时,允许接收,同时允许发送

MOV  DX, 309H         ; 8251A命令口

MOV  AL, 00000101B    ;置D2=1.D0=1,允许接收和发送

OUT   DX, AL

❸状态字

●作用

报告8251能否开始发送或接受,以及接收的数据有无错误

●格式

状态字是8251A在执行命令的过程中自动产生的,状态寄存器的某状态位  置1,表示有效

●出错转态位:D3~D5

①D3:奇偶错PE,接收器检测出奇偶错时,PE置“1”

            ♦PE有效并不禁止8251A工作

②D4:溢出错OE

            ♦前一字符未被CPU取走,单新字符又来了,则OE置“1”

            ♦OE有效并不禁止8251A工作,但溢出字符丢掉了

③D5:帧出错FE(只用于异步方式)

            ♦接收器在字符后面没有检测到停止位,则FE置“1”

以上三个错误状态位,均由工作命令字的ER位复位

●例:串行通信发送数据之前需检查是否可以开始发送。D0

;检查状态字D0位是否置1,即查TxRDY = 1

L:MOV  DX,309H        ;8251A状态口

   IN    AL,DX     

   AND  AL,01H              ;查发送器是否就绪

   JZ    L                            ;未就绪,则等待

●例:串行通信接收数据之前先检查是否可以开始接收。D1

; 查状态字的D1位是否置1,即查 RxRDY = 1?

L: MOV  DX, 309H    ; 8251A状态口

IN    AL, DX

AND  AL, 02H            ; 查接收器是否就绪

JZ     L                        ; 未就绪,则等待

●例:接收程序,检查出错信息D3~D5

MOV  DX, 309H    ; 8251A状态口

IN    AL, DX 

TEST  AL, 38H      ; 0011 1000 检查D5,D4,D3三位

JNZ   ERROR       ; 若其中有一位为1,则出错,并转入错误处理程序

●8251A初始化和操作流程

●方式命令、工作命令、状态字之间的关系

           ♦方式命令:约定通信方式和数据格式

           ♦工作命令:数据开始发送或接受

           ♦状态字:提供可发送或接收的条件

●注意:

       ♦传送数据前先初始化,确定发送方式与接收方式的通信格式

       ♦由于三个字没有特征位,且方式命令字和工作命令字放入同一端口,因而要求按一定顺序写入控制字,不能颠倒。

       ♦方式命令字必须跟在复位命令之后:即复位后的命令认为是方式命令

●例1:接收数据

采用查询式接收数据。异步传送,波特率因子为64,7位数据位,偶校验,1停止位。8251A端口地址208。

MOV  DX,209H             ;控制端口地址

;波特率因子64(11),7位数据位(10),偶校验(11),1停止位(01)。

MOV  AL,7BH             ;01111011B:方式命令

OUT  DX,AL

;接收数据(D2:1)、正常工作(D3:0)、清除错误标志(D4:1)

MOV  AL,14H            ;00010100B:工作命令

OUT  DX,AL

WAIT:IN  AL,DX      ;读状态字

      AND  AL,02H       ;00000010:状态字

      JZ  WAIT                 ;检查RxRDY是否为1

      MOV  DX,208H    ;数据端口地址

      IN  AL,DX             ;输入数据

●例2:发送数据

异步传送,波特率因子64,7位数据,偶校验,1位停止位。8251

与外设有握手信号,查询方式发送数据。端口地址208H

      MOV  DX,209H        ;控制端口地址

;波特率因子为64(11),7位数据位(10),偶校验(11),1停止位(01)。

MOV  AL,7BH               ;01111011B:方式命令

OUT  DX,AL

;发送数据(D0:1)、正常工作(D3:0)、清除错误标志(D4:1)、请求发送(D5:1)

MOV  AL,31H               ;00110001B:工作命令

OUT  DX,AL

WAIT:IN   AL,DX

      TEST  AL,01H       ;检查TxRDY是否为1

      JZ   WAIT                 ;(=0转WAIT)

      MOV  DX,208H      ;8251A数据端口地址

      MOV  AL,88H        ;输出的数据送AL

      OUT   DX,AL

所有有疑问的人,可以推荐一个老师给你们:

搜索“慕课”,然后去主页搜索“苏曙光”,这个老师真的真的优秀!讲课从不拖泥带水,精简干练,而且条理清晰,层次分明,超级严谨的!(我不是夸张,你可以当做我是个脑残粉)他目前还没有开设“微机原理”这门课,但是他开了一门《操作原理系统》。你点进去就可以加入学习了,然后去讨论区里去问他!!!

 

  • 11
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值