一般情况下MCU 的I2C 器件都是作为主机和从机通讯,在RT-Thread 中将I2C 主机虚拟为I2C 总线设备,I2C 从机通过I2C 设备接口和I2C 总线通讯,相关接口如下所示: 五、查找i2c总线设备 在使用I2C 总线设备前需要根据I2C 总线设备名称获取设备句柄,进而才可以操作I2C 总线设备,查找设备函数如下所示, 代码语言:javascript ...
note “注意事项” RT-Thread I2C 设备接口使用的从机地址均不包含读写位,读写位控制需修改标志flags。 #define RT_I2C_WR 0x0000 /* 写标志*/#define RT_I2C_RD (1u << 0) /* 读标志*/#define RT_I2C_ADDR_10BIT (1u << 2) /* 10 位地址模式*/#define RT_I2C_NO_START (1u << 4) /*...
一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C 总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示: 2.1查找I2C总线设备 在使用 I2C 总线设备前需要根据 I2C 总线设备名称获取设备句柄,进而才可以操作 I2C 总线设备,查找设备函数如下所示, rt_d...
i2c_obj[i].i2c2_bus.priv = &i2c_obj[i].ops; stm32_i2c_gpio_init(&i2c_obj[i]); /* IO操作函数结构体注册到总线驱动框架 */ result = rt_i2c_bit_add_bus(&i2c_obj[i].i2c2_bus, soft_i2c_config[i].bus_name); RT_ASSERT(result == RT_EOK); stm32_i2c_bus_unlock(&soft_i2c_c...
很多东西都已经有了,我们就不重复造相同的轮子了,直接白嫖过来用。本节,我们将会学习到RT-Thread I2C总线设备的基本使用。 接下来,我们将基于RT-Thread Studio来构建。 2、开始实践 上一节我们已经熟悉了怎么创建工程和配置项目了,这节我们直接略过这两步操作,直接看硬件图。
一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示: 使用方式参考官方文档即可,在此不做赘述。 驱动源码分析 i2c_core.c i2c总线协议控制的核心实现 ...
/USER CODE BEGIN I2C3_MspInit 1/ /USER CODE END I2C3_MspInit 1 */ } 代码编写 首先在RT-ThreadSettings组件中打开I2C设备驱动程序 menuconfig BSP_USING_I2C3 bool "Enable I2C3 BUS (softwaresimulation)" default n select RT_USING_I2C select RT_USING_I2C_BITOPS ...
本文主要介绍RT-thread中IIC总线设备驱动,涉及到的主要文件有:驱动框架文件(i2c_core.c,i2c_dev.c,i2c-bit-ops.c,i2c_dev.h,i2c.h);底层硬件驱动文件(i2c_soft.c,i2c_soft.h)。这里的i2c_soft.c和i2c_soft.h是指利用MCU的GPIO口模拟IIC总线时序,而不是利用MCU的硬件IIC接口。应用IIC总线设备驱动时,需要...
rt_i2c_bit_add_bus函数的作用就是向rt-thread内核注册i2c设备内核对象,进行统一管理。在进行注册之前...