一、i2c协议 由飞利浦公司开发,支持设备间的短距离通信。i2c通信需要的引脚少,硬件实现简单、可扩展性强,被广泛应用在系统内多个集成电路(IC)间的通信。 二、i2c物理层 i2c通信总线可连接多个i2c通信设备,支持多个通信主机和多个通信从机。i2c通信只需要两条双向总线——SDA(串行数据线)和SCL(串行时钟线)。 SDA:...
获取到 I2C 总线设备句柄就可以使用 rt_i2c_transfer() 进行数据传输。函数原型如下所示: rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num); 和SPI 总线的自定义传输接口一样,I2C 总线的自定义传输接口传输的数据也是以一个消息为单位。参数 ms...
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...
struct rt_i2c_msg{rt_uint16_t addr;/* 从机地址(支持7位或10位) */rt_uint16_t flags;/* 读、写标志等 */rt_uint16_t len;/* 读写数据字节数 */rt_uint8_t*buf;/* 读写数据缓冲区指针 */};其中读、写标志flags取值范围如下: #defineRT_I2C_WR0x0000/* 写标志 */#defineRT_I2C_RD(1...
1 RT-Thread 的I2C简介 I2C(Inter Integrated Circuit)总线是 PHILIPS 公司开发的一种半双工、双向二...
I2C 消息数据结构原型如下: struct rt_i2c_msg{rt_uint16_t addr; /* 从机地址*/rt_uint16_t flags; /* 读、写标志等*/rt_uint16_t len; /* 读写数据字节数*/rt_uint8_t *buf; /* 读写数据缓冲区指针 */} 从机地址addr:支持7 位和10 位二进制地址,需查看不同设备的数据手册。
一般情况下 MCU 的 I2C 器件都是作为主机和从机通讯,在 RT-Thread 中将 I2C 主机虚拟为 I2C总线设备,I2C 从机通过 I2C 设备接口和 I2C 总线通讯,相关接口如下所示: 使用方式参考官方文档即可,在此不做赘述。 驱动源码分析 i2c_core.c i2c总线协议控制的核心实现 ...
硬件I2C则直接对接核心层,提供统一I2C通信接口 dev是提供RTT设备驱动框架的统一的API(实现箭头);RTT在...
rt_i2c_bus_device_ops *ops; /*I2C设备的操作方法*/ rt_uint16_t flags; /*I2C设备参数*/ rt_uint16_t addr; /*I2C设备地址*/ struct rt_mutex lock; /*互斥量*/ rt_uint32_t timeout; /*I2C设备获取等待时间*/ rt_uint32_t retries; /*I2C设备获取次数*/ void *priv; /*I2C设备的私有...
IST8310 是一款由 ISentek 公司推出的 3 轴磁场传感器,尺寸为 3.03.01.0mm,支持快速 I2C 通信,可达 400kHz,14 位磁场数据,测量范围可达1600uT(x,y-axis)和 2500uT(z-axis), 最高 200Hz 输出频率。使用IST8310磁力计可以检测地磁场强度,用于计算磁场角度。