1- ##### Lipo Battery Capacity
2- LIPO_BATTERY_CAPACITY = 650 # 850 mAh
3- #####
1+ # Lipo Battery Capacity
2+ LIPO_BATTERY_CAPACITY = 650 # 850 mAh
3+
44
55BQ27441_I2C_ADDRESS = 0x55 # Default I2C address of the BQ27441-G1A
66
7- ###########/
87# General Constants #
9- ###########/
10- BQ27441_UNSEAL_KEY = 0x8000 # Secret code to unseal the BQ27441-G1A
11- BQ27441_DEVICE_ID = 0x0421 # Default device ID
8+ BQ27441_UNSEAL_KEY = 0x8000 # Secret code to unseal the BQ27441-G1A
9+ BQ27441_DEVICE_ID = 0x0421 # Default device ID
1210
13- ###########/
1411# Standard Commands #
15- ###########/
12+
1613# The fuel gauge uses a series of 2-byte standard commands to enable system
1714# reading and writing of battery information. Each command has an associated
1815# sequential command-code pair.
19- BQ27441_COMMAND_CONTROL = 0x00 # Control()
20- BQ27441_COMMAND_TEMP = 0x02 # Temperature ()
21- BQ27441_COMMAND_VOLTAGE = 0x04 # Voltage ()
22- BQ27441_COMMAND_FLAGS = 0x06 # Flags ()
23- BQ27441_COMMAND_NOM_CAPACITY = 0x08 # NominalAvailableCapacity ()
24- BQ27441_COMMAND_AVAIL_CAPACITY = 0x0A # FullAvailableCapacity ()
25- BQ27441_COMMAND_REM_CAPACITY = 0x0C # RemainingCapacity ()
26- BQ27441_COMMAND_FULL_CAPACITY = 0x0E # FullChargeCapacity ()
27- BQ27441_COMMAND_AVG_CURRENT = 0x10 # AverageCurrent ()
28- BQ27441_COMMAND_STDBY_CURRENT = 0x12 # StandbyCurrent ()
29- BQ27441_COMMAND_MAX_CURRENT = 0x14 # MaxLoadCurrent ()
30- BQ27441_COMMAND_AVG_POWER = 0x18 # AveragePower ()
31- BQ27441_COMMAND_SOC = 0x1C # StateOfCharge ()
32- BQ27441_COMMAND_INT_TEMP = 0x1E # InternalTemperature ()
33- BQ27441_COMMAND_SOH = 0x20 # StateOfHealth ()
34- BQ27441_COMMAND_REM_CAP_UNFL = 0x28 # RemainingCapacityUnfiltered ()
35- BQ27441_COMMAND_REM_CAP_FIL = 0x2A # RemainingCapacityFiltered ()
36- BQ27441_COMMAND_FULL_CAP_UNFL = 0x2C # FullChargeCapacityUnfiltered ()
37- BQ27441_COMMAND_FULL_CAP_FIL = 0x2E # FullChargeCapacityFiltered ()
38- BQ27441_COMMAND_SOC_UNFL = 0x30 # StateOfChargeUnfiltered ()
39-
40- #############
16+
17+ BQ27441_COMMAND_CONTROL = 0x00 # Control ()
18+ BQ27441_COMMAND_TEMP = 0x02 # Temperature ()
19+ BQ27441_COMMAND_VOLTAGE = 0x04 # Voltage ()
20+ BQ27441_COMMAND_FLAGS = 0x06 # Flags ()
21+ BQ27441_COMMAND_NOM_CAPACITY = 0x08 # NominalAvailableCapacity ()
22+ BQ27441_COMMAND_AVAIL_CAPACITY = 0x0A # FullAvailableCapacity ()
23+ BQ27441_COMMAND_REM_CAPACITY = 0x0C # RemainingCapacity ()
24+ BQ27441_COMMAND_FULL_CAPACITY = 0x0E # FullChargeCapacity ()
25+ BQ27441_COMMAND_AVG_CURRENT = 0x10 # AverageCurrent ()
26+ BQ27441_COMMAND_STDBY_CURRENT = 0x12 # StandbyCurrent ()
27+ BQ27441_COMMAND_MAX_CURRENT = 0x14 # MaxLoadCurrent ()
28+ BQ27441_COMMAND_AVG_POWER = 0x18 # AveragePower ()
29+ BQ27441_COMMAND_SOC = 0x1C # StateOfCharge ()
30+ BQ27441_COMMAND_INT_TEMP = 0x1E # InternalTemperature ()
31+ BQ27441_COMMAND_SOH = 0x20 # StateOfHealth ()
32+ BQ27441_COMMAND_REM_CAP_UNFL = 0x28 # RemainingCapacityUnfiltered ()
33+ BQ27441_COMMAND_REM_CAP_FIL = 0x2A # RemainingCapacityFiltered ()
34+ BQ27441_COMMAND_FULL_CAP_UNFL = 0x2C # FullChargeCapacityUnfiltered ()
35+ BQ27441_COMMAND_FULL_CAP_FIL = 0x2E # FullChargeCapacityFiltered ()
36+ BQ27441_COMMAND_SOC_UNFL = 0x30 # StateOfChargeUnfiltered()
37+
4138# Control Sub-commands #
42- #############
39+
4340# Issuing a Control() command requires a subsequent 2-byte subcommand. These
4441# additional bytes specify the particular control function desired. The
4542# Control() command allows the system to control specific features of the fuel
4643# gauge during normal operation and additional features when the device is in
4744# different access modes.
48- BQ27441_CONTROL_STATUS = 0x00
49- BQ27441_CONTROL_DEVICE_TYPE = 0x01
50- BQ27441_CONTROL_FW_VERSION = 0x02
51- BQ27441_CONTROL_DM_CODE = 0x04
52- BQ27441_CONTROL_PREV_MACWRITE = 0x07
53- BQ27441_CONTROL_CHEM_ID = 0x08
54- BQ27441_CONTROL_BAT_INSERT = 0x0C
55- BQ27441_CONTROL_BAT_REMOVE = 0x0D
56- BQ27441_CONTROL_SET_HIBERNATE = 0x11
57- BQ27441_CONTROL_CLEAR_HIBERNATE = 0x12
58- BQ27441_CONTROL_SET_CFGUPDATE = 0x13
59- BQ27441_CONTROL_SHUTDOWN_ENABLE = 0x1B
60- BQ27441_CONTROL_SHUTDOWN = 0x1C
61- BQ27441_CONTROL_SEALED = 0x20
62- BQ27441_CONTROL_PULSE_SOC_INT = 0x23
63- BQ27441_CONTROL_RESET = 0x41
64- BQ27441_CONTROL_SOFT_RESET = 0x42
65- BQ27441_CONTROL_EXIT_CFGUPDATE = 0x43
66- BQ27441_CONTROL_EXIT_RESIM = 0x44
67-
68- #####################/
45+
46+ BQ27441_CONTROL_STATUS = 0x00
47+ BQ27441_CONTROL_DEVICE_TYPE = 0x01
48+ BQ27441_CONTROL_FW_VERSION = 0x02
49+ BQ27441_CONTROL_DM_CODE = 0x04
50+ BQ27441_CONTROL_PREV_MACWRITE = 0x07
51+ BQ27441_CONTROL_CHEM_ID = 0x08
52+ BQ27441_CONTROL_BAT_INSERT = 0x0C
53+ BQ27441_CONTROL_BAT_REMOVE = 0x0D
54+ BQ27441_CONTROL_SET_HIBERNATE = 0x11
55+ BQ27441_CONTROL_CLEAR_HIBERNATE = 0x12
56+ BQ27441_CONTROL_SET_CFGUPDATE = 0x13
57+ BQ27441_CONTROL_SHUTDOWN_ENABLE = 0x1B
58+ BQ27441_CONTROL_SHUTDOWN = 0x1C
59+ BQ27441_CONTROL_SEALED = 0x20
60+ BQ27441_CONTROL_PULSE_SOC_INT = 0x23
61+ BQ27441_CONTROL_RESET = 0x41
62+ BQ27441_CONTROL_SOFT_RESET = 0x42
63+ BQ27441_CONTROL_EXIT_CFGUPDATE = 0x43
64+ BQ27441_CONTROL_EXIT_RESIM = 0x44
65+
6966# Control Status Word - Bit Definitions #
70- #####################/
67+
7168# Bit positions for the 16-bit data of CONTROL_STATUS.
7269# CONTROL_STATUS instructs the fuel gauge to return status information to
7370# Control() addresses 0x00 and 0x01. The read-only status word contains status
7471# bits that are set or cleared either automatically as conditions warrant or
7572# through using specified subcommands.
76- BQ27441_STATUS_SHUTDOWNEN = ( 1 << 15 )
77- BQ27441_STATUS_WDRESET = ( 1 << 14 )
78- BQ27441_STATUS_SS = ( 1 << 13 )
79- BQ27441_STATUS_CALMODE = ( 1 << 12 )
80- BQ27441_STATUS_CCA = ( 1 << 11 )
81- BQ27441_STATUS_BCA = ( 1 << 10 )
82- BQ27441_STATUS_QMAX_UP = ( 1 << 9 )
83- BQ27441_STATUS_RES_UP = ( 1 << 8 )
84- BQ27441_STATUS_INITCOMP = ( 1 << 7 )
85- BQ27441_STATUS_HIBERNATE = ( 1 << 6 )
86- BQ27441_STATUS_SLEEP = ( 1 << 4 )
87- BQ27441_STATUS_LDMD = ( 1 << 3 )
88- BQ27441_STATUS_RUP_DIS = ( 1 << 2 )
89- BQ27441_STATUS_VOK = ( 1 << 1 )
90-
91- ##################
73+ BQ27441_STATUS_SHUTDOWNEN = 1 << 15
74+ BQ27441_STATUS_WDRESET = 1 << 14
75+ BQ27441_STATUS_SS = 1 << 13
76+ BQ27441_STATUS_CALMODE = 1 << 12
77+ BQ27441_STATUS_CCA = 1 << 11
78+ BQ27441_STATUS_BCA = 1 << 10
79+ BQ27441_STATUS_QMAX_UP = 1 << 9
80+ BQ27441_STATUS_RES_UP = 1 << 8
81+ BQ27441_STATUS_INITCOMP = 1 << 7
82+ BQ27441_STATUS_HIBERNATE = 1 << 6
83+ BQ27441_STATUS_SLEEP = 1 << 4
84+ BQ27441_STATUS_LDMD = 1 << 3
85+ BQ27441_STATUS_RUP_DIS = 1 << 2
86+ BQ27441_STATUS_VOK = 1 << 1
87+
88+
9289# Flag Command - Bit Definitions #
93- ##################
90+
9491# Bit positions for the 16-bit data of Flags()
9592# This read-word function returns the contents of the fuel gauging status
9693# register, depicting the current operating status.
97- BQ27441_FLAG_OT = ( 1 << 15 )
98- BQ27441_FLAG_UT = ( 1 << 14 )
99- BQ27441_FLAG_FC = ( 1 << 9 )
100- BQ27441_FLAG_CHG = ( 1 << 8 )
101- BQ27441_FLAG_OCVTAKEN = ( 1 << 7 )
102- BQ27441_FLAG_ITPOR = ( 1 << 5 )
103- BQ27441_FLAG_CFGUPMODE = ( 1 << 4 )
104- BQ27441_FLAG_BAT_DET = ( 1 << 3 )
105- BQ27441_FLAG_SOC1 = ( 1 << 2 )
106- BQ27441_FLAG_SOCF = ( 1 << 1 )
107- BQ27441_FLAG_DSG = ( 1 << 0 )
108-
109- ##############
94+ BQ27441_FLAG_OT = 1 << 15
95+ BQ27441_FLAG_UT = 1 << 14
96+ BQ27441_FLAG_FC = 1 << 9
97+ BQ27441_FLAG_CHG = 1 << 8
98+ BQ27441_FLAG_OCVTAKEN = 1 << 7
99+ BQ27441_FLAG_ITPOR = 1 << 5
100+ BQ27441_FLAG_CFGUPMODE = 1 << 4
101+ BQ27441_FLAG_BAT_DET = 1 << 3
102+ BQ27441_FLAG_SOC1 = 1 << 2
103+ BQ27441_FLAG_SOCF = 1 << 1
104+ BQ27441_FLAG_DSG = 1 << 0
105+
106+
110107# Extended Data Commands #
111- ##############
108+
112109# Extended data commands offer additional functionality beyond the standard
113110# set of commands. They are used in the same manner; however, unlike standard
114111# commands, extended commands are not limited to 2-byte words.
115- BQ27441_EXTENDED_OPCONFIG = 0x3A # OpConfig()
116- BQ27441_EXTENDED_CAPACITY = 0x3C # DesignCapacity()
117- BQ27441_EXTENDED_DATACLASS = 0x3E # DataClass()
118- BQ27441_EXTENDED_DATABLOCK = 0x3F # DataBlock()
119- BQ27441_EXTENDED_BLOCKDATA = 0x40 # BlockData()
120- BQ27441_EXTENDED_CHECKSUM = 0x60 # BlockDataCheckSum()
121- BQ27441_EXTENDED_CONTROL = 0x61 # BlockDataControl()
122-
123- ####################
112+ BQ27441_EXTENDED_OPCONFIG = 0x3A # OpConfig()
113+ BQ27441_EXTENDED_CAPACITY = 0x3C # DesignCapacity()
114+ BQ27441_EXTENDED_DATACLASS = 0x3E # DataClass()
115+ BQ27441_EXTENDED_DATABLOCK = 0x3F # DataBlock()
116+ BQ27441_EXTENDED_BLOCKDATA = 0x40 # BlockData()
117+ BQ27441_EXTENDED_CHECKSUM = 0x60 # BlockDataCheckSum()
118+ BQ27441_EXTENDED_CONTROL = 0x61 # BlockDataControl()
119+
120+
124121# Configuration Class, Subclass ID's #
125- ####################
122+
126123# To access a subclass of the extended data, set the DataClass() function
127124# with one of these values.
128125# Configuration Classes
129- BQ27441_ID_SAFETY = 2 # Safety
130- BQ27441_ID_CHG_TERMINATION = 36 # Charge Termination
131- BQ27441_ID_CONFIG_DATA = 48 # Data
132- BQ27441_ID_DISCHARGE = 49 # Discharge
133- BQ27441_ID_REGISTERS = 64 # Registers
134- BQ27441_ID_POWER = 68 # Power
126+ BQ27441_ID_SAFETY = 2 # Safety
127+ BQ27441_ID_CHG_TERMINATION = 36 # Charge Termination
128+ BQ27441_ID_CONFIG_DATA = 48 # Data
129+ BQ27441_ID_DISCHARGE = 49 # Discharge
130+ BQ27441_ID_REGISTERS = 64 # Registers
131+ BQ27441_ID_POWER = 68 # Power
135132# Gas Gauging Classes
136- BQ27441_ID_IT_CFG = 80 # IT Cfg
137- BQ27441_ID_CURRENT_THRESH = 81 # Current Thresholds
138- BQ27441_ID_STATE = 82 # State
133+ BQ27441_ID_IT_CFG = 80 # IT Cfg
134+ BQ27441_ID_CURRENT_THRESH = 81 # Current Thresholds
135+ BQ27441_ID_STATE = 82 # State
139136# Ra Tables Classes
140- BQ27441_ID_R_A_RAM = 89 # R_a RAM
137+ BQ27441_ID_R_A_RAM = 89 # R_a RAM
141138# Calibration Classes
142- BQ27441_ID_CALIB_DATA = 104 # Data
143- BQ27441_ID_CC_CAL = 105 # CC Cal
144- BQ27441_ID_CURRENT = 107 # Current
139+ BQ27441_ID_CALIB_DATA = 104 # Data
140+ BQ27441_ID_CC_CAL = 105 # CC Cal
141+ BQ27441_ID_CURRENT = 107 # Current
145142# Security Classes
146- BQ27441_ID_CODES = 112 # Codes
143+ BQ27441_ID_CODES = 112 # Codes
144+
147145
148- ####################/
149146# OpConfig Register - Bit Definitions #
150- ####################/
147+
151148# Bit positions of the OpConfig Register
152- BQ27441_OPCONFIG_BIE = ( 1 << 13 )
153- BQ27441_OPCONFIG_BI_PU_EN = ( 1 << 12 )
154- BQ27441_OPCONFIG_GPIOPOL = ( 1 << 11 )
155- BQ27441_OPCONFIG_SLEEP = ( 1 << 5 )
156- BQ27441_OPCONFIG_RMFCC = ( 1 << 4 )
157- BQ27441_OPCONFIG_BATLOWEN = ( 1 << 2 )
158- BQ27441_OPCONFIG_TEMPS = ( 1 << 0 )
159-
160- BQ27441_I2C_TIMEOUT = 2000 # ms
149+ BQ27441_OPCONFIG_BIE = 1 << 13
150+ BQ27441_OPCONFIG_BI_PU_EN = 1 << 12
151+ BQ27441_OPCONFIG_GPIOPOL = 1 << 11
152+ BQ27441_OPCONFIG_SLEEP = 1 << 5
153+ BQ27441_OPCONFIG_RMFCC = 1 << 4
154+ BQ27441_OPCONFIG_BATLOWEN = 1 << 2
155+ BQ27441_OPCONFIG_TEMPS = 1 << 0
156+
157+ BQ27441_I2C_TIMEOUT = 2000 # ms
0 commit comments