芯片:esp32s3
开发环境:espidfv4.4
一、官网相关资料(哎嘿嘿,中文的I2C 驱动程序 - ESP32-S3 - — ESP-IDF 编程指南 v4.4.2 文档)
1)概述
ESP32-S3 有两个 I2C 控制器(也称为端口),负责处理在 I2C 两根总线上的通信。每个控制器都可以设置为主机或从机。例如,可以同时让一个控制器用作主机,另一个用作从机。
2)功能
I2C 驱动程序管理在 I2C 总线上设备的通信,该驱动程序具备以下功能:
-
在主机模式下读写字节
-
支持从机模式
-
读取并写入寄存器,然后由主机读取/写入
3)如何使用
-
配置驱动程序 - 设置初始化参数(如主机模式或从机模式,SDA 和 SCL 使用的 GPIO 管脚,时钟速度等)
-
安装驱动程序- 激活一个 I2C 控制器的驱动,该控制器可为主机也可为从机
-
根据是为主机还是从机配置驱动程序,选择合适的项目
-
中断处理 - 配置 I2C 中断服务
-
用户自定义配置 - 调整默认的 I2C 通信参数(如时序、位序等)
-
错误处理 - 如何识别和处理驱动程序配置和通信错误
-
删除驱动程序- 在通信结束时释放 I2C 驱动程序所使用的资源
4)配置流程
设置 i2c_config_t 结构中的几个参数
-
设置 I2C 工作模式 - 从 i2c_mode_t 中选择主机模式或从机模式
-
设置 通信管脚
-
指定 SDA 和 SCL 信号使用的 GPIO 管脚
-
是否启用 ESP32-S3 的内部上拉电阻
-
-
(仅限主机模式)设置 I2C 时钟速度
-
(仅限从机模式)设置以下内容:
-
是否应启用 10 位寻址模式
-
定义 从机地址
-
然后,初始化给定 I2C 端口的配置,请使用端口号和 i2c_config_t 作为函数调用参数来调用 i2c_param_config() 函数。在此阶段,i2c_param_config() 还将其他 I2C 配置参数设置为 I2C 总线协议规范中定义的默认值。有关默认值及修改默认值的详细信息
5) 时钟选择
增加了 时钟源分配器,用于支持不同的时钟源。时钟分配器将选择一个满足所有频率和能力要求的时钟源(如 i2c_config_t::clk_flags 中的要求)。
当 i2c_config_t::clk_flags 为 0 时,时钟分配器将仅根据所需频率进行选择。如果不需要诸如 APB 之类的特殊功能,则可以将时钟分配器配置为仅根据所需频率选择源时钟。为此,请将 i2c_config_t::clk_flags 设置为 0。有关时钟特性,请参见下表
| 时钟名称 | 时钟频率 | SCL 的最大频率 | 时钟功能 |
|---|---|---|---|
| XTAL 时钟 | 40 MHz | 2 MHz | / |
| RTC 时钟 | 20 MHz | 1 MHz | I2C_SCLK_SRC_FLAG_AWARE_DFS, I2C_SCLK_SRC_FLAG_LIGHT_SLEEP |
时钟功能是嘛
对 i2c_config_t::clk_flags 的解释如下:
-
I2C_SCLK_SRC_FLAG_AWARE_DFS:当 APB 时钟改变时,时钟的波特率不会改变。

本文介绍了ESP32-S3芯片上的I2C驱动程序,包括概述、功能、配置流程、主机和从机模式通信、中断处理、自定义配置和错误处理。示例代码展示了如何初始化I2C、读写寄存器以及删除驱动程序。此外,还提及了OLED显示屏的驱动知识,如初始化、地址设置和清屏操作。
最低0.47元/天 解锁文章
763

被折叠的 条评论
为什么被折叠?



