-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMAX77650-Arduino-Library.h
More file actions
402 lines (336 loc) · 25.1 KB
/
Copy pathMAX77650-Arduino-Library.h
File metadata and controls
402 lines (336 loc) · 25.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
/**********************************************************************
* Copyright (C) 2018 Maxim Integrated Products, Inc., All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Except as contained in this notice, the name of Maxim Integrated
* Products, Inc. shall not be used except as stated in the Maxim Integrated
* Products, Inc. Branding Policy.
*
* The mere transfer of this software does not imply any licenses
* of trade secrets, proprietary technology, copyrights, patents,
* trademarks, maskwork rights, or any other form of intellectual
* property whatsoever. Maxim Integrated Products, Inc. retains all
* ownership rights.
*
* Authors:
* Ole Dreessen; ole.dreessen@maximintegrated.com
*
* Revisions:
* 0.1.0 21.11.2017 initial code
* 0.2.0 27.11.2017 added functions
* 0.3.0 07.03.2018 bugfixes
* 0.4.0 14.03.2018 bugfixes: Interrupt registers are RC (read-clear) and cannot be read bit-by-bit; this is valid for register 0x00, 0x01 and 0x04; corrected wrong register-address in function read CID; cleaned init-function (deleted baseline-init - see examples)
* 1.0.0 14.03.2018 code-review and finished work
* 1.0.1 22.03.2018 bugfix: fixed address of register in function MAX77650_getCID; added two more examples
* 1.0.2 23.09.2018 changed wire-calls to preprocessor directives;
*
**********************************************************************/
#ifndef MAX77650_H
#define MAX77650_H
#include "Arduino.h"
#include <Wire.h>
/**********************************************************************
*@brief MAX77650 - The MAX77650/MAX77651 provide highly-integrated battery charging and
*power supply solutions for low-power wearable applications where size and efficiency
*are critical. Both devices feature a SIMO buck-boost regulator that provides three
*independently programmable power rails from a single inductor to minimize total solution
*size. A 150mA LDO provides ripple rejection for audio and other noise-sensitive applications.
*A highly configurable linear charger supports a wide range of Li+ battery capacities and
*includes battery temperature monitoring for additional safety (JEITA).
*
*The devices include other features such as current sinks for driving LED indicators and
*an analog multiplexer that switches several internal voltage and current signals to an
*external node for monitoring with an external ADC. A bidirectional I2C interface allows
*for configuring and checking the status of the devices. An internal on/off controller
*provides a controlled startup sequence for the regulators and provides supervisory
*functionality when the devices are on. Numerous factory programmable options allow the
*device to be tailored for many applications, enabling faster time to market.
*
*Ressources can be found at
*https://www.maximintegrated.com/en/products/power/battery-management/MAX77650.html
*https://www.maximintegrated.com/en/app-notes/index.mvp/id/6428
**********************************************************************/
// Project specific definitions *** adapt to your requirements! ***
#define PMIC_partnumber 0x00 //placed PMIC part-numer on the board: MAX77650 or MAX77651
#define MAX77650_CID 0x78 //OTP option
#define MAX77650_ADDR 0x48 //alternate ADDR is 0x40
#ifndef MAX77650_debug
#define MAX77650_debug false
#endif
#ifndef MAX77650_I2C_port
#define MAX77650_I2C_port 2 //I2C port of the host µC
#endif
//***** Begin MAX77650 Register Definitions *****
#define MAX77650_CNFG_GLBL_ADDR 0x10 //Global Configuration Register; Reset Value OTP
#define MAX77650_INT_GLBL_ADDR 0x00 //Interrupt; Reset Value 0x00
#define MAX77650_INTM_GLBL_ADDR 0x06 //Interrupt Mask; Reset Value 0xFF
#define MAX77650_STAT_GLBL_ADDR 0x05 //Global Status Register; Reset Value OTP
#define MAX77650_ERCFLAG_ADDR 0x04 //Flags; Reset Value 0x00
#define MAX77650_CNFG_GPIO_ADDR 0x12 //GPIO Configuration Register; Reset Value 0x01
#define MAX77650_CID_ADDR 0x11 //Chip ID Register; Reset Value OTP; Read only
#define MAX77650_INT_CHG_ADDR 0x01 //Charger Interrupt Register; Reset Value 0x00; RC
#define MAX77650_INT_M_CHG_ADDR 0x07 //Charger Interrupt Mask Register; Reset Value 0xFF; Read/Write
#define MAX77650_STAT_CHG_A_ADDR 0x02 //Charger Status Register A; Reset Value 0x00; Read only
#define MAX77650_STAT_CHG_B_ADDR 0x03 //Charger Status Register B; Reset Value 0x00; Read only
#define MAX77650_CNFG_CHG_A_ADDR 0x018 //Charger Configuration Register A; Reset Value 0x0F; Read/Write
#define MAX77650_CNFG_CHG_B_ADDR 0x019 //Charger Configuration Register B; Reset Value OTP; Read/Write
#define MAX77650_CNFG_CHG_C_ADDR 0x01A //Charger Configuration Register C; Reset Value 0xF8; Read/Write
#define MAX77650_CNFG_CHG_D_ADDR 0x01B //Charger Configuration Register D; Reset Value 0x10; Read/Write
#define MAX77650_CNFG_CHG_E_ADDR 0x01C //Charger Configuration Register E; Reset Value 0x05; Read/Write
#define MAX77650_CNFG_CHG_F_ADDR 0x01D //Charger Configuration Register F; Reset Value 0x04; Read/Write
#define MAX77650_CNFG_CHG_G_ADDR 0x01E //Charger Configuration Register G; Reset Value 0x00; Read/Write
#define MAX77650_CNFG_CHG_H_ADDR 0x01F //Charger Configuration Register H; Reset Value 0x00; Read/Write
#define MAX77650_CNFG_CHG_I_ADDR 0x020 //Charger Configuration Register I; Reset Value 0xF0; Read/Write
#define MAX77650_CNFG_LDO_A_ADDR 0x38 //LDO Configuration Register A; Reset Value OTP; Read/Write
#define MAX77650_CNFG_LDO_B_ADDR 0x39 //LDO Configuration Register B; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB_TOP_ADDR 0x28 //SIMO Buck-Boost Configuration Register; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB0_A_ADDR 0x29 //SIMO Buck-Boost 0 Configuration Register A; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB0_B_ADDR 0x2A //SIMO Buck-Boost 0 Configuration Register B; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB1_A_ADDR 0x2B //SIMO Buck-Boost 1 Configuration Register A; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB1_B_ADDR 0x2C //SIMO Buck-Boost 1 Configuration Register B; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB2_A_ADDR 0x2D //SIMO Buck-Boost 2 Configuration Register A; Reset Value OTP; Read/Write
#define MAX77650_CNFG_SBB2_B_ADDR 0x2E //SIMO Buck-Boost 2 Configuration Register B; Reset Value OTP; Read/Write
#define MAX77650_CNFG_LED0_A_ADDR 0x40 //LED 0 Configuration Register A; Reset Value 0x04; Read/Write
#define MAX77650_CNFG_LED0_B_ADDR 0x43 //LED 0 Configuration Register B; Reset Value 0x0F; Read/Write
#define MAX77650_CNFG_LED1_A_ADDR 0x41 //LED 1 Configuration Register A; Reset Value 0x04; Read/Write
#define MAX77650_CNFG_LED1_B_ADDR 0x44 //LED 1 Configuration Register B; Reset Value 0x0F; Read/Write
#define MAX77650_CNFG_LED2_A_ADDR 0x42 //LED 2 Configuration Register A; Reset Value 0x04; Read/Write
#define MAX77650_CNFG_LED2_B_ADDR 0x45 //LED 2 Configuration Register A; Reset Value 0x0F; Read/Write
#define MAX77650_CNFG_LED_TOP_ADDR 0x46 //LED Configuration Register; Reset Value 0x0D; Read/Write
//***** End MAX77650 Register Definitions *****
boolean MAX77650_init(void);
int MAX77650_read_register(int);
byte MAX77650_write_register(int, int);
//Status Register (STAT_GLBL) related reads
boolean MAX77650_getDIDM(void); //Returns Part Number; Return Value: 1=MAX77650; 2=MAX77651; -1=error reading DeviceID
boolean MAX77650_getLDO_DropoutDetector(void); //Returns whether the LDO is in Dropout or not; Return Value: 0=LDO is not in dropout; 1=LDO is in dropout
boolean MAX77650_getThermalAlarm1(void); //Returns Thermal Alarm (TJA1 limit); Return Value: 0=Tj<TJA1; 1=Tj>TJA1
boolean MAX77650_getThermalAlarm2(void); //Returns Therma2 Alarm (TJA2 limit); Return Value: 0=Tj<TJA2; 1=Tj>TJA2
boolean MAX77650_getDebounceStatusnEN0(void); //Returns Debounced Status of nEN input; Return Value: 0=nEN0 is not active; 1=nEN0 is active
boolean MAX77650_getDebounceStatusPWR_HLD(void); //Returns Debounced Status of PWR_HLD input; Return Value: 0=logic low; 1=logic high
//Flag Register (ERCFLAG) related reads
byte MAX77650_getERCFLAG(void); //Returns the ERCFLAG Register 0x04
//Register reads related to ChipID
byte MAX77650_getChipID(void); // Return Value: 1=MAX77650; 2=MAX77651; -1=error reading ChipID
//CID Register
byte MAX77650_getCID(void); // Returns the OTP programmed Chip Identification Code
//Charger Status Register (STAT_CHG_A and B) related reads
boolean MAX77650_getVCHGIN_MIN_STAT(void); //Returns Minimum Input Voltage Regulation Loop Status; Return Value: 0=no event; 1=The minimum CHGIN voltage regulation loop has engaged to regulate VCHGIN >= VCHGIN-MIN
boolean MAX77650_getICHGIN_LIM_STAT(void); //Returns Input Current Limit Loop Status; Return Value: 0=no event; 1=The CHGIN current limit loop has engaged to regulate ICHGIN <= ICHGIN-LIM
boolean MAX77650_getVSYS_MIN_STAT(void); //Returns Minimum System Voltage Regulation Loop Status; Return Value: 0=no event; 1=The minimum system voltage regulation loop is engaged to regulate VSYS >= VSYS-MIN
boolean MAX77650_getTJ_REG_STAT(void); //Returns Maximum Junction Temperature Regulation Loop Status; Return Value: 0=no event; 1=The maximum junction temperature regulation loop has engaged to regulate the junction temperature less than TJ-REG
byte MAX77650_getTHM_DTLS(void); //Returns Battery Temperature Details; Return Value: Battery Temperature Details
byte MAX77650_getCHG_DTLS(void); //Returns Charger Details
byte MAX77650_getCHGIN_DTLS(void); //Returns Charger Input Status Details
boolean MAX77650_getCHG(void); //Returns Quick Charger Status
boolean MAX77650_getTIME_SUS(void); //Returns Time Suspend Indicator
//LED related registers
boolean MAX77650_getCLK_64_S(void); //Returns 64Hz Clock Status
boolean MAX77650_getEN_LED_MSTR(void); //Returns Master LED Enable Bit
byte MAX77650_getLED_FS0(void); //Returns LED0 Full Scale Range
boolean MAX77650_getINV_LED0(void); //Returns LED0 Invert
byte MAX77650_getBRT_LED0(void); //Returns LED0 Brightness Control
byte MAX77650_getP_LED0(void); //Returns LED0 Period Settings
byte MAX77650_getD_LED0(void); //Returns LED0 On Duty-Cycle Settings
byte MAX77650_getLED_FS1(void); //Returns LED1 Full Scale Range
boolean MAX77650_getINV_LED1(void); //Returns LED1 Invert
byte MAX77650_getBRT_LED1(void); //Returns LED1 Brightness Control
byte MAX77650_getP_LED1(void); //Returns LED1 Period Settings
byte MAX77650_getD_LED1(void); //Returns LED1 On Duty-Cycle Settings
byte MAX77650_getLED_FS2(void); //Returns LED2 Full Scale Range
boolean MAX77650_getINV_LED2(void); //Returns LED2 Invert
byte MAX77650_getBRT_LED2(void); //Returns LED2 Brightness Control
byte MAX77650_getP_LED2(void); //Returns LED2 Period Settings
byte MAX77650_getD_LED2(void); //Returns LED2 On Duty-Cycle Settings
//Global Configuration register 0x10
boolean MAX77650_getBOK(void); //Returns Main Bias Okay Status Bit
boolean MAX77650_getSBIA_LPM(void); //Returns Main Bias Low-Power Mode software request
boolean MAX77650_getSBIA_EN(void); //Returns Main Bias Enable Software Request
boolean MAX77650_getnEN_MODE(void); //Returns nEN Input (ONKEY) Default Configuration Mode
boolean MAX77650_getDBEN_nEN(void); //Returns Debounce Timer Enable for the nEN Pin
byte MAX77650_getSFT_RST(void); //Returns Software Reset Functions.
//Global Interrupt Status Register 0x00
byte MAX77650_getINT_GLBL(void); //Returns Interrupt Status Register 0x00
//Global Interrupt Mask Register 0x06
byte MAX77650_getINT_M_GLBL(void); //Returns Global Interrupt Mask Register
//GPIO Configuration Register
boolean MAX77650_getDBEN_GPI(void); //Returns General Purpose Input Debounce Timer Enable
boolean MAX77650_getDO(void); //Returns General Purpose Output Data Output
boolean MAX77650_getDRV(void); //Returns General Purpose Output Driver Type
boolean MAX77650_getDI(void); //Returns GPIO Digital Input Value
boolean MAX77650_getDIR(void); //Returns GPIO Direction
//Charger Interrupt Status Register 0x01
byte MAX77650_getINT_CHG(void); //Returns Charger Interrupt Status Register 0x01
//Charger Interrupt Mask Register 0x07
byte MAX77650_getINT_M_CHG(void); //Returns Global Interrupt Mask Register
//Charger Configuration Register A 0x18
byte MAX77650_getTHM_HOT(void); //Returns the VHOT JEITA Temperature Threshold
byte MAX77650_getTHM_WARM(void); //Returns the VWARM JEITA Temperature Threshold
byte MAX77650_getTHM_COOL(void); //Returns the VCOOL JEITA Temperature Threshold
byte MAX77650_getTHM_COLD(void); //Returns the VCOLD JEITA Temperature Threshold
//Charger Configuration Register B 0x19
byte MAX77650_getVCHGIN_MIN(void); //Returns the Minimum CHGIN regulation voltage (VCHGIN-MIN)
byte MAX77650_getICHGIN_LIM(void); //Returns the CHGIN Input Current Limit (ICHGIN-LIM)
boolean MAX77650_getI_PQ(void); //Returns the prequalification charge current (IPQ) as a percentage of IFAST-CHG
boolean MAX77650_getCHG_EN(void); //Returns Charger Enable
//Charger Configuration Register C 0x1A
byte MAX77650_getCHG_PQ(void); //Returns the Battery prequalification voltage threshold (VPQ)
byte MAX77650_getI_TERM(void); //Returns the Charger Termination Current (ITERM). I_TERM[1:0] sets the charger termination current as a percentage of the fast charge current IFAST-CHG.
byte MAX77650_getT_TOPOFF(void); //Returns the Topoff timer value (tTO)
//Charger Configuration Register D 0x1B
byte MAX77650_getTJ_REG(void); //Returns the die junction temperature regulation point, TJ-REG
byte MAX77650_getVSYS_REG(void); //Returns the System voltage regulation (VSYS-REG)
//Charger Configuration Register E 0x1C
byte MAX77650_getCHG_CC(void); //Returns the fast-charge constant current value, IFAST-CHG.
byte MAX77650_getT_FAST_CHG(void); //Returns the fast-charge safety timer, tFC.
//Charger Configuration Register F 0x1D
byte MAX77650_getCHG_CC_JEITA(void); //Returns the IFAST-CHG_JEITA for when the battery is either cool or warm as defined by the TCOOL and TWARM temperature thresholds. This register is a don't care if the battery temperature is normal.
byte MAX77650_getTHM_EN(void); //Returns the Thermistor enable bit
//Charger Configuration Register G 0x1E
byte MAX77650_getCHG_CV(void); //Returns the fast-charge battery regulation voltage, VFAST-CHG.
boolean MAX77650_getUSBS(void); //this bit places CHGIN in USB suspend mode
//Charger Configuration Register H 0x1F
byte MAX77650_getCHG_CV_JEITA(void); //Returns the modified VFAST-CHG for when the battery is either cool or warm as defined by the TCOOL and TWARM temperature thresholds. This register is a don't care if the battery temperature is normal.
//Charger Configuration Register I 0x20
byte MAX77650_getIMON_DISCHG_SCALE(void); //Returns the Selects the battery discharge current full-scale current value This 4-bit configuration starts at 7.5mA and ends at 300mA.
byte MAX77650_getMUX_SEL(void); //Returns the analog channel to connect to AMUX configuration
//LDO Configuration Register A 0x38
byte MAX77650_getTV_LDO(void); //Returns the LDO Target Output Voltage
//LDO Configuration Register B 0x39
boolean MAX77650_getADE_LDO(void); //Returns LDO active-Discharge Enable
byte MAX77650_getEN_LDO(void); //Enable Control for LDO.
//SIMO Buck-Boost Global Configuration Register 0x28
boolean MAX77650_getMRT_OTP(void); //Returns Manual Reset Time Configuration
boolean MAX77650_getSBIA_LPM_DEF(void); //Returns Default voltage of the SBIA_LPM bit
boolean MAX77650_getDBNC_nEN_DEF(void); //Returns Default Value of the DBNC_nEN bit
byte MAX77650_getDRV_SBB(void); //Returns the SIMO Buck-Boost (all channels) Drive Strength Trim.
//SIMO Buck-Boost 0 Configuration Register A 0x29
byte MAX77650_getIP_SBB0(void); //Returns the SIMO Buck-Boost Channel 0 Peak Current Limit
byte MAX77650_getTV_SBB0(void); //Returns the SIMO Buck-Boost Channel 0 Target Output Voltage
//SIMO Buck-Boost 0 Configuration Register B 0x2A
boolean MAX77650_getADE_SBB0(void); //Returns SIMO Buck-Boost Channel 0 Active-Discharge Enable
byte MAX77650_getEN_SBB0(void); //Returns the Enable Control for SIMO Buck-Boost Channel 0.
//SIMO Buck-Boost 1 Configuration Register A 0x2B
byte MAX77650_getIP_SBB1(void); //Returns the SIMO Buck-Boost Channel 1 Peak Current Limit
byte MAX77650_getTV_SBB1(void); //Returns the SIMO Buck-Boost Channel 1 Target Output Voltage
//SIMO Buck-Boost 1 Configuration Register B 0x2C
boolean MAX77650_getADE_SBB1(void); //Returns SIMO Buck-Boost Channel 1 Active-Discharge Enable
byte MAX77650_getEN_SBB1(void); //Returns the Enable Control for SIMO Buck-Boost Channel 1.
//SIMO Buck-Boost 2 Configuration Register A 0x2D
byte MAX77650_getIP_SBB2(void); //Returns the SIMO Buck-Boost Channel 2 Peak Current Limit
byte MAX77650_getTV_SBB2(void); //Returns the SIMO Buck-Boost Channel 2 Target Output Voltage
//SIMO Buck-Boost 2 Configuration Register B 0x2E
boolean MAX77650_getADE_SBB2(void); //Returns SIMO Buck-Boost Channel 2 Active-Discharge Enable
byte MAX77650_getEN_SBB2(void); //Returns the Enable Control for SIMO Buck-Boost Channel 2.
//***** Register writes *****
//LDO Configuration Register A 0x38
boolean MAX77650_setTV_LDO(byte); //Sets the LDO Target Output Voltage
//LDO Configuration Register B 0x39
boolean MAX77650_setADE_LDO(byte); //Sets LDO active-Discharge Enable
boolean MAX77650_setEN_LDO(byte); //Enable LDO
//Charger Configuration Register A 0x18
boolean MAX77650_setTHM_HOT(byte); //Sets the VHOT JEITA Temperature Threshold
boolean MAX77650_setTHM_WARM(byte); //Sets the VWARM JEITA Temperature Threshold
boolean MAX77650_setTHM_COOL(byte); //Sets the VCOOL JEITA Temperature Threshold
boolean MAX77650_setTHM_COLD(byte); //Sets the VCOLD JEITA Temperature Threshold
//Charger Configuration Register B 0x19
boolean MAX77650_setVCHGIN_MIN(byte); //Sets the Minimum CHGIN regulation voltage (VCHGIN-MIN)
boolean MAX77650_setICHGIN_LIM(byte); //Sets the CHGIN Input Current Limit (ICHGIN-LIM)
boolean MAX77650_setI_PQ(boolean); //Sets the prequalification charge current (IPQ) as a percentage of IFAST-CHG
boolean MAX77650_setCHG_EN(boolean); //Sets Charger Enable
//Charger Configuration Register C 0x1A
boolean MAX77650_setCHG_PQ(byte); //Sets the Battery prequalification voltage threshold (VPQ)
boolean MAX77650_setI_TERM(byte); //Sets the Charger Termination Current (ITERM). I_TERM[1:0] sets the charger termination current as a percentage of the fast charge current IFAST-CHG.
boolean MAX77650_setT_TOPOFF(byte); //Sets the Topoff timer value (tTO)
//Charger Configuration Register D 0x1B
boolean MAX77650_setTJ_REG(byte); //Sets the die junction temperature regulation point, TJ-REG
boolean MAX77650_setVSYS_REG(byte); //Sets the System voltage regulation (VSYS-REG)
//Charger Configuration Register E 0x1C
boolean MAX77650_setCHG_CC(byte); //Sets the fast-charge constant current value, IFAST-CHG.
boolean MAX77650_setT_FAST_CHG(byte); //Sets the fast-charge safety timer, tFC.
//Charger Configuration Register F 0x1D
boolean MAX77650_setCHG_CC_JEITA(byte); //Sets the IFAST-CHG_JEITA for when the battery is either cool or warm as defined by the TCOOL and TWARM temperature thresholds. This register is a don't care if the battery temperature is normal.
boolean MAX77650_setTHM_EN(boolean); //Sets the Thermistor enable bit
//Charger Configuration Register G 0x1E
boolean MAX77650_setCHG_CV(byte); //Sets the fast-charge battery regulation voltage, VFAST-CHG.
boolean MAX77650_setUSBS(boolean); //this bit places CHGIN in USB suspend mode
//Charger Configuration Register H 0x1F
boolean MAX77650_setCHG_CV_JEITA(byte); //Sets the modified VFAST-CHG for when the battery is either cool or warm as defined by the TCOOL and TWARM temperature thresholds. This register is a don't care if the battery temperature is normal.
//Charger Configuration Register I 0x20
boolean MAX77650_setIMON_DISCHG_SCALE(byte); //Sets the Selects the battery discharge current full-scale current value This 4-bit configuration starts at 7.5mA and ends at 300mA.
boolean MAX77650_setMUX_SEL(byte); //Sets the analog channel to connect to AMUX configuration
//SIMO Buck-Boost Global Configuration Register 0x28
boolean MAX77650_setMRT_OTP(boolean); //Sets Manual Reset Time Configuration
boolean MAX77650_setSBIA_LPM_DEF(boolean); //Sets Default voltage of the SBIA_LPM bit
boolean MAX77650_setDBNC_nEN_DEF(boolean); //Sets Default Value of the DBNC_nEN bit
boolean MAX77650_setDRV_SBB(byte); //Sets the SIMO Buck-Boost (all channels) Drive Strength Trim.
//SIMO Buck-Boost 0 Configuration Register A 0x29
boolean MAX77650_setIP_SBB0(byte); //Sets the SIMO Buck-Boost Channel 0 Peak Current Limit
boolean MAX77650_setTV_SBB0(byte); //Sets the SIMO Buck-Boost Channel 0 Target Output Voltage
//SIMO Buck-Boost 0 Configuration Register B 0x2A
boolean MAX77650_setADE_SBB0(boolean); //Sets SIMO Buck-Boost Channel 0 Active-Discharge Enable
boolean MAX77650_setEN_SBB0(byte); //Sets the Enable Control for SIMO Buck-Boost Channel 0.
//SIMO Buck-Boost 1 Configuration Register A 0x2B
boolean MAX77650_setIP_SBB1(byte); //Sets the SIMO Buck-Boost Channel 1 Peak Current Limit
boolean MAX77650_setTV_SBB1(byte); //Sets the SIMO Buck-Boost Channel 1 Target Output Voltage
//SIMO Buck-Boost 1 Configuration Register B 0x2C
boolean MAX77650_setADE_SBB1(boolean); //Sets SIMO Buck-Boost Channel 1 Active-Discharge Enable
boolean MAX77650_setEN_SBB1(byte); //Sets the Enable Control for SIMO Buck-Boost Channel 1.
//SIMO Buck-Boost 2 Configuration Register A 0x2D
boolean MAX77650_setIP_SBB2(byte); //Sets the SIMO Buck-Boost Channel 2 Peak Current Limit
boolean MAX77650_setTV_SBB2(byte); //Sets the SIMO Buck-Boost Channel 2 Target Output Voltage
//SIMO Buck-Boost 2 Configuration Register B 0x2E
boolean MAX77650_setADE_SBB2(boolean); //Sets SIMO Buck-Boost Channel 2 Active-Discharge Enable
boolean MAX77650_setEN_SBB2(byte); //Sets the Enable Control for SIMO Buck-Boost Channel 2.
//LED related registers
boolean MAX77650_setEN_LED_MSTR(boolean); //Sets Master LED Enable Bit
boolean MAX77650_setLED_FS0(byte); //Sets LED0 Full Scale Range
boolean MAX77650_setINV_LED0(boolean); //Sets LED0 Invert
boolean MAX77650_setBRT_LED0(byte); //Sets LED0 Brightness Control
boolean MAX77650_setP_LED0(byte); //Sets LED0 Period Settings
boolean MAX77650_setD_LED0(byte); //Sets LED0 On Duty-Cycle Settings
boolean MAX77650_setLED_FS1(byte); //Sets LED1 Full Scale Range
boolean MAX77650_setINV_LED1(boolean); //Sets LED1 Invert
boolean MAX77650_setBRT_LED1(byte); //Sets LED1 Brightness Control
boolean MAX77650_setP_LED1(byte); //Sets LED1 Period Settings
boolean MAX77650_setD_LED1(byte); //Sets LED1 On Duty-Cycle Settings
boolean MAX77650_setLED_FS2(byte); //Sets LED2 Full Scale Range
boolean MAX77650_setINV_LED2(boolean); //Sets LED2 Invert
boolean MAX77650_setBRT_LED2(byte); //Sets LED2 Brightness Control
boolean MAX77650_setP_LED2(byte); //Sets LED2 Period Settings
boolean MAX77650_setD_LED2(byte); //Sets LED2 On Duty-Cycle Settings
//Global Configuration register 0x10
boolean MAX77650_setBOK(boolean); //Sets Main Bias Okay Status Bit
boolean MAX77650_setSBIA_LPM(boolean); //Sets Main Bias Low-Power Mode software request
boolean MAX77650_setSBIA_EN(boolean); //Sets Main Bias Enable Software Request
boolean MAX77650_setnEN_MODE(boolean); //Sets nEN Input (ONKEY) Default Configuration Mode
boolean MAX77650_setDBEN_nEN(boolean); //Sets Debounce Timer Enable for the nEN Pin
boolean MAX77650_setSFT_RST(byte); //Sets Software Reset Functions.
//Global Interrupt Mask Register 0x06
boolean MAX77650_setINT_M_GLBL(byte); //Sets Global Interrupt Mask Register
//GPIO Configuration Register
boolean MAX77650_setDBEN_GPI(boolean); //Sets General Purpose Input Debounce Timer Enable
boolean MAX77650_setDO(boolean); //Sets General Purpose Output Data Output
boolean MAX77650_setDRV(boolean); //Sets General Purpose Output Driver Type
boolean MAX77650_setDI(boolean); //Sets GPIO Digital Input Value
boolean MAX77650_setDIR(boolean); //Sets GPIO Direction
//Charger Interrupt Mask Register 0x07
boolean MAX77650_setINT_M_CHG(byte); //Sets Global Interrupt Mask Register
#endif