外设

:link_to_translation:`en:[English]`


SDIO 最⾼速度能⽀持到多少?

SDIO 时钟能到 50 MHz, 理论最⾼速度是 200 Mbps。

使⽤ ESP32 做触摸相关应⽤时,哪⾥有相关资料可参考?

请参考推荐的 软硬件设计

ESP-WROOM-02D 模块是否可以外接 SPI Flash ?

ESP-WROOM-02D 有空闲 SPI 外设,可外接 SPI Flash,用以存储数据。

ESP-WROOM-S2 作为从机,STM32 作为 MCU ,可以使⽤ SPI 接⼝下载吗?

不可以,默认下载功能仅支持串口 UART0,固件启动后可应用中使能其他外设,在应用中⾃⾏设计⽀持 OTA 功能。

ESP8266 的 SDIO 是否⽀持 SD 卡?

ESP8266 是 SDIO Slave,不⽀持 SD 卡。

ESP8266 是否支持 I2C slave 模式?

不支持,如果要使用此功能,推荐使用 ESP32-S2 或者 ESP32 芯片。ESP32 参考示例:i2C_self_test

ESP32 管脚配置需要注意什么?

ESP32 系列模组分为 ESP32-WROOM 系列和 ESP32-Wrover 系列,GPIO 使用配置注意事项如下。

WROOM-32/32D/32U 系列共有 26 个 pin 脚可供客户使用, 注意事项如下:

  • GPIO6~GPIO11 被内置 flash 占用,不可用做它用;
  • GPIO34,35,36 和 39 为 input only pin 脚,不具备 output 能力
  • ESP32 内置 GPIO 矩阵,部分外设接口可以配置到任意空闲 pin 脚上,即硬件设计时,不需要严格将某些功能固定在某些 pin 脚上。

详细信息可以参考 ESP32 datasheet 中表格 9 的内容。

WROVER/WROVER-I/WROVER-B/WROVER-IB 共有 24 个 pin 脚可供客户使用,注意事项如下:

  • GPIO6~GPIO11 被内置 flash 占用,不可用做它用;
  • GPIO34,35,36 和 39 为 input only pin 脚,不具备 output 能力;
  • WROVER 系列模组中,GPIO12 由于在模组内部被上拉,不建议用做触摸传感功能;
  • ESP32 内置 GPIO 矩阵,部分外设接口可以配置到任意空闲 pin 脚上,即硬件设计时,不需要严格将某些功能固定在某些 pin 脚上。

详细信息可以参考 ESP32 datasheet 中表格 9 的内容。

ESP32 有 3 组 UART,但下载只可使用 UART0,且 pin 脚固定


ESP32 是否支持 A2DP 发送音频?

ESP32 支持 A2DP 发送音频,可参考例程 a2dp_source

ESP8266 I2C 是软件模拟的吗?

ESP8266 I2C 是使用 gpio 软件模拟。

使用 ESP8266-NONOS-V3.0 版本的 SDK,如下报错是什么原因?

E:M 536    E:M 1528
  • 导致 E:M 开头的 LOG  是内存不足的原因。

ESP8266 PWM 频率范围是多少呢?

ESP8266 PWM 是软件模拟的,受定时器限制 CLK 最大为 1M。推荐频率为 1K,也可以通过降低占空比分辨率的方式提高频率。

ESP32 GPIO 管脚输出 PWM 存在限制吗?

ESP32 PWM 可通过 IO Matrix 切换至任意 GPIO 输出。但是由于 GPIO34 ~ GPIO39 仅为输入模式,故不支持做 PWM 输出。

ESP32S2 Touch Sensor 的防水功能是在有水时屏蔽 Touch 还是有水时仍然能识别 Touch 事件?

  • 当水对触摸传感器的影响较小时(水珠),传感器会主动适应;当水对触摸传感器的影响较大时(水流),传感器可通过软件配置来选择锁定某些传感器通道的状态来避免水的影响

ESP32S2 Touch Sensor 的防水流功能在屏蔽有水流的 Touchpad 时,是否能够保持未沾水的 Pad 仍能使用?

  • 可以,可通过软件选择具体屏蔽的通道

