串口控制器
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 如何动态修改串口波特率并立即生效?
如何修改 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。