获取到I2C 总线设备句柄就可以使用rt_i2c_transfer() 进行数据传输。函数原型如下所示: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num); 参数 描述 bus i2c总线设备句柄 msgs[] 待传输的消...
获取到 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...
/** 程序清单: 这是一个I2C 设备使用例程* 例程导出了i2c_aht10_sample 命令到控制终端* 命令调用格式: i2c_aht10_sample i2c1* 命令解释: 命令第二个参数是要使用的I2C总线设备名称, 为空则使用默认的I2C总线设备* 程序功能: 通过I2C 设备读取温湿度传感器aht10 的温湿度数据并打印*/#include <rtthread.h...
static void i2c_ist8310_sample(int argc, charargv[]) { rt_uint8_t buf; rt_uint8_t result=0; float msg[3] = { 0, 0, 0 }; char name[RT_NAME_MAX]; if (argc == 2) { rt_strncpy(name, argv[1], RT_NAME_MAX); }
如上所示,使用rt_i2c_msg将需要的读写数据封装起来,然后调用i2c的发送函数即可,rt-thread的发送函数...
这个name我们后面写的是"i2c1",因为光强传感器在i2c1这个位置。 接口2:rt_i2c_transfer 数据传输 代码语言:javascript 代码运行次数:0 运行 AI代码解释 rt_size_trt_i2c_transfer(struct rt_i2c_bus_device*bus,struct rt_i2c_msg msgs[],rt_uint32_t num); ...
对于rt_i2c_msg结构体的成员解释:addr为从机的地址 flags为读写的标志,读为1,写为0 len为要发送...
struct rt_i2c_msg msgs; msgs.addr = 0x23; msgs.flags = RT_I2C_WR; //写标志 msgs.len = 1; msgs.buf = (rt_uint8_t*) &cmd; if (rt_i2c_transfer(i2c_bus, &msgs, 1) == 1) return RT_EOK; else return -RT_ERROR;当我们读取光强数据的时候,参数填充后调用rt_i2c_transfer...
RT-Thread I2C设备驱动的核心API是rt_i2c_transfer(),它传递的消息是链式结构的。可以通过消息链,实现调用一次完成多次数据的收发,此函数既可以用于发送数据,也可以用于接收数据。 函数原型: rt_size_t rt_i2c_transfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg msgs[], rt_uint32_t num) ...