码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 输出高电平
    
    • 1
    • 2
  • 相关阅读:
    Linux之SSH、rsync
    【设计模式】单例模式 Singleton Pattern
    DTW 2023:戴尔发力多云战略与边缘运营
    JVM——堆内存调优(Jprofiler使用)Jprofile下载和安装很容易,故没有记录,如有需要,在评论区留言)
    VSIX:C#项目 重命名所有标识符(Visual Studio扩展开发)
    LinkList集合方法(自写)
    搭建Umijs环境并创建一个项目 介绍基本操作
    2_JavaScript面试题
    详解23种设计模式——工厂模式
    OpenJudge NOI 2.1 3526:最简真分数
  • 原文地址:https://blog.csdn.net/Marchtwentytwo/article/details/128000185
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号