INA226是一款數字電流檢測放大器,配備I2C和SMBus兼容接口。該器件可提供數字電流、電壓以及功率讀數,可靈活配置測量分辨率,并具備連續運行與觸發操作模式。
該芯片通常由一個單獨的電源供電,電壓范圍為 2.7V 至 5.5V
引腳說明
??引腳名稱?? | ??功能描述?? |
---|---|
A0、A1 | 地址引腳。需連接至GND、SCL、SDA或VS引腳,用于設置I2C從機地址 |
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 系列的函數。