接口设计
对 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; // 待传输数据的指针 };
函数原型 | 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: 发送的消息数量 |
返回值 | 返回已发出的消息数量 |
注意事项 | - |
函数原型 | 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:非法操作 |
注意事项 | - |