前言
参考文档为
https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3.1/esp32c3/api-reference/peripherals/gpio.html
一、IIC
I2C 是一种串行同步半双工式通信协议,总线上可以同时挂载多个主机和从机。I2C 总线由串行数据线 (SDA) 线和串行时钟线 (SCL) 线构成。这些线都需要上拉电阻。
I2C 具有简单且制造成本低廉等优点,主要用于低速外围设备的短距离通信(一英尺以内)。
ESP32-C3 有两个 I2C 控制器(也称为端口),负责处理在 I2C 两根总线上的通信。每个控制器都可以设置为主机或从机。例如,可以同时让一个控制器用作主机,另一个用作从机。
二、使用步骤
1.使用驱动程序
以下部分将指导您完成 I2C 驱动程序配置和工作的基本步骤:
- 配置驱动程序 - 设置初始化参数(如主机模式或从机模式,SDA 和 SCL 使用的 GPIO 管脚,时钟速度等)
- 安装驱动程序- 激活一个 I2C 控制器的驱动,该控制器可为主机也可为从机
- 根据是为主机还是从机配置驱动程序,选择合适的项目
主机模式下通信 - 发起通信(主机模式)
从机模式下通信 - 响应主机消息(从机模式) - 中断处理 - 配置和 I2C 中断服务
- 用户自定义配置 - 调整默认的 I2C 通信参数(如时序、位序等)
- 错误处理 - 如何识别和处理驱动程序配置和通信错误
- 删除驱动程序- 在通信结束时释放 I2C 驱动程序所使用的资源
1.1 配置驱动程序
建立 I2C 通信第一步是配置驱动程序,这需要设置 i2c_config_t 结构中的几个参数:
-
设置 I2C 工作模式 - 从 i2c_mode_t 中选择主机模式或从机模式
-
设置 通信管脚
指定 SDA 和 SCL 信号使用的 GPIO 管脚
是否启用 ESP32-C3 的内部上拉电阻 -
(仅限主机模式)设置 I2C 时钟速度
-
(仅限从机模式)设置以下内容:
是否应启用 10 位寻址模式
定义 从机地址
然后,初始化给定 I2C 端口的配置,请使用端口号和 i2c_config_t 作为函数调用参数来调用 i2c_param_config() 函数。
在此阶段,i2c_param_config() 还将其他 I2C 配置参数设置为 I2C 总线协议规范中定义的默认值。有关默认值及修改默认值的详细信息,请参考 用户自定义配置。
esp_err_t err = i2c_param_config(i2c_master_port, &conf);//配置IIC参数
1.2 安装驱动程序
配置好 I2C 驱动程序后,使用以下参数调用函数 i2c_driver_install() 安装驱动程序:
-
端口号,从 i2c_port_t 中二选一
-
主机或从机模式,从 i2c_mode_t 中选择
-
(仅限从机模式)分配用于在从机模式下发送和接收数据的缓存区大小。I2C是一个以主机为中心的总线,数据只能根据主机的请求从从机传输到主机。因此,从机通常有一个发送缓存区,供从应用程序写入数据使用。数据保留在发送缓存区中,由主机自行读取。
-
用于分