I2C
I2C (Inter-Integrated Circuit) 提供双线制串行总线通信功能,支持主机和从机模式下的数据收发。
头文件清单
接口清单
| 接口名称 | 功能简述 |
|---|---|
| uapi_i2c_master_init | 根据指定参数初始化I2C为主机模式 |
| uapi_i2c_master_write | 主机模式下向目标从机写入数据 |
| uapi_i2c_master_read | 主机模式下从目标从机接收数据 |
| uapi_i2c_master_writeread | 主机模式下向从机发送数据并接收来自从机的数据 |
| uapi_i2c_master_writeread_restart | 主机模式下发送数据(有restart无stop)并接收来自从机的数据 |
| uapi_i2c_master_writeread_with_flag | 主机模式下发送并接收数据,支持stop/restart标志控制 |
| uapi_i2c_slave_init | 根据指定参数初始化I2C为从机模式 |
| uapi_i2c_slave_write | 从机模式下将数据发送给主机 |
| uapi_i2c_slave_read | 从机模式下从主机读取数据 |
| uapi_i2c_set_irq_mode | 设置I2C传输是否使用中断模式 |
| uapi_i2c_register_irq_callback | 注册I2C中断事件回调函数 |
| uapi_i2c_unregister_irq_callback | 取消注册I2C中断事件回调函数 |
| uapi_i2c_slave_register_irq_callback | 注册I2C从机中断事件回调函数 |
| uapi_i2c_set_dma_mode | 设置I2C传输是否使用DMA模式 |
| uapi_i2c_deinit | 去初始化I2C外设 |
| uapi_i2c_set_baudrate | 对已初始化的I2C重置波特率 |
| uapi_i2c_suspend | 挂起所有I2C通道 |
| uapi_i2c_resume | 恢复所有I2C通道 |
Functions
uapi_i2c_master_init
头文件清单
功能说明
- 根据指定参数初始化I2C为主机模式
- 支持配置I2C波特率,包括标准模式、快速模式和高速模式
- 支持配置高速模式主机码,每个主机有唯一的主机码
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| baudrate | uint32_t | I2C波特率,不能超过IP的上限:标准模式波特率上限100KHz;快速模式波特率上限400KHz;高速模式波特率上限3.4MHz | 标准模式:0 ~ 100000;快速模式:0 ~ 400000;高速模式:0 ~ 3400000 |
| hscode | uint8_t | I2C高速模式主机码,每个主机有自己唯一的主机码,仅在高速模式下需要配置 | 0 ~ 7 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_master_write
头文件清单
功能说明
- 主机模式下向目标从机写入数据
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 成功返回后调用
- 依赖关系:I2C主机模式已使能(CONFIG_I2C_SUPPORT_MASTER == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| dev_addr | uint16_t | 主机发送数据的目标从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
| data | i2c_data_t * | 发送数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_master_read
头文件清单
功能说明
- 主机模式下从目标从机接收数据
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 成功返回后调用
- 依赖关系:I2C主机模式已使能(CONFIG_I2C_SUPPORT_MASTER == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| dev_addr | uint16_t | 主机接收数据的目标从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
| data | i2c_data_t * | 接收数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_master_writeread
头文件清单
功能说明
- 主机模式下向目标从机发送数据并接收来自从机的数据
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 成功返回后调用
- 依赖关系:I2C主机模式已使能(CONFIG_I2C_SUPPORT_MASTER == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| dev_addr | uint16_t | 主机接收数据的目标从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
| data | i2c_data_t * | 收发数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_master_writeread_restart
头文件清单
功能说明
- 主机模式下向目标从机发送数据(发送时有restart无stop)并接收来自从机的数据
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 成功返回后调用
- 依赖关系:I2C主机模式已使能(CONFIG_I2C_SUPPORT_MASTER == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| dev_addr | uint16_t | 主机接收数据的目标从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
| data | i2c_data_t * | 收发数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_master_writeread_with_flag
errcode_t uapi_i2c_master_writeread_with_flag(i2c_bus_t bus, uint16_t dev_addr,
i2c_buffer_wrap_t *write_buffer,
i2c_buffer_wrap_t *read_buffer)
头文件清单
功能说明
- 主机模式下向目标从机发送并接收数据,支持stop/restart标志控制
- 支持手动切换模式(轮询、中断两种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 成功返回后调用
- 依赖关系:I2C主机模式已使能(CONFIG_I2C_SUPPORT_MASTER == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| dev_addr | uint16_t | 主机接收数据的目标从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
| write_buffer | i2c_buffer_wrap_t * | 发送数据的信息指针 | 不为NULL |
| read_buffer | i2c_buffer_wrap_t * | 接收数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_MASTER | 功能宏 | 支持I2C主机模式功能 | y |
uapi_i2c_slave_init
头文件清单
功能说明
- 根据指定参数初始化I2C为从机模式
- 支持配置I2C波特率,需与主机保持一致
- 支持配置7比特或10比特从机地址
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| baudrate | uint32_t | I2C波特率,需要与主机保持一致:标准模式波特率上限100KHz;快速模式波特率上限400KHz;高速模式波特率上限3.4MHz | 标准模式:0 ~ 100000;快速模式:0 ~ 400000;高速模式:0 ~ 3400000 |
| addr | uint16_t | I2C作为从机工作时的从机地址 | 7比特地址范围 [0x08, 0x77];10比特地址范围 [0x7800, 0x7BFF] |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_SLAVE | 功能宏 | 支持I2C从机模式功能 | y |
uapi_i2c_slave_write
头文件清单
功能说明
- 从机模式下将数据发送给主机
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_slave_init() 成功返回后调用
- 依赖关系:I2C从机模式已使能(CONFIG_I2C_SUPPORT_SLAVE == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| data | i2c_data_t * | 发送数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_SLAVE | 功能宏 | 支持I2C从机模式功能 | y |
uapi_i2c_slave_read
头文件清单
功能说明
- 从机模式下从主机读取数据
- 支持手动切换模式(轮询、DMA、中断三种传输方式)和自动切换模式
- 自动切换模式下根据数据长度与阈值比较自动选择轮询或DMA模式
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_slave_init() 成功返回后调用
- 依赖关系:I2C从机模式已使能(CONFIG_I2C_SUPPORT_SLAVE == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| data | i2c_data_t * | 接收数据的信息指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_SLAVE | 功能宏 | 支持I2C从机模式功能 | y |
uapi_i2c_set_irq_mode
头文件清单
功能说明
- 设置I2C传输是否使用中断模式
- 适用于已初始化为主机或从机模式的I2C
- 中断模式下数据传输通过中断事件通知完成
前置条件
- 调用时序约束:当前接口必须在 I2C 初始化为主机或从机模式后调用
- 依赖关系:I2C中断传输功能已使能(CONFIG_I2C_SUPPORT_INT == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | 指定的I2C接口 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| irq_en | bool | 是否使用中断模式 | true / false |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_INT | 功能宏 | 支持I2C中断传输功能 | n |
uapi_i2c_register_irq_callback
头文件清单
功能说明
- 注册I2C中断事件回调函数
- 回调函数在中断上下文中执行
- 支持处理接收完成、发送完成、总线忙、停止和错误等中断事件
前置条件
- 调用时序约束:当前接口必须在 I2C 初始化为主机或从机模式后调用
- 依赖关系:I2C中断传输功能已使能(CONFIG_I2C_SUPPORT_INT == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | 指定的I2C接口 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| callback | i2c_irq_callback_t | 事件回调函数,在中断上下文中被调用 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_INT | 功能宏 | 支持I2C中断传输功能 | n |
uapi_i2c_unregister_irq_callback
头文件清单
功能说明
- 取消已注册的I2C中断事件回调函数
- 取消注册后不再接收I2C中断事件通知
- 适用于已注册回调的I2C接口
前置条件
- 调用时序约束:当前接口必须在通过 uapi_i2c_register_irq_callback() 注册过回调函数后调用
- 依赖关系:I2C中断传输功能已使能(CONFIG_I2C_SUPPORT_INT == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | 指定的I2C接口 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_INT | 功能宏 | 支持I2C中断传输功能 | n |
uapi_i2c_slave_register_irq_callback
头文件清单
功能说明
- 注册I2C从机中断事件回调函数集合
- 回调集合包含从机写、从机读和通用中断事件三个回调
- 回调函数在中断上下文中执行
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_slave_init() 成功返回后调用
- 依赖关系:I2C中断传输功能已使能(CONFIG_I2C_SUPPORT_INT == 1)且从机模式已使能(CONFIG_I2C_SUPPORT_SLAVE == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | 指定的I2C接口 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| callback | i2c_slave_callback_t * | 指向从机回调结构体的指针 | 不为NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_INT | 功能宏 | 支持I2C中断传输功能 | n |
| CONFIG_I2C_SUPPORT_SLAVE | 功能宏 | 支持I2C从机模式功能 | y |
uapi_i2c_set_dma_mode
头文件清单
功能说明
- 设置I2C传输是否使用DMA模式
- 适用于已初始化为主机或从机模式的I2C
- DMA模式下可实现大量数据传输而减少CPU占用
前置条件
- 调用时序约束:当前接口必须在 I2C 初始化为主机或从机模式后调用
- 依赖关系:I2C DMA传输功能已使能(CONFIG_I2C_SUPPORT_DMA == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | 指定的I2C接口 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| en | bool | 是否使能DMA传输 | true / false |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_DMA | 功能宏 | 支持I2C DMA传输功能 | n |
uapi_i2c_deinit
头文件清单
功能说明
- 去初始化I2C外设
- 支持主机和从机模式
- 去初始化后释放I2C资源
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 或 uapi_i2c_slave_init() 成功返回后调用
- 依赖关系:I2C外设已初始化
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
uapi_i2c_set_baudrate
头文件清单
功能说明
- 对已初始化的I2C重置波特率
- 支持主机和从机模式
- 波特率不能超过IP的上限
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_master_init() 或 uapi_i2c_slave_init() 成功返回后调用
- 依赖关系:I2C外设已初始化
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| bus | i2c_bus_t | I2C总线 | I2C_BUS_0(0) / I2C_BUS_1(1) / I2C_BUS_2(2) / I2C_BUS_3(3) / I2C_BUS_NONE(4) |
| baudrate | uint32_t | I2C波特率,不能超过IP的上限:标准模式波特率上限100KHz;快速模式波特率上限400KHz;高速模式波特率上限3.4MHz | 标准模式:0 ~ 100000;快速模式:0 ~ 400000;高速模式:0 ~ 3400000 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
uapi_i2c_suspend
头文件清单
功能说明
- 挂起所有I2C通道
- 支持低功耗管理场景
- 挂起后I2C通道停止工作
前置条件
- 调用时序约束:当前接口必须在 I2C 初始化后调用
- 依赖关系:I2C低功耗模式已使能(CONFIG_I2C_SUPPORT_LPM == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | 挂起所需要的参数 | - |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_LPM | 功能宏 | 支持I2C低功耗模式功能 | n |
uapi_i2c_resume
头文件清单
功能说明
- 恢复所有I2C通道
- 支持低功耗管理场景
- 恢复后I2C通道可继续工作
前置条件
- 调用时序约束:当前接口必须在 uapi_i2c_suspend() 成功返回后调用
- 依赖关系:I2C低功耗模式已使能(CONFIG_I2C_SUPPORT_LPM == 1)
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| arg | uintptr_t | 恢复所需要的参数 | - |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_SUCC(0x00) | 执行成功 | 操作成功 |
| Other | 其他错误码,参考errcode_t | 执行失败 |
Kconfig配置
| 配置项 | 宏类型 | 说明 | 默认值 |
|---|---|---|---|
| CONFIG_I2C_SUPPORT_LPM | 功能宏 | 支持I2C低功耗模式功能 | n |
Type definitions
errcode_t [SDK公共基础类型]
使用说明
作为I2C模块所有返回errcode_t类型接口的返回值类型
i2c_irq_callback_t
使用说明
I2C中断事件回调函数,通过 uapi_i2c_register_irq_callback 注册到驱动中。调用时机:I2C中断触发时在中断上下文中调用。参数 event 为 I2C 中断事件值,参考 i2c_irq_event_t。
i2c_slave_read_cb_t
使用说明
I2C从机读回调函数。调用时机:当I2C从机接收到主机发送的数据时,在中断上下文中调用。参数 data 指向接收数据缓冲区,参数 length 为接收数据的字节数。
i2c_slave_write_cb_t
使用说明
I2C从机写回调函数。调用时机:当I2C主机向从机请求数据时,在中断上下文中调用。回调函数需将待发送的数据填充到 data 指向的缓冲区,参数 length 为可写入的最大字节数,返回值为实际写入的字节数。
i2c_slave_event_cb_t
使用说明
I2C从机通用中断事件回调函数。调用时机:当I2C从机发生起始、停止或错误等中断事件时,在中断上下文中调用。参数 event 为 I2C 中断事件,参考 i2c_irq_event_t。
i2c_buffer_wrap_t
使用说明
I2C缓存数据封装类型别名,底层类型为 hal_i2c_buffer_wrap_t。用于 uapi_i2c_master_writeread_with_flag 接口的 write_buffer 和 read_buffer 参数类型。
Enumerations
i2c_bus_t
typedef enum {
I2C_BUS_0,
I2C_BUS_1,
I2C_BUS_2,
I2C_BUS_3,
I2C_BUS_NONE = I2C_BUS_MAX_NUM
} i2c_bus_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| I2C_BUS_0 | 0 | I2C总线0 |
| I2C_BUS_1 | 1 | I2C总线1 |
| I2C_BUS_2 | 2 | I2C总线2 |
| I2C_BUS_3 | 3 | I2C总线3 |
| I2C_BUS_NONE | 4 | 无效I2C总线 |
i2c_irq_event_t
typedef enum {
I2C_IRQ_EVT_RX_DONE,
I2C_IRQ_EVT_TX_DONE,
I2C_IRQ_EVT_I2C_BUSY,
I2C_IRQ_EVT_STOP,
I2C_IRQ_EVT_I2C_ERR,
} i2c_irq_event_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| I2C_IRQ_EVT_RX_DONE | 0 | 接收完成 |
| I2C_IRQ_EVT_TX_DONE | 1 | 发送完成 |
| I2C_IRQ_EVT_I2C_BUSY | 2 | I2C总线忙 |
| I2C_IRQ_EVT_STOP | 3 | 停止事件 |
| I2C_IRQ_EVT_I2C_ERR | 4 | I2C错误 |
Structures
i2c_data_t
typedef struct i2c_data {
uint8_t *send_buf;
uint32_t send_len;
uint8_t *receive_buf;
uint32_t receive_len;
} i2c_data_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| send_buf | uint8_t * | 发送数据的buffer指针 |
| send_len | uint32_t | 发送数据的buffer长度 |
| receive_buf | uint8_t * | 接收数据的buffer指针 |
| receive_len | uint32_t | 接收数据的buffer长度 |
i2c_slave_callback_t
typedef struct i2c_slave_callback {
i2c_slave_write_cb_t on_write;
i2c_slave_read_cb_t on_read;
i2c_slave_event_cb_t on_event;
} i2c_slave_callback_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| on_write | i2c_slave_write_cb_t | 从机写回调函数 |
| on_read | i2c_slave_read_cb_t | 从机读回调函数 |
| on_event | i2c_slave_event_cb_t | 从机通用中断事件回调函数 |
hal_i2c_buffer_wrap_t
typedef struct hal_i2c_buffer_wrap {
uint8_t *buffer;
uint32_t len;
uint32_t cmd_len;
uint8_t stop_flag;
uint8_t restart_flag;
uint8_t reserved[2];
} hal_i2c_buffer_wrap_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| buffer | uint8_t * | 缓存数据的buffer指针 |
| len | uint32_t | 缓存数据Buffer的长度 |
| cmd_len | uint32_t | 缓存剩余命令的长度 |
| stop_flag | uint8_t | 缓存数据发送或者接收完成后是否要停止命令 |
| restart_flag | uint8_t | 缓存数据发送或者接收是否要发重新开始命令 |
| reserved | uint8_t[2] | 预留字段 |