ESP32 Uart串口控制器

本文深入探讨ESP32芯片中的UART控制器,介绍其主要特性、架构、功能描述及配置方法。涵盖波特率自检测、数据帧格式、流控机制、DMA通信及寄存器列表等内容。

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

前言

嵌入式应用通常要求一个简单的并且占用系统资源少的方法来传输数据。通用异步收发传输器 (UART) 即可以满足这些要求,它能够灵活地与外部设备进行全双工数据交换。ESP32 芯片中有3个UART控制器可供使用,并且兼容不同的UART设备。另外,UART还可以用作红外数据交换 (IrDA) 或 RS-485 调制解调器。

主要特性
  • 支持3路UART,发送与接收FIFO共享RAM
  • 支持5/6/7/8位数据长度
  • 支持RS485、IrDA协议
  • 支持DMA高速通信
  • 支持UART唤醒模式
UART架构

在这里插入图片描述

  • 架构图中主要分为发送模块与接收模块,发送接收FIFO缓存数据,FIFOCtrl用于控制FIFO的读写,为了提高数据的传输效率,可以使用DMA方式进行数据发送和接收
    注意:UART处于睡眠Light-Sleep状态时,会通过Wakeup_Ctrl计算rxd_in的脉冲个数,当Rxd边沿变化次数大于阈值时,传输给RTC模块来唤醒UART控制器;目前仅UART0UART1具备Light-Sleep功能,且rxd_in不能通过GPIO交换矩阵,只能通过IO_MUX输入
功能描述
UART共享RAM图
  • 3路UART控制器FIFO共享1K的RAM空间,可以通过配置UART_RX_SIZE对指定UART的FIFO进行扩展【最大1024Byte】,提高整体的利用率;当UART控制器不使用时,可以通过配置UART_MEM_PD来使RAM进入低功耗状态

在这里插入图片描述

波特率自检测
  • 通过置位UART_AUTOBAUD_EN使能波特率自动检测,接收端连续检测多个数据包,获取最小的高低H/L电平脉冲宽度,来确认发送方的波特率
    在这里插入图片描述

注意:UART2 没有 Tx_FIFO 以及 Rx_FIFO 的复位寄存器。UART1 的 UART1_TXFIFO_RST 和 UART1_RXFIFO_RST 会影响 UART2 的工作。因此,只有在 UART2 的 Tx_FIFO 和 Rx_FIFO 中没有数据时,才可以置位这两个寄存器。

数据帧
  • 数据一桢从起始位START开始,并以停止位STOP结束;STOP位可以通过UART_STOP_BIT_NUM、UART_DL1_EN 和 UART_DL0_EN来配置1/1.5/2/3位宽;数据位通过UART_BIT_NUM可配置5-8位;UART_PARITY 选择奇校验或偶校验;
  • TX_FIFO中数据发送完成后会产生UART_TX_DONE_INT中断;置位UART_TXD_BRK寄存器可设置发送完成后可继续发送NULL数据帧;数据帧可通过UART_TX_IDEL_NUM配置最小间隔
    在这里插入图片描述
流控

UART 控制器有两种数据流控方式:硬件流控和软件流控。硬件流控主要通过输出信号 rtsn_out 以及输入信号dsrn_in 进行数据流控制。软件流控主要通过在发送数据流中插入特殊字符以及在接收数据流中检测特殊字符来实现数据流控功能。

UART DMA(UDMA)控制器
  • ESP32的3个UART接口共用2个UDMA控制器,通过UHCI×_UART_CE寄存器选择配置。

在这里插入图片描述

寄存器列表
配置寄存器 描述
UART_CONF0_REG 配置寄存器0,选择配置时钟源
UART_CONFIG1_REG 配置寄存器1,设置接收超时与流控功能
UART_CLKDIV_REG 时钟分频配置寄存器
UART_FLOW_CONF_REG 软件流控配置寄存器
UART_SWFC_CONF_REG 软件流控字符配置
UART_SLEEP_CONF_REG 休眠模式配置,设置RXD延边次数阈值
UART_IDEL_CONF_REG 帧空闲配置寄存器,设置帧间隔与空帧数量
UART_RS485_CONF_REG

实战派 ESP32-S3,双模无线开发板

ESP32-S3 原生支持 ESP-IDF,WiFi + 蓝牙一次搞定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值