• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签: INA226  

资源简介

使用INA226芯片测量电流和总线电压,可测量uA级别电流,可自动计算功率

资源截图

代码片段和文件信息

#include “ina226.h“
#include “iic.h“
#include “usart.h“

/////////////
//2毫欧方案//   
////////////

/////////////
//1毫欧方案//
////////////

//Configuration Register 00h  ===  0x43FF === D15-RST;D12:D14-000 ; D9:D11(AVG)-001 ; D6:D8(VBCT)-111 ; D3:D5(VSHCT)-111 ; D0-D2(MODE)-111
//Shunt Voltage Register 01h (Read-Only)2.5uV/bit  ===  D15:正负标志 ; D0:D14-DATA ; 负数:二进制补码 +1
//Bus Voltage Register 02h (Read-Only)1.25mV/bit  ===  d15:0 ; D0:D14 - DATA ; 不支持负电压检测
//Power Register 03h (Read-Only) --- 25*Current_LSB/bit === D0:D15 - DATA
//Current Register 04h (Read-Only)1mA/bit === d15:0 ; D0:D14 - DATA 
//Calibration Register 05h (Read/Write) === 0xA00 === d15:0 ; D0:D14 - DATA 
//Mask/Enable 06h (Read/Write) === 0x0000H ===
//Bit 15 - SOL: Shunt Voltage Over-Voltage  
//Bit 14 - SUL: Shunt Voltage Under-Voltage 
//Bit 13 - BOL: Bus Voltage Over-Voltage 
//Bit 12 - BUL: Bus Voltage Under-Voltage 
//Bit 11 - POL: Over-Limit Power
//Bit 10 - CNVR: Conversion Read 
//Bit 4 - AFF: Alert Function Flag 
//Bit 3 - CVRF: Conversion Ready Flag 
//Bit 2 - OVF: Math Overflow Flag 
//Bit 1 - APOL: Alert Polarity bit; sets the Alert pin polarity.
//Bit 0 - LEN: Alert Latch Enable; configures the latching feature of the Alert pin and Flag bits.
//Alert Limit 07h (Read/Write) === 0x0000H === D0:D15 - DATA 
//INA226 ADDR : 1000000 


/////////////
//50毫欧方案//
////////////
// INA226_SetRegPointer(INA226_ADDR1CFG_REG);//为了测试
// my_read_test = INA226_ReadData(INA226_ADDR1);//为了测试 默认值为4712
//配置寄存器   0x43FF 采样4次 0x4dff 采样512次   采样时间1.1ms 1次  0x4147
//INA226_SendData(INA226_ADDR1CFG_REG0x4147);//
u16 my_read_test = 0;
void INA226_Init(void)
{


//INA226_SendData(INA226_ADDR1CFG_REG0x4125);/*分流电压,持续模式,1.1MS转化一次, 采样 1 次*/
//INA226_SendData(INA226_ADDR1CFG_REG0x4325);/*分流电压,持续模式,1.1MS转化一次, 采样 4 次*/
INA226_SendData(INA226_ADDR1CFG_REG0x4f45);//0x43FF 采样4次 0x4dff 采样512次 



INA226_SendData(INA226_ADDR1CAL_REG2050);//配置校准寄存器1024
}


void INA226_SetRegPointer(u8 addru8 reg)
{
I2C_Start();

I2C_WRData(addr);
I2C_WaitACK();

I2C_WRData(reg);
I2C_WaitACK();

I2C_Stop();
}

void INA226_SendData(u8 addru8 regu16 data)
{
u8 temp=0;
I2C_Start();

I2C_WRData(addr);
I2C_WaitACK();

I2C_WRData(reg);
I2C_WaitACK();

temp = (u8)(data>>8);
I2C_WRData(temp);
I2C_WaitACK();

temp = (u8)(data&0x00FF);
I2C_WRData(temp);
I2C_WaitACK();

I2C_Stop();
}

u16 INA226_ReadData(u8 addr)
{
u16 temp=0;
I2C_Start();

I2C_WRData(addr+1);
I2C_WaitACK();

temp = I2C_RDData(1);
temp<<=8;
temp |= I2C_RDData(0);

I2C_Stop();
return temp;
}

u8 INA226_AlertAddr(void)
{
u8 temp;
I2C_Start();

I2C_WRData(INA226_GETALADDR);
I2C_WaitACK();

temp = I2C_RDData(1);

I2C_Stop();
return temp;
}

//1mA/bit
u16 INA226_GetCurrent(u8 addr)
{
u16 temp=0;
short tmps;
INA226_SetRegPointer(addrSV_REG);//分流电压
temp = INA226_ReadData(addr);
if(t

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3912  2018-06-08 15:25  INA226\ina226.c

     文件       1008  2018-06-08 15:25  INA226\ina226.h

     目录          0  2018-06-08 15:25  INA226

----------- ---------  ---------- -----  ----

                 4920                    3


评论

共有 条评论