INA226 电源监控芯片使用总结
INA226是一款支持分流电压、总线电压、电流和功率监测的高侧/低侧直流电源监控芯片,广泛应用于服务器、通信设备及嵌入式系统的电源管理模块。限值 = 10A × 2mΩ / 2.5μV = 0.02V / 0.0000025V = 8000 = 0x1F40。限值 = 120W / 0.0095375 W/bit = 12582 = 0x3126。限值 = 10.5V / 0.00125V = 8
本文档旨在为基于INA226电源监控芯片的系统提供完整的参数监测、寄存器配置与调试指导。INA226是一款支持分流电压、总线电压、电流和功率监测的高侧/低侧直流电源监控芯片,广泛应用于服务器、通信设备及嵌入式系统的电源管理模块。
1 概述
INA226是一款高精度电流、电压和功率监控芯片,支持 I²C或SMBus接口。它能够监测分流电压和总线电压,并通过内部乘法器直接读取电流(A)和功率(W)。主要特点包括:
- 总线电压监测范围:0V ~ 36V
- 高精度:增益误差 ≤ 0.1%,失调电压 ≤ 10μV
- 可编程转换时间、平均次数与校准值
- 16 个可配置 I²C 地址
- 工作电压:2.7V ~ 5.5V
- 工作温度范围:-40°C ~ +125°C
2 引脚说明

|
引脚 |
名称 |
类型 |
描述 |
|
1 |
A1 |
数字输入 |
地址选择引脚 |
|
2 |
A0 |
数字输入 |
地址选择引脚 |
|
3 |
ALERT |
数字输出 |
报警或转换就绪信号(开漏) |
|
4 |
SDA |
数字 I/O |
I²C 数据线 |
|
5 |
SCL |
数字输入 |
I²C 时钟线 |
|
6 |
VS |
电源 |
芯片供电电压(2.7V ~ 5.5V) |
|
7 |
GND |
地 |
参考地 |
|
8 |
VBUS |
模拟输入 |
总线电压输入 |
|
9 |
IN- |
模拟输入 |
分流电阻电源侧 |
|
10 |
IN+ |
模拟输入 |
分流电阻负载侧 |
3 寄存器定义
|
地址 |
寄存器名称 |
类型 |
描述 |
|
00h |
配置寄存器 |
R/W |
控制操作模式、转换时间和平均次数 |
|
01h |
分流电压寄存器 |
R |
存储分流电压测量结果 |
|
02h |
总线电压寄存器 |
R |
存储总线电压测量结果 |
|
03h |
功率寄存器 |
R |
存储计算得到的功率值 |
|
04h |
电流寄存器 |
R |
存储计算得到的电流值 |
|
05h |
校准寄存器 |
R/W |
设置电流和功率测量的满量程和LSB |
|
06h |
屏蔽/使能寄存器 |
R/W |
报警配置和转换就绪标志 |
|
07h |
报警限制寄存器 |
R/W |
存储与所选报警功能比较的阈值 |
|
FEh |
制造商ID寄存器 |
R |
制造商识别号(0x5449) |
|
FFh |
芯片ID寄存器 |
R |
芯片 ID 和版本号(0x2260) |
4 关键寄存器说明
4.1 配置寄存器(00h)

|
位域 |
名称 |
描述 |
|
D15 |
RST |
软件复位,写 1 后自动清零 |
|
D11 ~ D9 |
AVG |
平均次数:1、4、16、64、128、256、512、1024 |
|
D8 ~ D6 |
VBUSCT |
总线电压转换时间:140μs ~ 8.244ms |
|
D5 ~ D3 |
VSHCT |
分流电压转换时间:140μs ~ 8.244ms |
|
D2 ~ D0 |
MODE |
工作模式:连续、触发、掉电 |
MODE定义:

VSHCT定义:

VBUSCT定义:

AVG定义:

4.2 屏蔽/使能寄存器(06h)

