ESP8266 如何使用 GPIO13 & GPIO15 进行 UART0 通信?

说明:

ESP8266EX 上电时候 U0TXD 默认会输出⼀些打印信息,对此敏感的应⽤可以使⽤内部引脚交换功能 (UART SWAP)。在初始化的时候,将 U0TXD, U0RXD 分别与 U0RTS (GPIO15),U0CTS (GPIO13) 进⾏交换。交换后,GPIO15 和 GPIO13 将作为交换后的 U0TXD 和 U0RXD 对应连接⾄ MCU 的 RXD 和 TXD 进⾏串⼝通信。相应参考电路如图 1-10b 所示。可参考《ESP8266 硬件设计指南》上的 P10~P11 页说明。

在这里插入图片描述

理由:

由于 GPIO15 作为 ESP8266EX 的 strap pin,上电需为低电平。因此,为防⽌上电 GPIO15 被拉⾼因⽽进⼊错误的 boot 模式,这⾥做了⼀个隔离处理。即,上电 Q1 默认不导通,GPIO15 未连接⾄ MCU 的 RXD。待程序跑起来之后,可通过 GPIO5 控制 Q1 导通。如此可实现 GPIO15 的上电隔离。
在这里插入图片描述

1. 修改默认的日志输出串口 UART0 为 UART1

使用 ESP8266 UART1(GPIO2)作为程序日志输出串口,可进行如下配置:

  • menuconfig -> Component Config -> Common ESP-related
    • Channel for console output -> Custom UART
    • UART peripheral to use for console output(0-1) -> UART1

在这里插入图片描述

2. 开启 UART0 串口交换配置

可基于 ESP8266_RTOS_SDK/examples/peripherals/uart_events 例程来测试,在 menuconfig 中开启如下设置:

  • Component config -> Common ESP-related -> Swap UART0 I/O pins

在这里插入图片描述

或者在 uart_driver_install() 函数之后调用 uart_enable_swap() 函数

在这里插入图片描述

总结:

  • 将通过 GPIO1 和 GPIO3 打印芯片上电启动日志(一级 bootloader)

在这里插入图片描述

  • 将通过 UART1(GPIO2)打印 二级 bootloader & 程序运行日志

在这里插入图片描述

  • 将通过 UART0(GPIO13 和 GPIO15)与主机 MCU 进行 UART 通信。

在这里插入图片描述

硬件接线

在这里插入图片描述


此外,若使用的是 ESP8266-NONOS-SDK ,则不支持通过menuconfig 配置选项来开启 Swap Uart 功能,只需要在 UART 初始化代码之后,调用 system_uart_swap() 函数即可,具体说明请参见《ESP8266 技术参考》

实现步骤:

  • 在 UART0 初始化函数之后调用 system_uart_swap() 函数

  • 同时要求 GPIO5 在芯片上电之后输出高电平

  • GPIO5 初始化代码如下:

PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO5_U);          //设置 GPIO5 上拉使能
GPIO_OUTPUT_SET(GPIO_ID_PIN(5), 1);            // 设置 GPIO5 输出高电平

猜你喜欢

转载自blog.csdn.net/Marchtwentytwo/article/details/128000185
今日推荐