RT-Thread论坛
直播中

打马过草原

9年用户 858经验值
擅长:可编程逻辑 电源/新能源
私信 关注

INA226 i2c读取时显示不支持I2C总线操作怎么解决?

目前在调试一款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)

张嘉

2024-7-9 15:33:36
这里有问题,改为:
msgs[0].buf = ®
举报

张强

2024-7-9 16:03:13
从您提供的信息来看,您在使用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芯片,以排除硬件兼容性问题。

希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便我们能够更好地帮助您。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分