|
位域 |
名称 |
描述 |
|
D15 |
SOL |
分流电压超限报警使能 |
|
D14 |
SUL |
分流电压欠限报警使能 |
|
D13 |
BOL |
总线电压超限报警使能 |
|
D12 |
BUL |
总线电压欠限报警使能 |
|
D11 |
POL |
功率超限报警使能 |
|
D10 |
CNVR |
转换就绪报警使能 |
|
D4 |
AFF |
报警功能标志(只读) |
|
D3 |
CVRF |
转换就绪标志(只读) |
|
D2 |
OVF |
数学溢出标志(只读) |
|
D1 |
APOL |
报警引脚极性:0=低有效,1=高有效 |
|
D0 |
LEN |
报警锁存使能:0=透明模式,1=锁存模式 |
5 校准与计算
5.1 校准寄存器(05h)计算
校准值公式如下:
CAL=0.00512Current_LSB×RSHUNT
其中Current_LSB 由最大预期电流决定:
Current_LSB=最大预期电流215
5.2 电流与功率计算
- 电流:通过分流电压和校准寄存器计算
- 功率:通过电流与总线电压计算,功率LSB = 25 × Current_LSB
注意:校准寄存器为易失性存储器,掉电或复位后需重新配置。
6 工作模式与典型流程
6.1 初始化流程
void INA226_Init(uint8_t addr) {
// 1. 配置校准寄存器(必须先配置)
WriteRegister(addr, 0x05, cal_high, cal_low);
// 2. 配置工作模式与转换时间
WriteRegister(addr, 0x00, config_high, config_low);
// 3. 可选:配置报警
WriteRegister(addr, 0x06, mask_high, mask_low);
WriteRegister(addr, 0x07, limit_high, limit_low);
}
6.2 读取数据
void ReadPowerData(uint8_t addr) {
uint16_t bus_voltage = ReadRegister(addr, 0x02);
uint16_t shunt_voltage = ReadRegister(addr, 0x01);
uint16_t power = ReadRegister(addr, 0x03);
uint16_t current = ReadRegister(addr, 0x04);
}
6.3 转换就绪检查
uint8_t status = ReadRegister(addr, 0x06);
if (status & 0x08) {
// 数据已更新
}
7 典型应用配置示例
7.1 整板 12V 输入(I²C 地址 0x40)
- 分流电阻:2mΩ
- 最大电流:12.5A
- 校准值:0x1A37
- 配置寄存器:0x4527(连续模式,平均16次,转换时间1.1ms)
- 报警:过流 10A(0x1F40)
7.2 核心板 4V 供电(I²C 地址 0x41)
- 分流电阻:2mΩ
- 最大电流:8A
- 校准值:0x28F6
- 配置寄存器:0x44DF
- 报警:过流 6.5A(0x1450)
7.3 整板 3.3V 供电(I²C 地址 0x44)
- 分流电阻:10mΩ
- 最大电流:2A
- 校准值:0x20C5
- 配置寄存器:0x4497
- 报警:过流 2A(0x1F40)
校准值的参考值:
|
检测通道 |
I2C地址 |
分流电阻 |
最大电流 |
校准值(Hex) |
|
整板VCC_12V_IN |
0x40 |
2mΩ |
12.5A |
0x1A37 |
|
核心板VCC_4V |
0x41 |
2mΩ |
8A |
0x28F6 |
|
整板VCC_3V3 |
0x44 |
10mΩ |
2A |
0x20C5 |
0x00值的参考值:
|
检测通道 |
RST |
AVG |
VBUSCT |
VSHCT |
MODE |
0x00寄存器值 |
|
整板电压 VCC_12V |
0100 |
16次 |
1.1ms |
1.1ms |
连续测量 (111) |
0100010100100111 |
|
核心板电压 VCC_4V |
0100 |
16次 |
588µs |
588µs |
连续测量 (111) |
0100010011011111 |
|
整板电压 VCC_3V3 |
0100 |
16次 |
332 µs |
332 µs |
连续测量 (111) |
0100010010010111 |
0x06、0x07告警寄存器参考值:
|
检测通道 |
0x06超限报警 |
0x07报警阈值 |
|
整板电压 VCC_12V |
使能分流电压超限报警 (0x8001) |
1、设置10A×2mΩ=20mV报警阈值 2、20mV / 2.5μV/LSB = 8000 (0x1F40) |
|
核心板电压 VCC_4V |
使能分流电压超限报警 (0x8001) |
1、设置8A×2mΩ=16mV报警阈值 2、16mV / 2.5μV/LSB = 6400 (0x1900) |
|
整板电压 VCC_3V3 |
使能分流电压超限报警 (0x8001) |
1、设置2A×10mΩ=20mV报警阈值 2、20mV / 2.5μV/LSB = 8000 (0x1F40) |
8 报警阈值计算
计算原理和公式
A. 分流电压告警限值计算
分流电压(V) = 限值 × 2.5μV
电流(A) = 分流电压(V) / 分流电阻(Ω)
示例(整板10A过流):
限值 = 10A × 2mΩ / 2.5μV = 0.02V / 0.0000025V = 8000 = 0x1F40
B. 总线电压告警限值计算
总线电压(V) = 限值 × 1.25mV
示例(整板10.5V过压):
限值 = 10.5V / 0.00125V = 8400 = 0x20D0
C. 功率告警限值计算
Current_LSB = 0.00512 / (校准值 × 分流电阻)
功率LSB = 25 × Current_LSB
功率(W) = 限值 × 功率LSB
示例(整板120W):
Current_LSB = 0.00512 / (0x1A37 × 0.002) = 0.00512 / 13.422 = 0.0003815 A/bit
功率LSB = 25 × 0.0003815 = 0.0095375 W/bit
限值 = 120W / 0.0095375 W/bit = 12582 = 0x3126
|
监测类型 |
分辨率 |
量程 |
计算公式 |
示例 |
|
分流电压 |
2.5μV/LSB |
±81.92mV |
AL =V_limit / 2.5μV |
20mV→ 8000 (0x1F40) |
|
总线电压 |
1.25mV/LSB |
0~40.96V |
AL =V_limit / 1.25mV |
10.5V→ 8400(0x20D0) |
|
功率 |
25×Current_LSB |
0~102.4W |
AL =P_limit / (25 × LSB) |
120W→ 12582(0x3126) |
9 调试与维护命令示例
以下为调试环境中使用的命令示例:
# 写入校准值
mcpld_cli i2c-wr 0x40 0x05 0x1A37
mcpld_cli i2c-wr 0x41 0x05 0x28F6
mcpld_cli i2c-wr 0x44 0x05 0x20C5
# 写入配置寄存器
mcpld_cli i2c-wr 0x40 0x00 0x4527
mcpld_cli i2c-wr 0x41 0x00 0x44DF
mcpld_cli i2c-wr 0x44 0x00 0x4497
# 读取电压、电流、功率
mcpld_cli i2c-rd 0x40 0x01 # 分流电压
mcpld_cli i2c-rd 0x40 0x02 # 总线电压
mcpld_cli i2c-rd 0x40 0x03 # 功率
mcpld_cli i2c-rd 0x40 0x04 # 电流
10 注意事项
- 所有寄存器均为易失性,上电后需重新初始化
- 校准寄存器仅需配置一次,除非系统复位或测量参数变化
- 使用 Kelvin 连接方式接入分流电阻,避免引入额外误差
- ALERT 引脚为开漏输出,需外接上拉电阻
- 输入电压不得超过36V,否则可能损坏芯片
更多推荐



所有评论(0)