完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
目前在调试一款INA226电压检测芯片,已经连接成功能正常读到设备的芯片ID验证是对的,
但是我在循环里延时一秒去读电压的时候出现了读错误显示不支持i2c总线操作,用的是同一个读取函数。 读id是对的但是去读数据就不行,错误打印为 I2C bus operation not supported 求大佬帮忙看一下.非常感谢!!! static rt_err_t read_regs(struct rt_i2c_bus_device *bus, rt_uint8_t reg, rt_uint8_t len, rt_uint8_t *buf) { struct rt_i2c_msg msgs[2]; msgs[0].addr = 0x40; msgs[0].flags = RT_I2C_WR; //读数据标志 msgs[0].buf = reg; msgs[0].len = 1; msgs[1].addr = 0x40; msgs[1].flags = RT_I2C_RD; msgs[1].buf = buf; msgs[1].len = len; if (rt_i2c_transfer(bus, msgs, 2) == 2) { return RT_EOK; } else { LOG_E("Reading command error"); return -RT_ERROR; } } |
|
相关推荐
2个回答
|
|
|
|
|
|
从您提供的信息来看,您在使用INA226电压检测芯片时遇到了I2C总线操作不支持的问题。这个问题可能是由于以下几个原因导致的:
1. I2C地址冲突:请确保INA226芯片的I2C地址与其他设备不冲突。INA226的默认I2C地址是0x40或0x41(取决于配置),如果您的系统中有其他设备使用相同的地址,可能会导致冲突。 2. I2C总线问题:请检查I2C总线连接是否正确,包括数据线、时钟线和电源线。确保I2C总线没有短路或断路。 3. 读取函数问题:您提供的读取函数代码不完整,但根据您提供的部分代码,可以发现一些问题。在您的代码中,msgs[0].flags 应该是 RT_I2C_WR,表示写入操作。但是,您需要执行两次I2C操作:第一次是写入寄存器地址,第二次是读取数据。因此,您需要修改代码以支持两次I2C操作。 以下是一个修改后的示例代码: ```c static rt_err_t read_regs(struct rt_i2c_bus_device *bus, rt_uint8_t reg, rt_uint8_t len, rt_uint8_t *buf) { struct rt_i2c_msg msgs[2]; rt_uint8_t addr = 0x40; // INA226的I2C地址,根据您的配置可能需要更改 msgs[0].addr = addr; msgs[0].flags = RT_I2C_WR; msgs[0].len = 1; // 写入寄存器地址的长度 msgs[0].buf = ® // 写入寄存器地址的缓冲区 msgs[1].addr = addr; msgs[1].flags = RT_I2C_RD; msgs[1].len = len; // 读取数据的长度 msgs[1].buf = buf; // 读取数据的缓冲区 return rt_i2c_transfer(bus, msgs, 2); } ``` 4. 延时问题:在循环中使用延时可能会导致I2C总线操作超时。您可以尝试减少延时时间或使用其他方法来实现延时。 5. 代码逻辑问题:请检查您的代码逻辑,确保在读取电压数据之前,已经正确地设置了INA226的寄存器地址。 如果以上建议都不能解决问题,请尝试以下操作: 1. 检查INA226芯片的数据手册,确保您正确地理解了芯片的工作原理和寄存器配置。 2. 使用示波器或逻辑分析仪检查I2C总线上的信号,以确定问题是否出在硬件上。 3. 尝试使用其他I2C设备或在其他开发板上测试INA226芯片,以排除硬件兼容性问题。 希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。 |
|
|
|
只有小组成员才能发言,加入小组>>
152个成员聚集在这个小组
加入小组【Vision Board创客营连载体验】基于RA8D1-Vision Board的自动路径规划小车
864 浏览 0 评论
【Vision Board创客营连载体验】基于Vision Board的垃圾分类
1195 浏览 0 评论
【Vision Board创客营连载体验】使用 Vision Board 做一个 UVC Camera
848 浏览 0 评论
【Vision Board创客营连载体验】TinyMaix进行手写数字识别
1151 浏览 0 评论
【Vision Board创客营连载体验】RA8D1-Vision Board使用7寸屏设置为RGB666大端模式模式成功显示摄像头图案
1140 浏览 0 评论
在RT-Thread Studio中新建的stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?
206浏览 3评论
STM32F407ZGT6 spi flash片选引脚无法被拉低的原因?怎么解决?
1186浏览 2评论
移植RT-THREAD在stm32开发板上,使用rt_kprintf不能正常打印的原因是什么?怎么解决?
511浏览 2评论
stm32f103zet用rtthread studio生成带finsh的项目程序,串口输入help没有反应是为什么?
513浏览 2评论
rtthread studio已经成功编写了外部flash下载算法,程序也能下载进去但是不能进行调试怎么办?
432浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 09:21 , Processed in 1.073025 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号