基于STM32之UART串口通信协议(一)详解

99封情书 提交于 2020-02-12 02:04:44

 

UART —— Universal Asynchronous Receiver/Transmitter —— 通用异步收发器。

 一、UART简介

UART是异步串口通信协议,

工作原理是将传输数据的每个字符一位接一位地传输,它能将要传输的资料在串行通信与并行通信之间加以转换,能够灵活地与外部设备进行全双工数据交换。

USART是UART的升级版,其支持同步模式,用法与UART相同

二、概念辨析

------------------------------------UART  COM口   串口  USB口  RS - 232  TTL---------------------------------------------

 UART,在硬件上表现为串口收发的逻辑电路,可被集成为独立地模块化芯片

 COM口,串行通信端口,有时也称为串口,是一种连接器的结构,这里区别于USB的“通用串行总线”和硬盘的“SATA”,串口的接口标准规范和总线标准规范是RS-232

           常见的有两种物理标准,D型9针插头,和4针杜邦头,

 

 

USB口:通用串行总线,和串口完全是两个概念。虽然也是串行方式通信,但由于USB的通信时序和信号电平都和串口完全不同,因此和串口没有任何关系。USB是高速的通信接口,用于PC连接各种外设,U盘、键鼠、移动硬盘、当然也包括“USB转串口”的模块。(USB转串口模块,就是USB接口的UART模块)

TTL,RS232,RS485等都是一种逻辑电平的表示方式,详见:A


 

三、UART原理说明

 

   发送数据时,CPU将并行数据写入UART,UART按照一定格式在一根电线上串行发出;接收数据时,UART检测另一根电线上的信号,将串行收集放在缓冲区,CPU就可以读取UART获取这些数据。

  TxD —— 发送数据      RxD —— 接收数据   Gnd —— 用于给双方提供参考电平

  UART使用标准的TTL / CMOS 逻辑电平来表示数据,高电平表示1,低电平为0,。为了增强数据的抗干扰能力,提高传输长度,通常将TTL / COMS逻辑电平转换为RS-232逻辑电平


 

  数据传输流程:以传输一字节数据‘A’为例

  

 

   双方约定好波特率(每一位占据的时间);规定传输协议 

     1)平时数据线处于“空闭”状态(1状态)

   2)当要发送数据时,UART改变TxD数据线的状态,变为0状态,并维持一位的时间,这样接收方检测到开始位后,再等待1.5位的时间就开始一位一位地检测数据线的状态得到所传输的数据。

  3)UART一帧中可以有5/6/7/8位的数据,发送方一位一位的改变数据线的状态将数据发送出去,首先发送最低位

  4)如果使用校验功能,UART在发送完数据后,还要发送一个校验位:奇校验,偶校验——数据位连同校验位中,“1”的数目属于奇数或偶数。

  5)最后发送停止位,数据线恢复到“空闭”状态(1状态),停止位长度有三种:1位、1.5位、2位

图1-1  TTL / COMS逻辑电平下,传输A时的波形

  

 

 图1-2  RS - 232逻辑电平下,传输数据A的波形

  对于TTL / CMOS 电平,在xV至5V之间,就认为是逻辑1,在0V至yV之间就为逻辑0。

  对于RS - 232电平,在-12V至-3V之间,就认为是逻辑1,在+3V至+12V之间就为逻辑0。

  RS-232的电平比TTL/CMOS高,能传输更远的距离,在工业上用得比较多。

在ARM芯片上的串口都是TTL电平的,通过板子或外接电平转换芯片,可以转成RS232标准的接口。如图2-1所示

 

 如今终端上的RS-232标准的接口越来越少,越多的是USB口,因也可以使用USB转串口芯片将TTL电平转为USB传输电平。


 

四、异步串行通信的特点

所谓异步通信,是指数据传送以字节为单位,字符与字符间的传送是完全异步的,位与位的传送基本是同步的。

特点:

  1)以字符为单位传送信息

  2)相邻两字符间的间隔任意长

  3)由于一个字符的波特位长度有限,所以需要接受时钟和发送时钟相近就可以

  4)字符间异步,字符内同步


 

 

五、基本结构

  图3-1   UART结构图

   ARM处理器中UART功能相似,都有独立的通道,每个通道都可工作于中断或DMA模式,即UART可以发出中断或DMA请求以便在UART、CPU间传输数据。具体的UART特性可参见不同芯片的芯片手册。以下以S3C2440芯片分析UART的使用过程。

  S3C2440  UART的FIFO深度为64字节。发送数据时,CPU先将数据写入发送FIFO中,然后UART自动将FIFO的数据复制到“发送移位器”中,发送移位器将数据一位一位地发送到TxDn数据线上(按照设定的格式,插入开始位,校验位和停止位)。接收数据时,“接收移位器”将RxDn数据线上的数据一位一位接收进来,然后复制到FIFO中,CPU即可从中读取数据。UART的结构如图3-1所示。


 

六、使用UART

 

 

参考文档:

嵌入式LINUX应用开发手册 —— 韦东山

基于STM32之UART串口通信协议(一)详解

串口、COM口、UART口, TTL、RS-232、RS-485区别详解

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!