CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

接口函数

表 145 I2C驱动接口函数
API 芯片
GR551x GR5526

app_i2c_init

Y

Y

app_i2c_deinit

Y

Y

app_i2c_receive_sync

Y

Y

app_i2c_receive_async

Y

Y

app_i2c_transmit_sync

Y

Y

app_i2c_transmit_async

Y

Y

app_i2c_mem_read_sync

Y

Y

app_i2c_mem_read_async

Y

Y

app_i2c_mem_write_sync

Y

Y

app_i2c_mem_write_async

Y

Y

app_i2c_get_handle

Y

Y

app_i2c_master_abort_it

Y

Y

app_i2c_timing_adjust Y Y
app_i2c_timing_get Y Y
app_i2c_transmit_receive_sync Y N

app_i2c_init

表 146 app_i2c_init接口
函数原型

uint16_t app_i2c_init(app_i2c_params_t *p_params, app_i2c_evt_handler_t evt_handler)

功能说明

初始化I2C

输入参数
  • p_params:初始化参数的结构体指针
  • evt_handler:用户自己实现的中断回调函数
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

回调函数形式参照typedef void (*app_i2c_evt_handler_t)(app_i2c_evt_t *p_evt);

HAL层已经实现中断标志位的清理,用户不用关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可。

app_i2c_deinit

表 147 app_i2c_deinit接口
函数原型

uint16_t app_i2c_deinit(app_i2c_id_t id)

功能说明

反初始化I2C

输入参数

id:I2C模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_receive_sync

表 148 app_i2c_receive_sync接口
函数原型

uint16_t app_i2c_receive_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout)

功能说明

I2C轮询方式(同步)接收数据

输入参数
  • id:I2C模块ID
  • target_address:I2C Slave地址(作为Slave时,该参数无效)
  • p_data:接收数据的buffer
  • size:需要接收的数据长度,以Byte为单位
  • timeout:接收超时时间
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_receive_async

表 149 app_i2c_receive_async接口
函数原型

uint16_t app_i2c_receive_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size)

功能说明

I2C中断方式(异步)接收数据

输入参数
  • id:I2C模块ID
  • target_address:I2C Slave地址(作为Slave时,该参数无效)
  • p_data:接收数据的buffer
  • size:需要接收的数据长度,以Byte为单位
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_transmit_sync

表 150 app_i2c_transmit_sync接口
函数原型

uint16_t app_i2c_receive_sync(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size, uint32_t timeout)

功能说明

I2C轮询方式(同步)发送数据

输入参数
  • id:I2C模块ID
  • target_address:I2C Slave地址(作为Slave时,该参数无效)
  • p_data:需要发送的数据buffer指针
  • size:需要发送的数据长度,以Byte为单位
  • timeout:发送超时时间
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_transmit_async

表 151 app_i2c_transmit_async接口
函数原型

uint16_t app_i2c_transmit_async(app_i2c_id_t id, uint16_t target_address, uint8_t *p_data, uint16_t size)

功能说明

I2C中断方式(异步)发送数据

输入参数
  • id:I2C模块ID
  • target_address:I2C Slave地址(作为Slave时,该参数无效)
  • p_data:接收数据的buffer
  • size:需要发送的数据长度,以Byte为单位
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_mem_read_sync

表 152 app_i2c_mem_read_sync接口
函数原型

uint16_t app_i2c_mem_read_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout)

功能说明

I2C轮询方式(同步)读取特定内存地址的数据

输入参数
  • id:I2C模块ID
  • dev_address:I2C Slave地址(作为Slave时,该参数无效)
  • mem_address:需要读取的内存地址
  • mem_addr_size:读取的内存地址长度
  • p_data:接收数据的buffer
  • size:需要接收的数据长度,以Byte为单位
  • timeout:读取超时时间
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_mem_read_async

表 153 app_i2c_mem_read_async接口
函数原型

uint16_t app_i2c_mem_read_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size)

功能说明

I2C中断方式(异步)读取特定内存地址的数据

输入参数
  • id:I2C模块ID
  • dev_address:I2C Slave地址(作为Slave时,该参数无效)
  • mem_address:需要读取的内存地址
  • mem_addr_size:读取的内存地址长度
  • p_data:接收数据的buffer
  • size:需要接收的数据长度,以Byte为单位
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_mem_write_sync

表 154 app_i2c_mem_write_sync接口
函数原型

uint16_t app_i2c_mem_write_sync(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size, uint32_t timeout);

功能说明

I2C轮询方式(同步)向特定内存地址写入数据

