接口设计
对 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:非法操作 |
| 注意事项 | - |
