学习STM32串口通信基础(一):USART及数据通信概念【STM32笔记】

一. USART概述

  通用同步/异步收发器(Univeral Synchronous/Asynchronous Receiver/Transmitter,USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持UN(局部互联网)、智能卡协议和IrDA(红外数据组织)SIR ENDEC规范以及调制解调器(CTS/RTS)操作。它还允许多处理通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

二. USART主要特征

 ● 全双工,异步通信。
 ● NRZ标准格式。
 ● 分数波特率发生器系统,即发送和接收共用的可编程波特率,最高达1.5Mbps。
 ● 可编程数据字长度(8位或9位)。
 ● 可配置的停止位:支持1个或2个停止位。
 ● 发送方为同步传输提供时钟。
 ● IRDA SIR 编码器解码器:在正常模式下支持3/16位的持续时间。
 ● 智能卡模拟功能:智能卡接口支持ISO7816-3标准里定义的异步智能卡协议,智能卡用到的0.5和1.5个停止位。
 ● 单线半双工通信。
 ● 可配置的使用DMA的多缓冲器通信:在SRAM里利用集中式DMA缓冲接收/发送字节。
 ● 单独的发送器和接收器使能位。
 ● 检测标志:接收缓冲器满、发送缓冲器空、传输结束标志。
 ● 校验控制:发送校验位、对接收数据进行校验。
 ● 四个错误检测标志:溢出错误、噪音错误、帧错误、校验错误。
 ● 10个带标志的中断源:TS改变、LIN断开符检测、发送数据寄存器空、发送完成、接收数据寄存器满、检测到总线为空闲、溢出错误、帧错误、噪音错误、校验错误。
 ● 多处理器通信:如果地址不匹配,则进入静默模式。
 ● 从静默模式中唤醒(通过空闲总线检测或地址标志检测)。
 ● 两种唤醒接收器方式:地址位(MSB,第9位)、总线空闲。

三. USART功能概述

 接口通过三个引脚与其他设备连接在一起。任何USART双向通信至少需要两个脚:接收数据输入(RX)发送数据输出(TX)
  RX:接收数据串行输入。通过过采样技术来区别数据和噪音,从而恢复数据。
  TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活。并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。
  ● 总线在发送或接收前应处于空闲状态。
  ● 一个起始位。
  ● 一个数据字(8或9位),最低有效位在前。
  ● 0.5,1.5,2个的停止位,由此表明数据帧的结束。
  ● 使用分数波特率发生器 —— 12位整数和4位小数的表示方法。
  ● 一个状态寄存器(USART_SR) 。
  ● 数据寄存器(USART_DR) 。
  ● 一个波特率寄存器(USART_BRR),12位的整数和4位小数。
  ● 一个智能卡模式下的保护时间寄存器(USART_GTPR) 。

 在同步模式中需要下列引脚:
  ● CK:发送器时钟输出。此引脚输出用于同步传输的 时钟, (在Start位和Stop位上没有时钟脉冲,软件可选地,可以在最后一个数据位送出一个时钟脉冲)。数据可以在RX上同步被接收。这可以用来控制带有移位寄存器的外部设备(例如LCD驱动器)。时钟相位和极性都是软件可编程的。在智能卡模式里,CK可以为智能卡提供时钟。

 在IrDA模式里需要下列引脚:
  ● IrDA_RDI: IrDA模式下的数据输入。
  ● IrDA_TDO: IrDA模式下的数据输出。

 下列引脚在硬件流控模式中需要:
  ● nCTS: 清除发送,若是高电平,在当前数据传输结束时阻断下一次的数据发送。
  ● nRTS: 发送请求,若是低电平,表明USART准备好接收数据。

四. USART框图

1. 波特率控制

  波特率控制是图中标识1部分,通过对USART时钟的控制,可控制USART的数据传输速度。
  USART外设时钟源根据USART的编号不同而不同:挂载在APB2总线上的USART1的时钟源是fPLCK2;挂载在APB1总线上的其他USART(USART2\USART3等)的时钟源是fPLCK1;以上USART外设的时钟源经各自USART的分频系数——USARTDIV分频后,分别输出作为发送器时钟和接收器时钟,控制发送和接受的时序。
  通过改变USART外设时钟源的分频系数USARTDIV可以设置USART的波特率。

2. 收发控制

  收发控制即图中标识2部分。该部分由若干个控制寄存器组成,如USART控制寄存器(control registe, CR)、USART 状态寄存器(status register, SR)等,通过向以上控制寄存器写入各种参数控制USART数据的发送和接收。同时,通过读取状态寄存器可以查询USART当前的状态。USART状态的查询和控制可以通过hal库函数实现。

3. 数据存储转移

  数据存储转移即图中标识3部分。它的核心是两个移位寄存器:发送移位寄存器接收移位寄存器。这两个移位寄存器负责收发数据并做并串转换。
  (1) USART数据发送过程。当USART发送数据时,内核指令或DMA外设把数据从内存(变量)写入发送数据寄存器TDR后,发送控制器适时地自动把数据从TDR加载到发送移位寄存器,将数据一位一位地通过Tx引脚发送出去。
   当数据完成从TDR到发送移位寄存器的转移后,会产生发送寄存器TDR已空的事件TXE。当数据从发送移位寄存器全部发送到Tx后,会产生数据发送完成事件TC。这些事件都可以在状态寄存器中查询到。
  (2 ) USART数据接收过程。USART数据接收是USART数据发送的逆过程。
   当USART接收数据时,数据从Rx引脚一位一位地输入接收移位寄存器中。然后接收控制器自动将从移位寄存器接收的数据转移到接收数据寄存器RDR中。最后,内核指令或DMA将接收数据寄存器RDR的数据读入内存(变量)中。当接收移位寄存器的数据转移到接收数据寄存器RDR后,会产生接收数据寄存PDR非空/已满事件RXNE。

五. USART中断

STM32F103微控制器USART主要有以下各种中断事件。

中断事件 事件标志 中断使能位
发送数据寄存器空 TXE TXEIE
清除发送 CTS CTSIE
完成发送 TC TCIE
接收转发就绪可读 RXNE RXNEIE
检测到数据溢出 ORE RXNEIE
检测到空闲线路 IDLE IDLEIE
奇偶校验错 PE PEIE
断开 LBD LBDIE
多缓冲通信中的噪声 / 溢出错误 / 帧错误 NE/ORE/FE EIE

STM32F103微控制器USART以上各种不同的中断事件都被连接到同一个中断向量。

六. 有关于数据通信的基本概念

1. 并行和串行

  并行通信:是指使用多条数据线传输数据。并行通信时,各个位(bit)同时在不同的数据线上传送,数据可以字或字节为单位并行进行传输,显然,并行通信的优点是传输速度快,一般用于传输大量、紧急的数据。例如,在嵌入式系统中,微控制器与LCD之间的数据交换通常采用并行通信的方式。但是,并行通信的缺点也很明显,它需要占用更多的I/O口,传输距离较短,且易受外界信号干扰。

  串行通信:是指使用一条数据线将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。它的优点是只需寥寥几根线(如数据线、时钟线或地线等)便可实现系统与系统间或系统与部件间的数据交换,且传输距离较长。因此,串行通信被广泛应用于嵌人式系统中,其缺点是由于只使用一根数据线, 数据传输速度较慢。

2. 单工,半双工,全双工

  单工( simplex):是最简单的一种通信方式。在这种方式下,数据只能单向传送:一端固定地作为发送方,只能发送但不能接收数据;另一端固定地作为接收方,只能接收但不能发送数据。例如,日常生活中对广播和电视采用的就是单工方式。

  半双工(half duplex):是指在同一条通路上数据可以双向传输,但在同一时刻这条通路上只能有一个方向的数据在传输,即半双工通信的一端可以发送也可以接收数据,但不能在发送数据的同时接收数据。例如,辩论就是半双工方式,正方和反方可以轮流发言,但不能同时发言。

  全双工(full duplex):是指使用不同通路实现数据向两个方向传输,从而使数据在两个方向上可以同时进行传送,即全双工通信的双方可以同时发送和接收数据。例如,电话就是全双工通信。

3. 异步和同步

  在数据通信过程中,发送端和接收端双方只有相互“协调”,才能实现数据的正确传输。发送端和接收端之间的协调方式有两种:同步(Synchronous)异步(Asynchronous)。因此,数据通信也被分为同步通信异步通信

  同步通信:通过在发送端和接收端之间使用共同的时钟使它们保持“协调”。在同步通信中,发送端和接收端之间必然通过一根时钟信号线连接,并且双方只有在时钟沿跳变时才能发送和接收数据。同步通信的发送端和接收端都多占用了一个IO口用于时钟,但数据
传输速度快,适用于需要高速通信的场合。例如SPI和I2C即属于同步通信。

  异步通信:在发送端和接收端之间不存在共同的时钟。通常,异步通信中的数据以指定的格式打包为帧进行传输,并在一个数据帧的开头和结尾使用起始位和停止位实现收发间的“协调”。起始位和停止位用来通知接收端一个新数据帧的到来或者一个数据帧的结束。由于每个数据帧中都包含额外的起始位(1位)和停止位(1位~ 2位),异步通信的数据传输速率远低于同步通信,但在发送端和接收端无须额外的时钟线。USART即属于异步通信。

下一节我们来聊聊基于STM32CubeMX的实现串口通信的设计步骤

作者:Macy~

物联沃分享整理
物联沃-IOTWORD物联网 » 学习STM32串口通信基础(一):USART及数据通信概念【STM32笔记】

发表回复