串口控制器

  • uart
  • UART

ESP32 使用 UART0 作为通信串口,有哪些需要注意的地方?

  • 通常情况下不建议将 UART0 作为普通的通信串口,因为 UART0 为设备默认日志输出串口。
  • 若 ESP32 的 UART 不够用,或者硬件设计已经不方便更改的情况下,您要使用 UART0 作为普通的通信串口,请参考以下建议:

软件方面:防止打印影响串口通信,默认程序中 UART0 主要有三处打印设置。

  • 第一处是一级引导程序(ROM 固件) 打印,上电时可将 MTDO 管脚设为低电平屏蔽 ROM 固件打印。
  • 第二处是二级引导加载程序日志信息输出,您可以将 menuconfig -> Bootloader config -> Bootloader log verbosity 设置为 No output 来屏蔽引导加载程序日志输出。
  • 第三处是应用日志输出,您可以将 menuconfig -> Component config -> Log output -> Default log verbosity 设置为 No output 来屏蔽应用日志输出。

硬件方面

  • 在下载程序的时候,注意防止 UART0 上有其它设备,如果有其它设备可能会影响程序的下载。建议在 ESP32 和其它设备之间预留一个 0 Ω 电阻,如果下载有问题可以断开这个 0 Ω 电阻。

使用 ESP32 如何动态修改串口波特率并立即生效?

可以使用 uart_set_baudrate() API 来动态修改 UART 波特率。

参见 API 说明

如何修改 UART0 的输出口?

可以在 menuconfig 中进行设置,idf.py menuconfig —> Component config —> Common ESP-related -> Channel for console output(custom UART)

ESP32 的 UART0 是否可以在输出日志的同时又用作接收电脑控制台的输入?

可以。UART0 输出日志只需要使用 TXD0 管脚,接收电脑控制台的输入只需要使用 RXD0 管脚。可基于 esp-idf/examples/system/console/basic 例程来测试。

ESP32 是否支持 UART IRDA 工作模式?

ESP32 硬件上可以支持 UART IRDA 工作模式,但软件上还没有对应的官方例程参考。

在串口资源有限的情况下,是否支持基于 GPIO 的 UART 模拟?

可基于esp-idf中 soft_uart 例程来测试。

在 ESP32-C6 未进入 DeepSleep 模式的情况下,是否可以同时使用 UART 和 LP UART?

可以同时使用。只需使能 LP Core,即可使用 LP UART。例程请参考:esp-idf/examples/system/ulp/lp_core/lp_uart