Edit online

接口设计

Read time: 3 minute(s)
1. i2c_handle_tx_abort

函数原型

int i2c_handle_tx_abort(struct aic_i2c_dev *i2c_dev)

功能说明

打印 c 发生 abort 的原因,并返回相应的 error 值

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

根据不同的 abort 原因,返回不同的 error 值

注意事项

-

2. i2c_scl_cnt

函数原型

int i2c_scl_cnt(u32 ic_clk, enum aic_i2c_speed aic_speed, u16 *hcnt, u16 *lcnt)

功能说明

根据 c 模块工作的时钟频率和 i2c 的传输速率,返回需要设置的 hcnt 值和 lcnt 值

参数定义

ic_clk:i2c 模块工作的时钟频率,以 KHz 为单位 speed:表示 c 的传输速率,是标准模式还是快速模式 hcnt:指向需要设置的 hcnt 值的指针 lcnt:指向需要设置的 lcnt 值的指针

返回值

0:函数执行成功-EINVAL:hcnt 或 lcnt 为空指针

注意事项

-

3. i2c_set_timmings_master

函数原型

static int i2c_set_timmings_master(struct aic_i2c_dev *i2c_dev)

功能说明

设置 master 产生 SCL 时钟的时序参数

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

0:函数执行成功-EINVAL:参数非法

注意事项

若在 DTS 中有设置 i2c 的时序参数 ns 或 ns,则会由 timings 对 DTS 进行解析,在此函数中不再调用 cnt 进行设置

4. i2c_init_master

函数原型

static void i2c_init_master(struct aic_i2c_dev *i2c_dev)

功能说明

初始化 master 模式下的参数设置,写入 hcnt 和 lcnt,配置 TXFIFO 和 RXFIFO 阈值,将 c 配置为主模式

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

注意事项

-

5. i2c_xfer_msg_init

函数原型

static void i2c_xfer_msg_init(struct aic_i2c_dev *i2c_dev)

功能说明

在传输每个 msg 前进行的初始化,主要是将指示每个 msg 状态的变量设置为初始值,并设置传输的从地址设置,使能中断

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

注意事项

-

6. i2c_xfer_msg

函数原型

static int i2c_xfer_msg(struct aic_i2c_dev *i2c_dev, struct i2c_msg *msg, bool is_first, bool is_last)

功能说明

单个 msg 的传输函数,若当前 msg 是第一个 msg,则会等待总线空闲,然后执行 init 进行 msg 传输前的初始化工作,等待当前 msg 传输完成

参数定义

i2c_dev:指向自定义的 dev 结构体 msg:指向当前将要传输的 first:指示当前 msg 是否是第一个 last:指示当前 msg 是否是最后一个 msg

返回值

0:执行成功<0:执行过程中发生错误

注意事项

-

7. i2c_xfer

函数原型

static int i2c_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msgs[], int num)

功能说明

i2c 的传输函数,该函数可完成多个 msg 的传输,使用该函数完成对 algorithm 中 master_xfer 函数指针的填充

参数定义

i2c_dev:指向自定义的 dev 结构体 msgs:指向 msg 数组的指针 num:需要传输的 msg 个数

返回值

0:执行成功<0:执行过程中发生错误

注意事项

-

8. i2c_handle_read

函数原型

static void i2c_handle_read(struct aic_i2c_dev *i2c_dev)

功能说明

当触发 FULL 中断时,调用该函数读取接收到的数据,若完成当前 msg 的接收,则释放完成量。该函数在中断中调用

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

注意事项

-

9. i2c_handle_write

函数原型

static void i2c_handle_write(struct aic_i2c_dev *i2c_dev)

功能说明

当触发 EMPTY 中断时,调用该函数。若是读 msg,则调用该函数发送读命令,若是写 msg,则调用该函数发送数据

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

注意事项

-

10. i2c_init_slave

函数原型

static void i2c_init_slave(struct aic_i2c_dev *i2c_dev)

功能说明

初始化 slave 模式下的参数设置,配置 TXFIFO 和 RXFIFO 阈值,设置 c 为 slave 模式

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

注意事项

-

11. i2c_reg_slave

函数原型

static int i2c_reg_slave(struct i2c_client *slave)

功能说明

初始化 slave 模式下的参数设置,配置 slave 是 10bit 寻址还是 7bit 寻址,设置从机的地址

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

0:执行成功-EBUSY:忙等待

注意事项

-

12. i2c_unreg_slave

函数原型

static int i2c_unreg_slave(struct i2c_client *slave)

功能说明

与 slave 功能相反

参数定义

i2c_dev:指向自定义的 dev 结构体

返回值

0:执行成功

注意事项

-