是否有推荐的可以用于 Touch Sensor 测试、稳定触发 Touch Sensor 并且参数与人手触摸时参数接近的材料?

  • 对一致性要求较高的实验可使用手机电容笔来替代人手进行测试

Touch Sensor 的 Pin 能否重映射?

  • 不能, 因为 Touch Sensor 属于模拟信号处理。

在覆盖亚克力板后,Touch Sensor 检测阈值是否需要重新设置?

  • 需要重新设置一个阈值

Touch Sensor 能否检测是否有亚克力板覆盖,以便在添加或移除亚克力板时,自动切换预设定的检测阈值?

  • 暂时不能自动适应覆盖层物理参数变化所带来的影响

ESP32 SD 卡支持的最大容量是多少?

  • SD3.01 规范中 SDXC 的卡最大支持 2TB(2048GB)容量。
  • ESP32 的 SDMMC host 符合 SD3.01 协议,通过该外设可以访问最多 2TB 的区域;使用 SDSPI 驱动通过 SPI 总线访问卡时,硬件也支持访问 2TB 的区域。
  • 在软件层面上,卡能使用的空间还受文件系统的影响。

ESP32 是否支持 USB 功能?

  • ESP32 不支持 USB 功能。
  • ESP32-S2 支持 USB1.1 。

ESP8266 使⽤ hw timer 中断有哪些注意事项?

  • 可以参考相关 API 文档 ESP8266 技术参考手册
  • 如果使用 NONOS SDK 可以阅读 ESP8266 Non-OS SDK API 参考
  • 通常情况下,硬件中断需要尽快执行结束,并且将回调函数放入 IRAM 中,避免 Cache 影响。 - RTOS SDK 需要函数去添加 IRAM_ATTR - NonOS SDK 不能在函数前添加 ICACHE_FLASH_ATTR

ESP32 脉冲宽度调制(PWM)信号是否可以分配任意一个 I/O 上?

  • 除了只有输⼊功能的 I/O(例如:GPIO34-GPIO39) 之外,理论上 PWM 可以输出到任何管脚。
  • 实际使用中仍会受到模组与芯片限制,模组未引出管脚或 Flash 占用等情况影响。

ESP32 是否有 I2S 驱动 LCD 的参考代码?


ESP8266 RTOS_2.1 以及之前版本 SDK,如何将 LOG 配置到 UART1 ?

  • 在配置 UART1 初始化后,可以通过 API 切换 LOG 输出到 UART1。
UART_SetPrintPort(UART1);

使用 ESP8266 RTOS rel 3.0 以及之后的 SDK,如何将 LOG 配置到 UART1 ?

  • 可通过 menuconfig -> Component config -> ESP8266-specific -> UART for console output -> custom -> UART peripheral to use for console output -> UART0 修改为 UART1 接口。

ESP32 IDF 中如何使能 UART 流控?


ESP8266 NonOS SDK PWM 的变化缓慢,又哪些原因?

  • 如果使用 SDK example/IOT_demo 中的渐变 API,如 light_set_aim 或 light_set_aim_r 这些 API,需要渐变的过程。
  • 若需要 PWM Duty 设置后⽴即⽣效,则可以调⽤接⼝ pwm_set_duty,需要注意调⽤ pwm_set_duty 后要调⽤ pwm_start 此次设置才能⽣效。

ESP8266 部分 GPIO 出现高电平 ?

  • 根据硬件设计,部分 GPIO 存在默认上下拉状态,所以在系统初始化时,该管脚的电平状态不受程序控制,所以会出现程序在引导过程中部分 GPIO 电平不正确。
  • 如果需要使用这些 GPIO ,硬件上建议外接器件与默认上下拉电平一致,软件可以在 bootloader 过程中调整电平状态,软件方法也会存在短暂电平异常。

ESP8266 ADC 的精度如何?

  • ESP8266 ADC 为 10 bit, 理论精度为 2^10=1024。
  • ESP8266 连接路由器后,单 STA 模式会进⼊ modem-sleep,导致芯⽚内部参考值变化,因此 ADC 测量得数据变化。
  • 如果想要测量精确,可以再关闭 wifi 后,使用 system_adc_fast_read 函数读取。

