Edit online

接口设计

对 I2C 总线操作的结构体
struct rt_i2c_bus_device_ops
{
    rt_size_t (*master_xfer)(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num);
    rt_size_t (*slave_xfer)(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num);
    rt_err_t (*i2c_bus_control)(struct rt_i2c_bus_device *bus, rt_uint32_t, rt_uint32_t);
};

D211 实例化的结构体为:

static const struct rt_i2c_bus_device_ops i2c_ops = {
    aic_i2c_master_xfer,    // master_xfer
    RT_NULL,                // slave_xfer
    aic_i2c_bus_control,    // bus_control
};

I2C 消息结构体

struct rt_i2c_msg
{
    rt_uint16_t addr;       // I2C 从设备地址
    rt_uint16_t flags;      // I2C 读写标志
    rt_uint16_t len;        // 待传输数据的长度
    rt_uint8_t  *buf;       // 待传输数据的指针
};
1. aic_i2c_master_xfer
函数原型 static rt_size_t aic_i2c_master_xfer(struct rt_i2c_bus_device *bus, | struct rt_i2c_msg msgs[], rt_uint32_t num)
功能说明 打印 C 发生 abort 的原因,并返回相应的 error 值
参数定义 bus:I2C 接口对应的总线指针

msgs: 发送的消息数组

num: 发送的消息数量

返回值 返回已发出的消息数量
注意事项 -
2. aic_i2c_bus_control
函数原型 static rt_err_t aic_i2c_bus_control(struct rt_i2c_bus_device *bus, | rt_uint32_t cmd, rt_uint32_t value)
功能说明 对 I2C 总线参数进行设置,目前支持更改总线速率,成功返回 RT_EOK
参数定义 bus:I2C 接口对应的总线指针

cmd:命令参数

value:命令值

返回值 RT_EOK:函数执行成功

-RT_EIO:非法操作

注意事项 -