基本信息
文件名称:STMicroelectronics 系列:STM32L4 系列_(24).STM32L4系列的UART与USART接口.docx
文件大小:26.17 KB
总页数:23 页
更新时间:2025-06-19
总字数:约1.35万字
文档摘要

PAGE1

PAGE1

STM32L4系列的UART与USART接口

1.UART与USART概述

1.1UART与USART的区别

UART(UniversalAsynchronousReceiver-Transmitter)和USART(UniversalSynchronousAsynchronousReceiver-Transmitter)是两种常用的串行通信接口。它们的主要区别在于同步和异步通信模式的支持:

UART:仅支持异步通信,即数据传输不需要时钟信号同步。

USART:支持异步和同步通信,即数据传输可以在有或没有时钟信号的情况下进行。

1.2STM32L4系列中的UART与USART

STM32L4系列单片机集成了多个UART和USART接口,这些接口可以用于各种串行通信任务,如与传感器、显示器或其他微控制器进行数据交换。STM32L4系列中的UART和USART接口具有以下特点:

多个实例:STM32L4系列通常包含多个UART和USART实例,如USART1、USART2、USART3等。

灵活的波特率设置:支持多种波特率设置,以适应不同的通信需求。

中断和DMA支持:支持中断和DMA(DirectMemoryAccess)传输,提高通信效率。

多种通信模式:支持单线通信、多处理器通信、LIN(LocalInterconnectNetwork)通信等。

低功耗模式:支持多种低功耗模式,适用于电池供电的设备。

2.UART与USART的硬件结构

2.1UART与USART的内部结构

STM32L4系列的UART和USART接口内部结构包括以下几个主要部分:

移位寄存器:用于数据的串行到并行转换和并行到串行转换。

接收器FIFO:用于缓存接收到的数据。

发送器FIFO:用于缓存待发送的数据。

控制寄存器:用于配置UART和USART的各种功能,如波特率、数据格式、中断使能等。

状态寄存器:用于反映UART和USART的当前状态,如接收完成、发送完成等。

数据寄存器:用于读取接收到的数据和写入待发送的数据。

2.2引脚配置

UART和USART接口的引脚配置通常包括以下几个引脚:

TX:发送数据引脚。

RX:接收数据引脚。

RTS:请求发送(仅适用于USART)。

CTS:清除发送(仅适用于USART)。

CLK:时钟信号引脚(仅适用于USART)。

在STM32L4系列中,这些引脚可以通过GPIO配置进行复用。例如,USART1的引脚配置如下:

功能|引脚|

|——|——|

TX|PA9|

RX|PA10|

RTS|PA11|

CTS|PA12|

CLK|PA13|

2.3时钟源配置

UART和USART接口的时钟源可以通过APB1或APB2时钟进行配置。时钟源的选择和波特率的计算关系密切,可以通过以下公式计算波特率:

波特率

在STM32L4系列中,可以通过RCC(ResetandClockControl)寄存器配置时钟源。例如,设置USART1的时钟源为APB2时钟:

//设置USART1的时钟源为APB2时钟

RCC_PeriphCLKInitTypeDefPeriphClkInitStruct;

PeriphClkInitStruct.PeriphClockSelection=RCC_PERIPHCLK_USART1;

PeriphClkInitStruct.Usart1ClockSelection=RCC_USART1CLKSOURCE_PCLK2;

HAL_RCCEx_PeriphCLKConfig(PeriphClkInitStruct);

3.UART与USART的软件配置

3.1初始化配置

在使用UART和USART接口之前,需要进行初始化配置。初始化配置包括设置波特率、数据格式、中断使能等。以下是一个使用HAL库初始化USART1的示例:

//初始化USART1

UART_HandleTypeDefhuart1;

voidMX_USART1_UART_Init(void)

{

huart1.Instance=USART1;

huart1.Init.BaudRate=115200;

huart1.Init.WordLength=UART_WORDLENGTH_8B;

huart1.Init.StopBits=UART_STOPBITS_1;

huart1.Init.Parity=UART_PARITY_NONE;

huart1.Init.Mode=UART_MODE_TX_RX;