手册 27 章,935
I2C 接口 - ESP32-S3 - — ESP-IDF 编程指南 v5.5 文档
ESP32-S3 有两个 I2C 控制器。
可作为主机或从机
支持 7 位或 10 位地址
支持标准模式(Sm) 100 kHz 和快速模式(Fm) 400 kHz,时钟不得超过 400 kHz

没有默认引脚,引脚通过 GPIO matrix 自由映射。
低速的1~10k既可。时钟频率越高,上拉电阻阻值应越小,但不应小于1k,推荐2~5k的电阻。
ESP-IDF 的 I2C Slave v1.0 不好用,并且将在 ESP-IDF v6.0 中移除。推荐使用 v2.0 驱动程序,但需要手动开启设置:

CONFIG_I2C_ISR_IRAM_SAFE 将在 cache 被禁用时控制默认的 ISR 处理程序正常工作,详情请参阅 IRAM 安全。
CONFIG_I2C_ENABLE_DEBUG_LOG 可启用调试日志,但会增加固件二进制文件大小。调试时打开,产品时关闭。
CONFIG_I2C_ENABLE_SLAVE_DRIVER_VERSION_2 用于启用 I2C 从机驱动 v2.0 程序。推荐开启
Place I2C Master ISR handler into IRAM 推荐开启,默认是放在DRAM的,放在IRAM的话中断处理程序ISR执行的更快。
IRAM 安全
默认情况下,若 cache 因写入或擦除 flash 等原因而被禁用时,将推迟 I2C 中断。此时事件回调函数将无法按时执行,会影响实时应用的系统响应。
Kconfig 选项 CONFIG_I2C_ISR_IRAM_SAFE 能够做到以下几点:
即使 cache 被禁用,I2C 中断依旧正常运行。
将 ISR 使用的所有函数放入 IRAM 中。
将驱动程序对象放入 DRAM 中(以防它被意外映射到 PSRAM 中)。
启用以上选项,即使 cache 被禁用,I2C 中断依旧正常运行,但会增加 IRAM 的消耗。
Cache 禁用发生在操作外部 Flash 时,。