通用异步收发器

  通用异步收发器 (Universal Asynchronous Receiver/Transmitter) ,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。UART是用于控制计算机与串行设备的芯片,是一个用来进行数据交换和跟踪的两个引脚UART,它为现场编程解决方案提供了一个理想的工具。

重要寄存器

  在嵌入式开发中,对寄存器的理解和正确配置至关重要。对MPC860的UART协议,有几个重要寄存器,它们是:管足配置寄存器、波特率配置寄存器、通信处理命令寄存器、SCC通用模式寄存器、发送和接收缓冲区描述器、UART的特定参数、SCC协议专用模式寄存器、SCC协议事件寄存器、UART屏蔽寄存器。

  管足配置寄存器一般是针对收、发两根管足,有开漏寄存器、数据寄存器、数据方向寄存器,它们可被设置为具有串行信道输出的能力和被设置为输入输出口。波特率配置寄存器负责把波特率指向所用的串口和配置波特率大小。通信处理命令寄存器主要用于判断命令的发出是否和阻止传送。SCC通用模式寄存器主要用于协议的选择和传输格式的配置。发送和接收缓冲区描述器主要用于收发数据和判断接收的是地址还是数据,数据的错误情况等。UART的特定参数用来部分初始化UART。SCC协议专用模式寄存器主要用于设置UART处于自动多站和非自动多站模式。事件寄存器主要用于判断是收中断还是发中断。屏蔽寄存器主要用于收、发使能。

功能

  1、将由计算机内部传送过来的并行数据转换为输出的串行数据流。

  2、将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。

  3、在输出的串行数据流加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。

  4、在输出数据流中加入启停标记,并从接收数据流中删除启停标记。

  5、处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。

  6、可以处理计算机与外部串行设备的同步管理问题。

  有一些比较的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。

设计与实现

  1 通用异步收发器发送器

  发送器每隔16个CLK16时钟周期输出1位,次序遵循1位起始位、8位数据位(假定数据位为8位)、1位校验位(可选)、1位停止位。CPU何时可以往发送缓冲器tbr写入数据,也就是说CPU要写数据到tbr时必须判断当前是否可写,如果不判这个条件,发送的数据会出错。数据的发送是由微处理器控制,微处理器给出wen信号,发送器根据此信号将并行数据din[7..0]锁存进发送缓冲器tbr[7..0],并通过发送移位寄存器tsr[7..0]发送串行数据至串行数据输出端dout。在数据发送过程中用输出信号tre作为标志信号,当一帧数据发送完毕时,tre信号为1,通知CPU在下个时钟装入新数据。

  2 通用异步收发器接收器

  串行数据帧和接收时钟是异步的,发送来的数据由逻辑1变为逻辑0可以视为一个数据帧的开始。接收器先要捕捉起始位,确定rxd输入由1到0,逻辑0要8个CLK16时钟周期,才是正常的起始位,然后在每隔16个CLK16时钟周期采样接收数据,移位输入接收移位寄存器rsr,输出数据dout。还要输出一个数据接收标志信号标志数据接收完。

  3 波特率发生器

  通用异步收发器的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提出异步的串行数据。根据给定的晶振时钟和要求的波特率算出波特率分频数。

相关百科