ESP8266 如何获取 ADC 寄存器 bitmap 信息?

  • 由于 ESP8266 ADC 是和内部 RF 电路⾼度集成的,所以 bitmap 和寄存器信息没有公开,如有特殊需求请联系 sales@espressif.com

ESP32 ADC 有⼏个通道?采样率和有效位数是多少?

  • ESP32 的 ADC 共有 18 个通道。
  • 在停⽌ Wi-Fi 的情况下,采样率能达到每秒 100000 次。
  • 在 Wi-Fi 正常⼯作的情况下,能达到每秒 1000 次。
  • ADC 内部有效位数为 12 位。

ESP32 是否可以关闭线程调度使用一个单独的 CPU 以实现实时 GPIO?

  • 目前 SDK 没有相关的配置选择供 CPU1 单独运行,两个核心只支持 SMP,不支持 AMP。
  • 解决输出波形被打断的问题有以下解决方案:
    • 使用硬件的信号输出,选择相关数字协议实现 SPI, I2C, I2S 等, 特殊用法 SPI 取信号输出线产生波形。
    • 硬件 RMT 是否可以产生想要的波形, 并达到足够的长度 。
    • 硬件中断中产生相应波形,需要将所有回调放入 IRAM 中。
    • 可以利用芯片中的协处理器,它可以当作无操作系统的单片机,但目前只支持汇编语言。

ESP32 Touch 应用有哪些参考资料?


ESP32 SD 卡是否可以与 Flash & Psram 共同使用?

  • 可以共同使用。
  • ESP32 Flash & PSRAM 与 SD 卡使用的不是同一组 SDIO。

ESP32 使用 UART0 作为通信串口,有哪些?

  • 通常情况下不建议将 UART0 作为普通的通信串口,因为 UART0 为设备默认 LOG 输出串口。
  • 若 ESP32 的 UART 不够用,或者硬件设计已经不方便更改的情况下,如果您要使用 UART0 作为普通的通信串口,请参考以下建议:

软件方面:防止打印影响串口通信,默认程序中 UART0 主要有三处打印设置

  • 第一处是上电 ROM 打印,上电时可将 MTDO pin 设为低电平屏蔽上电 ROM 打印。
  • 第二处是 bootloader log 信息输出,您可以将 menuconfig -> Bootloader config -> Bootloader log verbosity 设置为 No output 来屏蔽 bootloader log 输出。
  • 第三处是 app log 信息输出,您可以将 menuconfig -> Component config -> Log output -> Default log verbosity 设置为 No output 来屏蔽 log 输出。

硬件方面

  • 在下载程序的时候,注意防止 UART0 上有其它设备,如果有其它设备可能会影响程序的下载。建议在 ESP32 和其它设备之间预留一个 0 Ω 电阻,如果下载有问题可以断开这个 0 Ω 电阻。

ESP32-SOLO-1 的 GPIO34-GPIO39 是否可作为 UART 的 RX 及 CAN 的 RX 信号管脚?

  • GPIO34-GPIO39 仅作为接收,可作为 UART 的 RX 及 CAN 的 RX 信号管脚。

使用 ESP-WROOM-S2 模组,是否支持 SDIO 作从机?

  • ESP-WROOM-S2 的 Flash 使用的是 SPI 的接口,故支持 SDIO 作从机。

ESP32 是否支持使用晶振作为 I2S 的时钟源?


使用 ESP8266 调用 adc_read_fast() API 会导致 WiFi 断连?

  • 调用 adc_read_fast() API 前需要将 Wi-Fi 和中断关闭,可参见此 API 的 使用说明
  • 由于adc_read_fast() API 会进行连续采集,ADC 内部与 Wi-Fi RF 存在耦合部分,无法在 Wi-Fi 开启的状态下调用该函数。
  • 在 Wi-Fi 开启的时候请使用 adc_read() API 进行 ADC 采集,并且将为保证数据稳定,需要使用 esp_wifi_set_ps(WIFI_PS_NONE); 关闭 Wi-Fi 调制解调休眠。
  • 备注:ADC 采样率:在停⽌ Wi-Fi 的情况下,能达到每秒 100000 次。Wi-Fi 正常⼯作的情况下,能达到每秒 1000 次。

