IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ESP8266 的串口(UART)使用 -> 正文阅读

[嵌入式]ESP8266 的串口(UART)使用

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称为 UART ),详细说明请参见:UART(百度百科)

【总体介绍】

  • ESP8266 有 2 组 UART 口,分别为 UART0 和 UART1
  • 默认 UART0 主要是用做固件下载程序日志输出
  • UART1 因为只支持 TX,所以一般在需要 UART 用于通讯时,建议用 UART1 来输出日志信息。参见《ESP8266 技术规格书》说明。
    在这里插入图片描述

1 ESP8266 下载串口(UART)


2 ESP8266 日志输出串口(UART)

  • ESP8266 软件中默认使用的是 UART0 来输出程序日志。
  • ESP8266 芯片上电启动的 一级 bootloader 的输出日志的串口波特率为 74880 bps (此波特率不可更改),使用的是外部 26MHz 的芯片启振晶振。请参考 “ESP8266_RTOS_SDK/components/bootloader_support/src/bootloader_init.c” 说明。
  • ESP8266 的程序运行输出日志默认使用的串口波特率为 74480 bps,使用的是 SPI Speed 的 40MHz 的晶振,与 CPU 主频有关。可在 menuconfig 中进行修改,如下:
    menuconfig —> Component config —> Common ESP-related —> UART console baud rate

    在这里插入图片描述
    默认设置范围是 1200 bps ~ 4M bps ,如下:
    在这里插入图片描述

2.1 目前屏蔽 UART0 的日志输出方式有两种:


通过调用相关 API 来屏蔽 UART0 的日志输出:

  • 只屏蔽应用层的打印,调用 UART_SetPrintPort(UART1) 或者 system_uart_swap() 函数就可以了。

  • 屏蔽掉所有信息(从 boot 启动阶段就开始屏蔽掉),调用system_uart_swap() 函数,同时要在硬件上做修改,具体的原理可参考《ESP8266 技术参考手册》 page 88~89。注意:system_uart_swap() 函数屏蔽的是通过 GPIO13 和 GPIO15 来作为串口输出的 log 。
    在这里插入图片描述

通过 menuconfig 配置端可关闭的日志如下:

  • 关闭 Bootloader 日志:

    menuconfig -> bootloader config --> bootloader log verbosity 选定为 No output 。

  • 关闭程序运行日志:

    menuconfig -> Component config --> log output --> Default log verbosity 选定为 No output 。

  • 关闭其他日志输出:

    menuconfig -> Component Config ->Common ESP-related -> Channel for console output -> None 。

  • 更换程序日志输出串口为 UART1:

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



3 ESP8266 串口(UART)通信

参考资料:

  • ESP8266 在上电时候,UART0 默认会输出?些打印信息,如果对此敏感的应?,可以使用 UART 的内部引脚交换功能,在初始化的时候,将 U0TXD、U0RXD 分别与 U0RTS(GPIO15)、 U0CTS(GPIO13) 交换来与 MCU 进行 UART 通信。可参考《ESP8266 技术参考手册》 page 88~89

  • 通过 UART0 的 U0RTS(GPIO15)、 U0CTS(GPIO13) 管脚交换来实现 ESP8266 与其他芯片的 UART 通信时,交换管脚 MTDO(GPIO15)作为 TXD 、MTCK(GPIO13)作为 RXD 。
    在这里插入图片描述

  • ESP8266 通过 UART0 的 U0RTS(GPIO15)、 U0CTS(GPIO13) 管脚交换与另一个芯片的 UART 通讯时,可调用 uart_enable_swap() API 来实现。参考 “ESP8266_RTOS_SDK/components/esp8266/driver/uart.c

      esp_err_t uart_enable_swap(void)
      {
          // wait for tx done.
          uart_wait_tx_done(UART_NUM_0, portMAX_DELAY);
      
          UART_ENTER_CRITICAL();
          // MTCK -> UART0_CTS -> U0RXD
          PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_UART0_CTS);
          // MTD0 -> UART0_RTS -> U0TXD
          PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_UART0_RTS);
          // enable swap U0TXD <-> UART0_RTS and U0RXD <-> UART0_CTS
          SET_PERI_REG_MASK(UART_SWAP_REG, 0x4);
          UART_EXIT_CRITICAL();
      
          return ESP_OK;
      }
    
  • ESP8266 的 UART0 例程参考:ESP8266_RTOS_SDK/examples/peripherals

    包含如下测试例程:


【ESP8266 UART 通信常见应用问题】

  • ESP8266 的串?波特率范围是多大?

    ESP8266 的串?波特率范围从 300 到 115200*40 都可以?持。参见 《ESP8266 技术参考手册》中的 “ 11.3.1. 波特率 ”章节说明。


  • ESP8266 UART 的硬件 FIFO 是多大?

    ESP8266 的 UART0 和 UART1 各有?个?度为 128 Bytes 的硬件 FIFO,读写 FIFO 都在同?个地址操作。参见 《ESP8266 技术参考手册》中的 “ 11.2. 硬件资源 ”章节说明。


4 ESP8266 AT 传输串口

参考资料:ESP8266 ESP-AT User Guide


5 ESP8266 串口(UART) 性能

  • ESP8266 的波特率硬件是可以支持到 4.5 Mbps, 但是不建议软件使用这么高的波特率, 原因有两点:

    • 接收模式下,波特率太高,大量数据传输软件可能无法及时取走硬件 FIFO 中的数据从而导致数据丢失。ESP8266 的硬件 UART FIFO128 Bytes , ESP8266 的 UART 说明你可以阅读 《ESP8266 技术参考手册》 ,建议波特率不要超过 2 Mbps。如果系统有很多中断或有使用 Wi-Fi,该值需要低一点,以证数据不会丢失。

    • 有些串口芯片无法支持这么高的波特率,或者 ESP8266 波特率误差超过串口芯片允许的误差范围,因为当波特率不能被 ESP8266 串口模块时钟(80 MHz)整除的时候,就存在误差。

  • 当 UART 波特率过高导致接收数据丢失时,我们的建议:

    • 增加 UART 硬件流控
    • 降低 UART 波特率
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 11:11:54  更:2022-02-04 11:12:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:31:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码