本文档旨在为基于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

平均次数:1416641282565121024

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
010

1.1ms
100

1.1ms
100

连续测量

111

0100010100100111
0x4527

核心板电压

VCC_4V

0100

16
010

588µs
011

588µs
011

连续测量

111

0100010011011111
0x44DF

整板电压

VCC_3V3

0100

16
010

332 µs
010

332 µs
010

连续测量

111

0100010010010111
0x4497

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

040.96V

AL =V_limit / 1.25mV

10.5V→ 84000x20D0

功率

25×Current_LSB

0102.4W

AL =P_limit / (25 × LSB)

120W→ 125820x3126

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,否则可能损坏芯片
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