码迷,mamicode.com
首页 > 其他好文 > 详细

单片机常用通信协议-UART和USART

时间:2019-11-11 21:54:13      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:传输   多个   同步   相同   发送   溢出   测试   的区别   协议   

UART

  通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。

 一、定义

  UART是一种通用串行数据总线,用于异步通信。该总线实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信。

 二、通信协议

  UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接着一位传输。

  传输一帧中格式为:起始位、数据位、奇偶校验位、停止位、空闲位

  其中各位意义如下:

  起始位:先发出一个逻辑“0”的信号,表示传输字符的开始。

  数据位:紧接着从起始位后,数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

  奇偶校验位:数据位加这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。

  停止位:是一个字符数据的结束标志。

  空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。

  波特率:是衡量数据传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如传输使用256阶符号,每8bit代表一个符号,数据传送速率为120字符/秒,则波特率为120*8=960bit/s。

三、基本结构

  ①输出缓冲寄存器:它接收CPU从数据总线上送来的并行数据,并加以保存。

  ②输出移位寄存器:它接收从输出缓冲器送来的并行数据,以发送时钟的速率把数据逐位移出,即将并行数据转换位串行数据输出。

  ③输入移位寄存器:它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入,当数据装满后,并行送往输入缓冲寄存器,即将串行数据转换成并行数据。

  ④输入缓冲寄存器:它从输入移位寄存器钟接收并行数据,然后由CPU取走。

  ⑤控制寄存器:它接收CPU送来的控制字,由控制字的内容,决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式,数据字符的位数,有无奇偶校验,是奇校验还是偶校验,停止位的位数等参数。

  ⑥状态寄存器:存放着接口的各种状态信息,例如输出缓冲区是否空,输入字符是否准备好等。在通信过程中,当符合,某种状态时,接口种的状态检测逻辑将状态寄存器的相应位置“1”。

四、功能

  在手机设计和测试阶段被用来控制CPU与其余部分的讯息传送。

  UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。 而RS232、RS449、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的实体层(Physical Layer)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的资料链接层(Data Link Layer)的概念。 COM是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM均为RS232。若配有多个异步串行通信口,则分别称为COM1、COM2... 。
 
 
USART
  通用同步/异步串行接收/发送器(Universal Synchronous/Asynchronous Receiver/Transmitter)。
一、主要特点 
  1. 全双工操作;
  2. 同步操作时,可主机时钟同步,也可从机时钟同步;
  3. 独立的高精度波特率发生器,不占用定时/计数器;
  4. 支持5、6、7、8和9位数据位,1或2位停止位的串行数据桢结构;
  5. 由硬件支持的奇偶检验位发生和检验;
  6. 数据溢出检测;
  7. 帧错误检测;
  8. 包括错误起始位的检测噪声滤波器和数字低通滤波器;
  9. 三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;  
  10.支持多机通信模式;
  11.支持倍速异步通信模式。
 二、结构组成
  USART收发模块一般分为三大部分:时钟发生器、数据发送器和接收器。控制寄存器为所有的模块共享。

  时钟发生器由同步逻辑电路(在同步从模式下由外部时钟输入驱动)和波特率发生器组成。发送时钟引脚XCK仅用于同步发送模式下,

  发送器部分由一个单独的写入缓冲器(发送UDR)、一个串行移位寄存器、校验位发生器和用于处理不同帧结构的控制逻辑电路构成。使用写入缓冲器,实现了连续发送多帧数据无延时的通信。
  接收器是USART模块最复杂的部分,最主要的是时钟和数据接收单元。数据接收单元用作异步数据的接收。除了接收单元,接收器还包括校验位校验器、控制逻辑、移位寄存器和两级接收缓冲器(接收UDR)。接收器支持与发送器相同的帧结构,同时支持帧错误、数据溢出和校验错误的检测。

三、与UART兼容性

  USART 在如下方面与AVR UART 完全兼容:

    所有USART 寄存器的位定义;

    波特率发生器;
    发送器操作;
    发送缓冲器的功能;
    接收器操作。
 

 
UART和USART的区别
  USART在UART基础上增加了同步功能,即USART是UART的增强型。

  同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。  
  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。

  同步是阻塞模式,异步是非阻塞模式。

  其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。

单片机常用通信协议-UART和USART

标签:传输   多个   同步   相同   发送   溢出   测试   的区别   协议   

原文地址:https://www.cnblogs.com/lengyan-chen/p/11806572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!