接口设计
3 Apr 2024
Read time: 4 minute(s)
函数原型 | int i2c_handle_tx_abort(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 打印 c 发生 abort 的原因,并返回相应的 error 值 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 根据不同的 abort 原因,返回不同的 error 值 |
注意事项 | - |
函数原型 | 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 为空指针 |
注意事项 | - |
函数原型 | 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 进行设置 |
函数原型 | static void i2c_init_master(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 初始化 master 模式下的参数设置,写入 hcnt 和 lcnt,配置 TXFIFO 和 RXFIFO 阈值,将 c 配置为主模式 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 无 |
注意事项 | - |
函数原型 | static void i2c_xfer_msg_init(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 在传输每个 msg 前进行的初始化,主要是将指示每个 msg 状态的变量设置为初始值,并设置传输的从地址设置,使能中断 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 无 |
注意事项 | - |
函数原型 | 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:执行过程中发生错误 |
注意事项 | - |
函数原型 | 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:执行过程中发生错误 |
注意事项 | - |
函数原型 | static void i2c_handle_read(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 当触发 FULL 中断时,调用该函数读取接收到的数据,若完成当前 msg 的接收,则释放完成量。该函数在中断中调用 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 无 |
注意事项 | - |
函数原型 | static void i2c_handle_write(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 当触发 EMPTY 中断时,调用该函数。若是读 msg,则调用该函数发送读命令,若是写 msg,则调用该函数发送数据 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 无 |
注意事项 | - |
函数原型 | static void i2c_init_slave(struct aic_i2c_dev *i2c_dev) |
---|---|
功能说明 | 初始化 slave 模式下的参数设置,配置 TXFIFO 和 RXFIFO 阈值,设置 c 为 slave 模式 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 无 |
注意事项 | - |
函数原型 | static int i2c_reg_slave(struct i2c_client *slave) |
---|---|
功能说明 | 初始化 slave 模式下的参数设置,配置 slave 是 10bit 寻址还是 7bit 寻址,设置从机的地址 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 0:执行成功-EBUSY:忙等待 |
注意事项 | - |
函数原型 | static int i2c_unreg_slave(struct i2c_client *slave) |
---|---|
功能说明 | 与 slave 功能相反 |
参数定义 | i2c_dev:指向自定义的 dev 结构体 |
返回值 | 0:执行成功 |
注意事项 | - |