structrt_i2c_bus_device*i2c_bus;/* I2C总线设备句柄*/ /* 查找I2C总线设备, 获取I2C总线设备句柄*/ i2c_bus=(structrt_i2c_bus_device*)rt_device_find(name); 1. 2. 3. 4. 六、数据传输 获取到I2C 总线设备句柄就可以使用rt_i2c_transfer() 进行数据传输。函数原型如下所示: rt_size_trt_i2c_tr...
i2c_bus_device,然后用rt_i2c_msg封装要发送或者接收的数据,最后调用rt_i2c_transfer进行数据收发。
#defineAHT10_I2C_BUS_NAME"i2c1"/* 传感器连接的I2C总线设备名称*/struct rt_i2c_bus_device*i2c_bus;/* I2C总线设备句柄*//* 查找I2C总线设备, 获取I2C总线设备句柄*/i2c_bus=(struct rt_i2c_bus_device*)rt_device_find(name); 六、数据传输 获取到I2C 总线设备句柄就可以使用rt_i2c_transfer() 进行...
由于I2C 可以控制多从机的属性,设备驱动模型分为 I2C总线设备(类似与Linux里面的I2C适配器) + I2C从设备; 系统I2C设备驱动主要实现 I2C 总线设备驱动,而具体的I2C 从设备的实现则调用I2C总线设备ops 访问I2C 总线设备 一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C...
使用rt_i2c_transfer()即可以发送数据也可以接收数据,如果主机只发送数据可以使用rt_i2c_master_send(),如果主机只接收数据可以使用rt_i2c_master_recv()。 接下来本章将详细讲解I2C设备驱动接口的使用。 4.1 查找设备 应用程序要使用已经由操作系统管理的I2C设备需要调用查找设备函数,找到I2C设备后才可以对该设备进行...
接口1:rt_device_find 查找 I2C 总线设备 rt_device_t rt_device_find(const char* name); 这个name我们后面写的是"i2c1",因为光强传感器在i2c1这个位置。 接口2:rt_i2c_transfer 数据传输 rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, ...
驱动层:分为硬件I2C驱动和软件I2C驱动。 核心层: ①其中bit_ops是RTT为软件I2C提供的中间层,它的作用:为底层模拟I2C驱动提供回调接口,为核心层提供统一I2C通信接口。 ②而硬件I2C则直接对接核心层,提供统一I2C通信接口。 ③RTT在核心层上,也像pin驱动那样,封装了一套API(虚线箭头),供用户直接使用。
msgs[1].flags = RT_I2C_RD; /读标志/ msgs[1].buf = buf; /读取数据指针/ msgs[1].len = len; /读取数据字节数/ if (rt_i2c_transfer(ist8310_i2c_bus, msgs, 2) == 2) { return RT_EOK; } else { return -RT_ERROR; }
i2c_core.c中实现IIC总线设备注册,以及使用IIC总线进行数据传输,如:rt_i2c_transfer(),rt_i2c_master_send(),rt_i2c_master_recv()。 rt_err_t rt_i2c_bus_device_register(struct rt_i2c_bus_device *bus, constchar*bus_name) { rt_err_t res = RT_EOK; ...
首先根据 I2C 设备名称查找 I2C 名称,获取设备句柄,然后初始化 aht10 传感器。 控制传感器的 2 的函数为写传感器寄存器 write_reg() 和读传感器寄存器 read_regs(),这两个函数分别调用了 rt_i2c_transfer() 传输数据。读取温湿度信息的函数 read_temp_humi() 则是调用这两个函数完成功能。