使用 ESP32 如何动态修改串口波特率并立即生效?

  • 请使用 uart_set_baudrate() API 来修改 UART 波特率 。 参见 此 API 说明

ESP32-S2 取消了 SDIO 接口,是否还支持外接 TF 卡?

  • ESP32-S2 有 4 组 SPI 的接口,可使用 SPI2/SPI3 的接口外接 TF 卡,当使用 SPI2/SPI3 的接口外接 TF 卡时,SPI 应设为通用 SPI 模式。

ESP32 GPIO 电平翻转速度是多少?

  • GPIO 电平翻转大约耗时 300ns。

ESP32 如何连接 MIC?

  • 如果连接数字 MIC ,可以连接 I2S 外设。
  • 如果连接模拟 MIC ,可以连接 ADC 外设。

ESP32 是否支持模拟音频或是数字音频输出?

  • ESP32 支持 DAC 模拟音频输出,可以使用它播放提示音等简单音频,但是如果用它播放音乐,音乐效果不是很好。
  • ESP32 同时支持 I2S 数字音频输出,I2S 可配置引脚可以在 ESP32 datasheet 第四章查看。

ESP32 中 SPI/HSPI/VSPI 三者有什么区别呢?

  • 并行 QSPI 接口中 SPI/HSPI/VSPI 是连接外部 Flash 的分组,默认 Flash 挂载在 SPI 分组上。
  • 驱动中可以任意调用的 HSPI/VSPI 均为通用 SPI,名称中的差异仅用以分组之间的区分。

ESP32 当⼀些 RTC 外设的电源打开时(SARADC1、SARADC2、AMP、HALL 传感器),GPIO36 和 GPIO39 的数字输⼊会被拉低约 80 ns,如何解决?

当⽤户决定把⽤于控制以上传感器的电源域打开时,应当忽略来⾃ GPIO36 和 GPIO39 的输⼊。

ESP32 LEDC 递减渐变,duty 值溢出错误,如何解决?

使⽤ LEDC 的过程中,应避免以下三个条件同时成⽴:

  • LEDC 启动递减渐变功能;
  • LEDC 渐变过程中 scale 寄存器设置为 1;
  • LEDC 递减渐变开始时刻或者过程中的某⼀时刻,duty 值为 2 LEDC_HSTIMERx_DUTY_RES 或 2 LEDC_LSTIMERx_DUTY_RES

ESP32 当 CAN 控制器处于复位模式(即 RESET_MODE 位置 1 或由于总线关闭)或总线关闭恢复状态时,接收错误计数器 (REC) 的数值仍会变化,如何解决?

进⼊复位模式时,应将 LISTEN_ONLY_MODE 置位,此时 REC 数值不会变化。退出复位模式前或总线关闭恢复完成时,再恢复正常的操作模式。

ESP32 当 CAN 控制器处于总线关闭恢复过程中时,必须等待总线上出现 128 次总线空闲信号(连续 11 个隐性位),才能再次进⼊主动错误状态,如何解决?

在总线关闭恢复过程中,错误报警限制中断并不⼀定指示恢复过程已完成。⽤户需检查 STATUS_NODE_BUS_OFF 位来验证恢复过程是否完成。

ESP32 总线关闭恢复完成后,CAN 控制器下⼀次发送的数据可能出错(即不符合 CAN 数据帧格式),如何解决?

⼀旦通过错误报警限制中断检测到总线关闭恢复完成,CAN 控制器应先进⼊复位模式来复位控制器的内部信号,随后退出复位模式。

ESP32 CAN 接收到错误的数据帧可能导致下⼀次接收到的数据字节⽆效,如何解决?

