OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 269|回复: 3

INA219读取不到电流值,请大家帮忙看下!

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-5-27
在线时间
5 小时
发表于 2025-3-3 09:28:25 | 显示全部楼层 |阅读模式
1金钱

应用电路如图,VIN+是开关电源+12V,VIN-接负载正极。
I2C部分代码使用正点原子老师的代码。
关于INA219部分代码如下:
void INA219_WriteReg(unsigned char reg, unsigned int data) //写寄存器
{
        unsigned char data_temp[2];
        data_temp[0] = (unsigned char)(data>>8);
        data_temp[1] = (unsigned char)(data & 0xff);
        IIC_Start();
        IIC_Send_Byte(0x80);
        //IIC_Wait_Ack();
        Test_ack();
        IIC_Send_Byte(reg);
        //IIC_Wait_Ack();
        Test_ack();
        IIC_Send_Byte(data_temp[0]);
        //IIC_Wait_Ack();
        Test_ack();
        //data++;
        IIC_Send_Byte(data_temp[1]);
        //IIC_Wait_Ack();
        Test_ack();
        IIC_Stop();
        //delay_ms(10);
}


u8 INA219_ReadReg(unsigned char reg)
{
        unsigned int dat;
        IIC_Start();
        IIC_Send_Byte(0x80);
        Test_ack();
        //IIC_Wait_Ack();
        IIC_Send_Byte(reg);
        //IIC_Wait_Ack();
        Test_ack();
      
        IIC_Start();
        IIC_Send_Byte(0x81);
        //IIC_Wait_Ack();
        Test_ack();
        dat = INA_IIC_Read_Byte();
        INA_IIC_ACK_Send(0);
        dat<<=8;
      
        dat += INA_IIC_Read_Byte();
        INA_IIC_ACK_Send(1);
        IIC_Stop();
        return dat;
}


unsigned int INA_GET_Current_MA(void)                //获取电流(单位:mA)
{
        unsigned int dat;
        dat=INA219_ReadReg(0x04);
        return (int)(dat*0.1);                //得到寄存器的值在乘以每位对应的值(IAN_I_LSB)得到实际的电流
}


读取回来的电流值,总是6553。请高手帮忙指点,读取回来的值是全FFundefinedundefinedundefinedundefinedundefined

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3371

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8585
金钱
8585
注册时间
2020-5-11
在线时间
4005 小时
发表于 2025-3-3 12:50:35 | 显示全部楼层
估计dat就是65535,那就相当于没通信上呗,全是高电平;
建议看看波形,看它有没有发出ACK;
再读下配置寄存器看写入值与读出的值是否一致。
专治疑难杂症
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-5-27
在线时间
5 小时
 楼主| 发表于 2025-3-3 15:16:50 | 显示全部楼层
LcwSwust 发表于 2025-3-3 12:50
估计dat就是65535,那就相当于没通信上呗,全是高电平;
建议看看波形,看它有没有发出ACK;
再读下配置 ...

波形,我稍后看下,程序中的ACK,通过调试看是收不到应答信号的。就是通讯不上。I2C代码应该是没有问题的。之前用来去掉24C02用过。
回复

使用道具 举报

13

主题

137

帖子

0

精华

高级会员

Rank: 4

积分
557
金钱
557
注册时间
2018-11-2
在线时间
115 小时
发表于 2025-3-4 09:16:36 | 显示全部楼层
捕获.PNG
你用的哪种封装


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-11 05:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表