乐鑫技术交流
直播中

王桂兰

7年用户 1162经验值
私信 关注
[问答]

ESP32-C3 ESP-IDF4.3.2 I2C驱动异常的原因?

ESP32-C3,ESP-IDF版本4.3.2
使用I2C驱动OLED(驱动芯片SSD1306),开机正常驱动显示,持续刷新屏幕,运行一段时间后,总是会出现如下错误:
(1629509) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
(1629509) task_wdt:  - IDLE (CPU 0)
(1629509) task_wdt: Tasks currently running:
(1629509) task_wdt: CPU 0: esp_timer

添加LOG跟踪发现,出问题前,软件运行到componentsdriveri2c.c的第1238行i2c_hw_fsm_reset(i2c_num);返回后,就没有退出while,也没有退出当前函数i2c_master_cmd_begin,软件持续打印如上的喂狗失败的的LOG。
                                                                                                                                                                                                                        
               

回帖(1)

洪茗苞

2024-6-19 16:33:41
根据您提供的信息,您的ESP32-C3在使用ESP-IDF版本4.3.2和I2C驱动SSD1306 OLED时,出现了任务看门狗触发的问题。这个问题可能是由以下几个原因导致的:

1. **I2C通信冲突**:可能是I2C总线上存在其他设备,导致通信冲突。请确保I2C总线上没有其他设备或设备地址冲突。

2. **I2C时序问题**:可能是I2C通信时序不符合SSD1306的要求。请检查您的I2C配置,确保时钟频率和时序设置正确。

3. **I2C驱动问题**:可能是ESP-IDF中的I2C驱动存在问题。您可以尝试升级到较新的ESP-IDF版本,看看问题是否得到解决。

4. **OLED驱动问题**:可能是OLED驱动代码存在问题。请检查您的OLED驱动代码,确保没有逻辑错误或死循环。

5. **任务看门狗配置问题**:可能是任务看门狗的配置不当。请检查您的任务看门狗配置,确保其阈值设置合理。

6. **系统资源不足**:可能是系统资源不足,导致任务无法正常运行。请检查您的系统资源使用情况,确保有足够的内存和CPU资源。

为了解决这个问题,您可以尝试以下步骤:

1. **检查I2C总线**:确保I2C总线上没有其他设备或设备地址冲突。

2. **检查I2C配置**:检查您的I2C配置,确保时钟频率和时序设置正确。

3. **升级ESP-IDF**:尝试升级到较新的ESP-IDF版本,看看问题是否得到解决。

4. **检查OLED驱动代码**:检查您的OLED驱动代码,确保没有逻辑错误或死循环。

5. **调整任务看门狗配置**:检查您的任务看门狗配置,确保其阈值设置合理。

6. **优化系统资源使用**:检查您的系统资源使用情况,确保有足够的内存和CPU资源。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分