⽤户可以通过置位 INTERRUPT_BUS_ERR_INT_ENA 并在接收到总线错误中断时,读取 ERROR_CODE_CAPTURE_REG 来检测错误类型及错误位置。如果符合错误产⽣条件(在数据段或 CRC 字段发⽣位错误或填充错误),可以采⽤以下两种解决⽅法:

  • CAN 控制器可以发送 0 字节的空数据帧来复位 CAN 控制器的内部信号。建议给空数据帧分配⼀个不会被任何 CAN 总线上的节点接收的 ID。
  • 硬件复位 CAN 控制器(需要保存并恢复当前寄存器的数值)。

ESP32 如果多个 GPIO 管脚配置了沿中断,则硬件可能⽆法正确触发中断。

  • 解决⽅法 1:

    • 要实现 GPIO 的上升沿中断,按照下⾯的步骤实现:

      1. 配置 GPIO 的中断类型为⾼;
      2. 配置 CPU 的中断类型为 edge;
      3. CPU 的中断服务响应后,把 GPIO 的中断类型改为低。此时会发⽣第⼆次中断,需要 CPU 忽略这次中断服务程序。
    • 同理,要实现 GPIO 的下降沿中断,则按如下步骤进⾏配置:

      1. 配置 GPIO 的中断类型为低;
      2. 配置 CPU 的中断类型为 edge;
      3. CPU 的中断服务响应后,把 GPIO 的中断类型改为⾼。此时会发⽣第⼆次中断,需要 CPU 忽略这次中断服务程序。
  • 解决⽅法 2:

    假设 GPIO0 ~ GPIO31 为 Group1,GPIO32 ~ GPIO39 为 Group2,则:

    • ⼀个 group 中同时只能有⼀个沿中断;如果有⼀个沿中断,则不能有电平中断。
    • ⼀个 group 中如果没有沿中断,则可以有多组电平中断。

ESP8266 可以实现脉冲计数吗?

  • ESP8266 未包含硬件脉冲计数模块,所以仅支持通过 GPIO 上升沿或下降沿中断实现脉冲计数。
  • ESP8266 芯片中 Wi-Fi 开启后由于优先级太高可能会导致 GPIO 采样出现真空,中断采集的计数丢数据。
  • 综上,在计数要求较为严格的场景推荐使用 ESP32 以及后续推出的芯片。

请问一下ESP-01S模组与单片机通信的时候EN是否需要接上拉,还是内部已经做好上拉了

内部已做好上拉

ESP8266AT固件支持读取AD管脚的值吗

支持,有对应的指令

ESP-12F可以接几个小的OLED屏幕

只能接一个

ESP8266模块具有RS232通讯功能吗

默认不支持RS232通讯,需要购买电平转换器进行转换、

请问ESP-12F模组可以作为MCU进行开发么?

可以的,内置MCU的;

ESP-01S支持手机摄像头吗

模块不支持手机摄像头

ESP-07S和12S模组的RST,ADC需要拉电阻吗

这两个引脚不需要拉

请问ESP-12F模组的ADC是否出厂就已经校准了的?

是的,出厂芯片做了校准

ESP-07S模组可以转有线网么?

没有以太网接口;

请问ESP-12F可以通过AT指令来控制模组的IO引脚的电平么?

通用固件不支持,需联系商务要支持IO控制的固件

ESP-01S模组的蓝灯频繁闪表示什么?

表示模组工作中,蓝灯是log口

ESP-12F模组上的LED能点亮吗

LED灯可以点亮,只需要把GPIO2引脚设置为低电平即可

请问ESP-01S模组的EN引脚是否需要接?

需要外接一个上拉电阻。

请问两个8266模块支持互相透传么?

作为服务器不支持透传功能,仅可单向透传;

ESP-01S的规格书上的电压N表示什么意思

N表示N/A 没有的意思,具体描述可以查看芯片手册

ESP8266的那个RST脚链接的IO口有什么要求吗

没有特殊的要求,低电平就是给模组硬件复位

请问一下ESP-01S模组的复位pin引脚是否需要接?

需要

请问为何ESP-12F的9~14号六个引脚不能用?

这些引脚用于驱动flash存储代码运行代码用的。