跳转到主要内容

USART

MCU微课堂 | CKS32F107xx USART(一)

cathy /

USART介绍

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

USART主要特性

  • 全双工的,异步通信

  • NRZ标准格式

  • 分数波特率发生器系统

—发送和接收共用的可编程波特率,最高达4.5Mbits/s

直接使用单片机的USART发送数据

judy /

<strong>一、使用USART发送数据</strong>

我们在写单片机程序的时候,在Debug时,往往要用到串口输出信息,这是会使用printf打印出我们想要的信息来,但是printf有一个弊端,就是输出打印时间较长。这样在一些对时间精度要求非常高的场合,使用printf将会带来一系列问题,这时,如果使用单片机的USART自定义一个协议,直接发送数据到上位机,将会得到我们想要的效果。

下面对怎样使用USART发送数据做一个整理。

1、发送单个字符
<pre style="overflow-x:auto; background-color:#e9e9e9;">void USART1_PutChar(u8 ch)
{
USART_SendData8(USART1,(u8)ch);

while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
}</pre>

【下载】[应用笔记]STM32 USART自动波特率检测

judy /

正确的USART通信要求发送和接收波特率的匹配度足够高,否则可能发生通信错误。

当在两个设备之间建立通信链路时,自动波特率检测十分有用,因为从设备能够检测到主控制器的波特率并进行相应的自我调整。这需要使用一种自动机制来确定波特率。

某些STM32器件中内置的USART外设提供许多功能,包括硬件自动波特率检测。

本应用笔记旨在介绍STM32微控制器的自动波特率检测功能,并为没有在硬件中实现此功能的STM32器件提供替代软件方法。

点击下载<span class="download"><a href="http://mcu.eetrend.com/files/2017-12/wen_zhang_/100009174-30858-v1.pdf"…;《【应用笔记】STM32 USART自动波特率检测 》</a></span>