输入参数
  • id:I2C模块ID
  • dev_address:I2C Slave地址(作为Slave时,该参数无效)
  • mem_address:需要写入的内存地址
  • mem_addr_size:写入的内存地址长度
  • p_data:需要发送的数据buffer指针
  • size:需要发送的数据长度,以Byte为单位
  • timeout:写入超时时间
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_mem_write_async

表 155 app_i2c_mem_write_async接口
函数原型

uint16_t app_i2c_mem_write_async(app_i2c_id_t id, uint16_t dev_address, uint16_t mem_address, uint16_t mem_addr_size, uint8_t *p_data, uint16_t size);

功能说明

I2C中断方式向(异步)特定内存地址写入数据

输入参数
  • id:I2C模块ID
  • dev_address:I2C Slave地址(作为Slave时,该参数无效)
  • mem_address:需要写入的内存地址
  • mem_addr_size:写入的内存地址长度
  • p_data:需要发送的数据buffer指针
  • size:需要发送的数据长度,以Byte为单位
返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_get_handle

表 156 app_i2c_get_handle接口
函数原型

i2c_handle_t *app_i2c_get_handle(app_i2c_id_t id)

功能说明

获取I2C句柄

输入参数

id:I2C模块ID

返回值

I2C句柄指针

备注

app_i2c_master_abort_it

表 157 app_i2c_master_abort_it接口
函数原型

uint16_t app_i2c_master_abort_it(app_i2c_id_t id)

功能说明

I2C中止Master当前的传输(非阻塞模式)

输入参数

id:I2C模块ID

返回值

APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义

备注

app_i2c_timing_adjust

表 158 app_i2c_timing_adjust接口
函数原型 uint16_t app_i2c_timing_adjust(app_i2c_id_t id, uint32_t timing_type, int32_t delta)
功能说明 对I2C时序进行微调,包括SCL高电平长度、低电平长度以及SDA保持时间
输入参数
  • id:I2C模块ID
  • timing_type:时序类型(I2C_TIMING_SS_SCL_LOW、I2C_TIMING_SS_SCL_HIGH、I2C_TIMING_FS_SCL_LOW、I2C_TIMING_FS_SCL_HIGH、I2C_TIMING_HS_SCL_LOW、I2C_TIMING_HS_SCL_HIGH、I2C_TIMING_FS_SPK、I2C_TIMING_HS_SPK、I2C_TIMING_SDA_TX_HOLD、I2C_TIMING_SDA_RX_HOLD)
  • delta:时序需要修改的值,单位为I2C的工作时钟(sclk)周期

返回值 APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义
备注

若SCL通信时钟周期长度等于4倍的I2C的工作时钟周期长度,当高电平的时序值等于1时,即1个工作时钟(sclk)周期,则高电平在时钟周期占比1/4;如不设置,则默认高低电平时间相同

由于上拉电阻以及电路走线差异,可能会导致I2C时序无法满足标准,导致通信出现异常,可通过此接口进行微调,入参delta为相对变化量,在初始化完成后调用此接口。I2C工作时钟在GR551x上等于系统时钟频率,在GR5526上等于串行时钟频率

app_i2c_timing_get

表 159 app_i2c_timing_get接口
函数原型 uint16_t app_i2c_timing_get(app_i2c_id_t id, uint32_t timing_type, uint32_t *p_timing_value)
功能说明 获取I2C的时序,包括SCL高电平长度、低电平长度以及SDA保持时间
输入参数
  • id:I2C模块ID
  • timing_type:时序类型
  • p_timing_value:对应时序的绝对值,单位为I2C的工作时钟(sclk)周期
返回值 APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义
备注

app_i2c_transmit_receive_sync

表 160 app_i2c_transmit_receive_sync接口
函数原型

uint16_t app_i2c_transmit_receive_sync(app_i2c_id_t id, uint16_t dev_address, uint8_t *p_tdata, uint16_t tsize,

uint8_t *p_rdata, uint16_t rsize, uint32_t timeout)

功能说明

I2C主机以Polling方式(同步)向特定内存地址写入数据后读取数据,中间没有停止位。

I2C从机以Polling方式(同步)接收数据后发送数据,中间没有检测停止位。

输入参数
  • id:I2C模块ID
  • dev_address:I2CSlave地址(作为Slave时,该参数无效)
  • p_data:需要发送的数据buffer指针
  • tsize:需要发送的数据长度,以Byte为单位
  • p_rdata:需要接收的数据buffer指针
  • rsize:需要接收的数据长度,以Byte为单位
  • timeout:发送与接收的总超时时间
返回值 APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义
备注

扫描关注

打开微信,使用“扫一扫”即可关注。