bit_ops是RTT为软件I2C提供的中间层,它的作用:为底层模拟I2C驱动提供回调接口,为核心层提供统一I2C...
i2c_dbg("I2C bus [%s] registered\n", bus_name);returnres; } i2c-bit-ops.c中主要实现了利用GPIO模拟IIC总线时序的相关接口函数,如:i2c_start(),i2c_restart(),i2c_stop(),i2c_waitack(),i2c_writeb(),i2c_readb(),i2c_send_bytes(),i2c_send_ack_or_nack(),i2c_recv_bytes(),i2c_send_ad...
i2c_dev.h中相关数据结构(struct rt_i2c_priv_data用于i2c_bus_device_control()函数中RT_I2C_DEV_CTRL_RW控制标志): #defineRT_I2C_DEV_CTRL_10BIT 0x20#defineRT_I2C_DEV_CTRL_ADDR 0x21#defineRT_I2C_DEV_CTRL_TIMEOUT 0x22#defineRT_I2C_DEV_CTRL_RW 0x23structrt_i2c_priv_data {structrt_i2c_...
drv_hw_i2c层:没有软件I2C的bit_opt层,而是直接对接i2c_core层提供的结构体:struct rt_i2c_bus_device_ops。作者为了简单说明,写了个例子(简单粗暴的例子): 代码语言:javascript 复制 struct rt_i2c_bus_device i2c1_bus;I2C_HandleTypeDef hi2c1;staticrt_err_ti2c_hw_init(void){hi2c1.Instance=I2C1;h...
i2c-bit-ops.c I/O模拟I2C的驱动实现 drv_soft_i2c.c I/O模拟I2C的底层硬件支持 先分析 I2C 总线设备注册的流程 在drv_soft_i2c.c 中 INIT_BOARD_EXPORT(rt_hw_i2c_init); 则OS 运行时会自启动 rt_hw_i2c_init 进行 模拟I2C 相关硬件IO的初始化 ...
一、RT-Thread I2C 总线注册 1.1 I2C 设备使用步骤 1.2 检查问题 二、温湿度传感器软件包 2.1 添加及基本测试 2.2 程序中使用 三、EEPROM软件包 3.1 添加及基本测试 3.2 程序中使用 结语 前言 组件与软件包部分之前文章我们学习了 2 个组件: SFUD组件与 AT组件。 RT-Thread 丰富的生态系统,除了一些标准的组件...
struct rt_i2c_bus_device 代码语言:javascript 复制 /*for i2c bus driver*/struct rt_i2c_bus_device{struct rt_device parent;/*继承了rt_device*/conststruct rt_i2c_bus_device_ops*ops;/*I2C设备的操作方法*/rt_uint16_t flags;/*I2C设备参数*/rt_uint16_t addr;/*I2C设备地址*/struct rt_mutex...
struct rt_i2c_msg msgs[], rt_uint32_t num); 在这里,我们看到有两个结构体形参。 struct rt_i2c_bus_device /*for i2c bus driver*/ struct rt_i2c_bus_device { struct rt_device parent; /*继承了rt_device*/ const struct rt_i2c_bus_device_ops *ops; /*I2C设备的操作方法*/ ...
一、RT-Thread I2C 总线注册 我们以前博文讲过,RT-Thread 组件和软件包基本都是基于 RT-Thread 的设备模型,和前面讲的 SPI 设备类似,I2C 设备软件包的使用也需要先注册 I2C 总线设备到 RT-Thread 的设备管理器。 如果没有注册总线,是无法使用软件包的,比如温湿度传感器的 sht2x 软件包测试如下: ...
/*for i2c bus driver*/ struct rt_i2c_bus_device { struct rt_device parent; /*继承了rt_device*/ const struct rt_i2c_bus_device_ops *ops; /*I2C设备的操作方法*/ rt_uint16_t flags; /*I2C设备参数*/ rt_uint16_t addr; /*I2C设备地址*/ struct rt_mutex lock; /*互斥量*/ rt_uint...