INA226 数据手册解读
INA226是一款数字电流检测放大器,配备I2C和SMBus兼容接口。该器件可提供数字电流、电压以及功率读数,可灵活配置测量分辨率,并具备连续运行与触发操作模式。
该芯片通常由一个单独的电源供电,电压范围为 2.7V 至 5.5V
引脚说明
引脚名称 | 功能描述 |
---|---|
A0、A1 | 地址引脚。需连接至GND、SCL、SDA或VS引脚,用于设置I²C从机地址 |
Alert | 多功能开漏输出警报引脚。可配置为过压/欠压警报、转换就绪标志等(详见Mask/Enable寄存器)。 |
SDA | I2C/SMBus数据线,开漏输入/输出。 |
SCL | I2C/SMBus时钟线,开漏输入。 |
VS | 电源输入(2.7V至5.5V)。 |
GND | 接地引脚。 |
VBUS | 总线电压检测输入(0V至36V),负载供电电压(相对于GND)。 |
IN- | 分流电阻负输入端,连接至负载侧(低侧检测)或电源负极(高侧检测)。 |
IN+ | 分流电阻正输入端,连接至电源侧(低侧检测)或电源正极(高侧检测)。 |
I2C
地址
由A0、A1引脚连接决定
寄存器
INA226寄存器系统概览
这些寄存器都是16位的
寄存器名称 | 地址 | 访问 | 主要功能 | 复位值 |
---|---|---|---|---|
配置寄存器 | 00h | R/W | 配置ADC模式/转换时间/平均值 | 4127h |
测量寄存器 | 01h | R | 存储分流电压测量值(±81.92mV) | 0000h |
总线电压寄存器 | 02h | R | 存储总线电压测量值(0-40.96V) | 0000h |
功率寄存器 | 03h | R | 计算功率值(瓦特) | 0000h |
电流寄存器 | 04h | R | 计算电流值(安培) | 0000h |
校准寄存器 | 05h | R/W | 设置电流/功率计算比例因子 | 0000h |
屏蔽/使能寄存器 | 06h | R/W | 配置警报功能/状态标志 | 0000h |
报警限值寄存器 | 07h | R/W | 设置警报触发阈值 | 0000h |
制造商ID寄存器 | FEh | R | 固定值5449h(TI标识) | 5449h |
芯片ID寄存器 | FFh | R | 固定值2260h(芯片标识) | 2260h |
数据存储寄存器(功率寄存器、电流寄存器等)采用二进制补码,实际值计算公式为:
芯片上电后约1ms完成复位,各寄存器为默认值,需对校准寄存器进行配置
关键寄存器详解
配置寄存器(00h)
位 | 名称 | 功能 | 取值说明 |
---|---|---|---|
D15 | RST | 复位芯片(自清零) | 1=复位所有寄存器 |
D14-D12 | 无效位 | 固定为0 | |
D11-D9 | AVG[2:0] | 采样平均次数 | 默认值为 000(1次),详情见数据手册表6 |
D8-D6 | VBUSCT | 总线电压转换时间 | 默认值为100(1.1ms),详情见数据手册表7 |
D5-D3 | VSHCT | 分流电压转换时间 | 默认值为100(1.1ms),详情见数据手册表8 |
D2-D0 | MODE | 工作模式 | 共有三种模式:连续模式、触发模式、电源关闭模式,默认值为111,连续测量分流和总线,详情见数据手册表9 |
- 连续模式:测量计算流程重复执行,直到达到AVG设置的采样平均次数,进行平均运算电流、功率等数值更新到对应数据寄存器中。读取数据寄存器不会影响正在进行的转换。
- 触发模式:将任意一种触发转换模式写入配置寄存器,则会触发单次转换,该操作仅产生一组测量数据,若要再次触发转换,则需将配置寄存器重置为初始状态。
- 电源关闭模式:该模式可减少静态电流并关闭进入设备输入的电流,可以对设备寄存器进行写入和读取。从电源关闭模式完全恢复需要40微秒。
写配置寄存器(00h)会中断正在进行的转换,建议在空闲状态修改配置。
校准寄存器(05h)
Current_LSB:最大预期电流/32768,R_SHUNT:分流电阻值
例如需要监测20A的电流,使用5mΩ的分流电阻,那么
增大CAL值可提高电流分辨率,但会降低最大可测电流。数据手册中给出了CAL的典型值。
屏蔽/使能寄存器(06h)
位 | 名称 | 功能 | 描述 |
---|---|---|---|
D15 | SOL | 分流过压警报 | 高电平有效,当转换后的分流电压高于设定值时激活警报引脚 |
D14 | SUL | 分流欠压警报 | 高电平有效,当转换后的分流电压低于设定值时激活警报引脚 |
D13 | BOL | 总线过压警报 | 高电平有效,当转换后的总线电压高于设定值时激活警报引脚 |
D12 | BUL | 总线欠压警报 | 高电平有效,当转换后的总线电压低于设定值时激活警报引脚 |
D10 | CNVR | 转换就绪标志 | 完成新数据转换时置位 |
D9-D5 | ZERO | 无效位 | 固定为0 |
D4 | AFF | 警报功能标志(只读) | 当前存在有效警报 |
D3 | CVRF | 转换就绪标志 | 数据寄存器已更新 |
D2 | OVF | 数学溢出标志 | 如果算术运算导致溢出错误,则该位被设置为1,表示电流和功率数据可能无效。 |
D1 | APOL | 警报极性控制 | 0=低电平有效(默认),1=高电平有效 |
D0 | LEN | 警报锁存使能 | 0=透明模式(自动清除),1=锁存模式 |
五个功能每次只能启用一个。若启用多个,则最高有效位所选的功能将优先被响应。
当其超过警报限值寄存器的值时,警报引脚将被激活。通过读取掩码。通过读取屏蔽/使能寄存器中的CVRF和AFF位可以判断警报来源。
不使用警报功能,警报引脚可以保持悬空状态。
报警限值寄存器
实际阈值 = 寄存器值 * 对应LSB
LSB代表寄存器变化1位对应的实际物理量变化量。
分流电压 LSB:2.5μV(81.92 mV/32767)
测量范围:±81.92mV
总线电压 LSB:1.25mV(40.96 V/32767)
测量范围:0~36V(虽然寄存器满量程对应40.96V,但输入电压不得超过36V)
电流 LSB:由校准寄存器决定
功率 LSB:电流LSB * 25
向寄存器写入数据时,首先由主机发送从机地址,从机确认收到有效地址后,主机发送目标寄存器的地址。然后,主机发送要写入寄存器的两个字节,先写入高八位,再写入低八位。
从寄存器读取数据的流程同写入数据相似。
这里可以用 HAL_I2C_Mem 系列的函数。