You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否同时使用ESP32-S板上兼具内置闪存功能的UART1引脚?

ESP32-S 三路UART与内置闪存引脚复用问题解答

核心结论

可以同时使用全部3路UART且不影响内置闪存的正常使用,但需要通过引脚重映射或合理配置规避冲突。

具体分析与解决方案

  • 冲突根源:ESP32-S的UART1默认引脚(GPIO9=RX、GPIO10=TX)确实与内置SPI Flash的D2、D3引脚复用。Flash默认工作在SPI模式下,仅在启动阶段或执行Flash读写操作时会占用这两个引脚,常规运行时UART1理论上可使用,但这种方式存在稳定性风险(比如Flash读写时UART通信会中断或出错),不推荐。

  • 推荐方案:UART1引脚重映射
    ESP32的UART支持灵活的引脚重映射,可将UART1的TX/RX映射到其他空闲引脚,完全规避与Flash的冲突。以ESP-IDF为例,配置代码示例如下:

    uart_config_t uart1_config = {
        .baud_rate = 115200,
        .data_bits = UART_DATA_8_BITS,
        .parity = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
        .source_clk = UART_SCLK_APB,
    };
    // 初始化UART1,将TX映射到GPIO21,RX映射到GPIO22(可根据实际空闲引脚调整)
    uart_param_config(UART_NUM_1, &uart1_config);
    uart_set_pin(UART_NUM_1, GPIO_NUM_21, GPIO_NUM_22, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);
    uart_driver_install(UART_NUM_1, 1024*2, 0, 0, NULL, 0);
    

    选择重映射引脚时,要避开其他外设的默认引脚,优先选择未被标注为Flash/PSRAM专用的空闲引脚。

  • 特殊情况:必须使用默认UART1引脚
    如果因硬件限制只能用GPIO9/10,需确保应用中Flash读写操作极少(比如仅启动时读取固件,运行时不进行Flash擦写/读写),此时可临时使用,但不建议在工业级或稳定性要求高的场景中采用。

额外提示

  • UART0默认引脚(GPIO1=TX、GPIO3=RX)通常用于下载调试,若需将其作为普通UART使用,需注意禁用下载模式或调整调试接口;
  • UART2默认引脚(GPIO16=RX、GPIO17=TX)无Flash复用冲突,可直接使用。

内容的提问来源于stack exchange,提问作者Vishesh Varma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:50:31