所有错误描述
[CACHE-126] 在 cache 回写过程中可能出现 cache 命中错误
描述
当 cache 正在进行回写时,如果此时 CPU 访问该 cache 行中的其他地址,访问请求会被当作 cache 缺失,触发缺失处理模块从外部存储器重新加载该 cache 行,导致同一 cache 路中存在两份相同的 cache 数据。
由于硬件逻辑问题,cache 命中逻辑会选择错误的 cache 数据,导致 CPU 返回错误结果。如果 CPU 还对该 cache 行进行了写入,有可能导致此次回写的数据丢失。
例如,以下情况可能导致 ESP32-S3 cache 命中错误:
在中断内访问正在被 cache 回写的 cache 行中的数据:
在 cache 回写过程中,CPU 等待回写完成信号时,发生中断请求并进入中断处理程序,且访问同一个缓冲区的内存。若处理程序访问的数据与回写地址位于同一 cache 行,可能导致 cache 命中错误。
多核场景冲突:
在多核环境中,CPU0 等待 cache 回写完成时,若 CPU1 访问了相同的 cache 行地址,可能导致 cache 命中错误。
变通方法
在 cache 回写过程中,建议用户同时增加以下两个保护措施:
关闭当前 CPU 的中断,等待 cache 回写结束后再打开。
开启 cache 冻结 (freeze) 功能,暂停另一个 CPU 访问 cache。
在 ESP-IDF v4.4.6+, v5.0.4+, v5.1.1+, v5.2 及以上版本中已通过以上方法自动绕过该问题。
解决方案
暂无 修复计划。
[RTC-126] 从 Light-sleep 模式唤醒后 RTC 电源域寄存器读取错误
描述
如果在 Light-sleep 模式下关闭 RTC 外设的电源,从 Light-sleep 模式唤醒后,ESP32-S3 的 CPU 读取 RTC 电源域的寄存器时会有一定概率出错。
变通方法
建议用户避免在 Light-sleep 模式下关闭 RTC 外设的电源,此时不会影响功耗。
在 ESP-IDF v4.4 及以上版本中已自动绕过该问题。
解决方案
暂无 修复计划。
[ANALOG-160] BIAS_SLEEP = 0 且 PD_CUR = 1 时,芯片会被损坏
描述
若将模拟电源配置成 BIAS_SLEEP = 0 且 PD_CUR = 1,会对芯片造成不可逆的损坏。会触发该问题的使用场景为:处于 Light-sleep 或 Deep-sleep 睡眠模式时使用 ULP 和/或触摸传感器。
变通方法
建议用户通过软件禁止在休眠过程中出现该种模拟电源配置组合。
在 ESP-IDF v4.4.2+、v5.0 及以上版本中已通过避免使用上述配置组合自动绕过该问题。
解决方案
暂无 修复计划。
[LCD-239] LCD 模块在使用某些时钟分频器时行为不稳定
描述
使用 RGB 格式时,如果时钟分频器设置为 1,即 LCD_CAM_LCD_CLK_EQU_SYSCLK = 1,则:
LCD_PCLK 将无法设置为下降沿触发。
在此模式下连续发送帧时(即 LCD_CAM_LCD_NEXT_FRAME_EN = 1),可能会出现第二帧在其首个帧插入上一帧最后一个数据的情况。
使用 I8080 格式时,如果数据传输前 LCD_CLK 的时钟周期小于或等于 2,则可能导致第一个数据和后续数据量不准确。
备注
请参考下文获取 I8080 格式下数据传输前的时钟周期。
数据传输前的时钟周期取决于以下因素:
VFK 周期长度(单位:LCD_PCLK):VFK 阶段的时钟周期长度
CMD 周期长度(单位:LCD_PCLK):CMD 阶段的时钟周期长度
DUMMY 周期长度(单位:LCD_PCLK):DUMMY 阶段的时钟周期长度
LCD_CAM_LCD_CLK_EQU_SYSCLK:配置 LCD_PCLK 是否等于 LCD_CLK
LCD_CAM_LCD_CLKCNT_N:决定 LCD_PCLK 和 LCD_CLK 之间的分频关系
基于上述信息,我们定义以下三个变量:
total_pixels = VFK 周期长度 + CMD 周期长度 + DUMMY 周期长度
cycle_unit =
1(LCD_CAM_LCD_CLK_EQU_SYSCLK = 1 时)
LCD_CAM_LCD_CLKCNT_N + 1(LCD_CAM_LCD_CLK_EQU_SYSCLK = 0 时)
ahead_cycle = total_pixels * cycle_unit
ahead_cycle 即为数据传输前的时钟周期,若该值小于或等于 2,则会产生错误。
变通方法
建议用户:
使用 RGB 格式时,避免将 LCD_CAM_LCD_CLK_EQU_SYSCLK 配置为 1。
使用 I8080 格式时:
尽量避免将 LCD_CAM_LCD_CLK_EQU_SYSCLK 配置为 1。
如果必须将 LCD_CAM_LCD_CLK_EQU_SYSCLK 设置为 1,则需确保 ahead_cycle 大于 2。
在 ESP-IDF v4.4.5+、v5.0.3+、v5.1 及以上版本中已通过上述方法自动绕过该问题。
解决方案
暂无 修复计划。
[USBOTG-4289] 用户无法使用 USB-OTG Download 下载功能
描述
在 Date Code(日期代码)为 2219 之前的 ESP32-S3 系列芯片产品、生产工单为 PW-2022-06-XXXX 之前的 ESP32-S3 系列模组和开发板产品的 eFuse 中,EFUSE_DIS_USB_OTG_DOWNLOAD_MODE (BLK0 B19[7]) 被默认置起且无法修改,因此,用户无法使用 USB-OTG Download 下载功能。
备注
关于 Date Code 与生产工单的详细信息,请参考章节 芯片版本标识。
变通方法
也支持通过 USB-Serial-JTAG 下载固件,可参考 USB Serial/JTAG 控制器。
解决方案
该问题已在芯片版本 v0.2 的部分批次中修复。
在 Date Code 为 2219 及之后的 ESP32-S3 系列芯片、生产工单为 PW-2022-06-XXXX 及之后的 ESP32-S3 系列模组和开发板产品中,EFUSE_DIS_USB_OTG_DOWNLOAD_MODE (BLK0 B19[7]) 不再预烧写,而开放给用户烧写,这将使 USB-OTG Download 下载功能可用。
更多关于此问题的信息及使用建议,可参考 关于 ESP32-S3 系列产品的 USB_OTG Download 和 USB_Serial_JTAG Download 功能的安全公告。
[RMT-176] RMT 启用持续发送模式时,空闲信号电平可能出错
描述
在 ESP32-S3 的 RMT 模块中,如果启用了持续发送模式,那么预期发送通道在发送 RMT_TX_LOOP_NUM_CHn 次数据后会停止数据传输,之后空闲状态的信号电平应由结束标志中的 level 段决定。
但在实际数据传输中,停止数据传输后,通道空闲状态的信号电平并不由结束标志中的 level 段决定,而是由回卷数据携带的电平决定,最终的电平不能确定。
变通方法
建议用户置位 RMT_IDLE_OUT_EN_CHn,从而仅使用寄存器来控制空闲状态的信号电平。
从首个支持持续发送模式的 ESP-IDF 版本 (v5.0) 开始已自动绕过该问题。在这些版本的 ESP-IDF 中,空闲状态的信号电平只能由寄存器控制。
解决方案
暂无 修复计划。
[TOUCH-100] TOUCH_SCAN_DONE_INT 原始中断数据值不确定
描述
ESP32-S3 的触摸传感器触发前两次 TOUCH_SCAN_DONE_INT 中断时,读到的原始中断数据值不确定。
变通方法
建议用户直接跳过前两次 TOUCH_SCAN_DONE_INT 中断,此后关闭该中断并不再使用。
解决方案
暂无 修复计划。
[ADC-183] SAR ADC2 的数字控制器 (DMA) 无法工作
描述
SAR ADC2 的数字控制器(即 DIG ADC2 控制器)有可能收到错误的采样启动信号,导致控制器进入无法工作的状态。
变通方法
建议使用 RTC 控制器来控制 SAR ADC2。
解决方案
暂无 修复计划。