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;