STM32G431之串口详解

发布时间: 2024-03-07
来源: 电子工程世界

1.串口简介

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

任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。

RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。

TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时, TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。

串口特性:

● 全双工的,异步通信
● NRZ标准格式
● 分数波特率发生器系统
─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s
● 可编程数据字长度(8位或9位)
● 可配置的停止位-支持1 或2个停止位

2.硬件接口

在本开发板中,提供串口接口有两个,一个是普通串口USART1,一个是低功耗串口LPUART1。LPUART1可以通过32.768 kHz驱动,波特率可达9600bps,我们这以普通串口为例。

根据原理图,USART1_TX和PC4相连,USART1_RX和PC5相连。

poYBAGKVYYCAQzo8AANxhmKe1j8171.png#pic_center

3.串口配置

pYYBAGKVXZGAX15ZAAMcKYwnVUU522.pngpoYBAGKVXaGASG6YAACP6tLi_cM084.pngpYYBAGKVXbSAUq43AAJ2tliqR_k735.png

3.代码生成

poYBAGKVXeKAegB0AAQOlg8c6V0532.png

3.1 printf重定向实现

int fputc(int c, FILE *stream)
{
  huart1.Instance->TDR=c;
  while( !(huart1.Instance->ISR&1<<7)){}
  return c;
}

3.2 串口中断

STM32G431芯片有读数据寄存器RDR和发送数据寄存器TDR。

读数据寄存器RDR:

pYYBAGKVXtCAa9FBAAGOiBoiyao782.png

发送数据寄存器TDR:

pYYBAGKVXyyAL1GWAAIU_JISlzM202.png


void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
  uint8_t c;
  /* USER CODE END USART1_IRQn 0 */
  HAL_UART_IRQHandler(&huart1);
  /* USER CODE BEGIN USART1_IRQn 1 */
  c=huart1.Instance->RDR;//接收数据
  huart1.Instance->TDR=c;
  /* USER CODE END USART1_IRQn 1 */
}

3.3 主函数

poYBAGKVXjmAdeizAAM7HOXuLOM595.pngpYYBAGKVXluANNCkAAyV5pe_BCI582.pngpYYBAGKVXm-AC4tkAAGqfA9dW3I200.png


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。