Locale Icon
English
  • Forums

    Popular Forums

    • LTspice
    • RF and Microwave
    • Video
    • Power Management
    • Precision ADCs
    • FPGA Reference Designs
    • Linux Software Drivers

    Product Forums

    • Amplifiers
    • Microcontrollers
    • Clock and Timing
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy Monitoring and Metering
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Power Management
    • Processors and DSP
    • Switches/Multiplexers
    • Temperature Sensors
    • Voltage References
    View All

    Application Forums

    • A2B
    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • Embedded Vision Sensing Library
    • Motor Control Hardware Platforms
    • Precision Technology Signal Chains Library
    • Video
    • Wireless Sensor Networks Reference Library

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools and Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Reference Designs
    • Signal Chain Power (SCP)
    • Software Interface Tools
    • System Demonstration Platform (SDP) Support
  • Learn

    Highlighted Webinar

    Simplifying Connectivity - Remote Controlled (RC) Nodes in a Software Defined Vehicle (SDV)

    This webinar will introduce remote-controlled edge nodes and how they promise to simplify the automotive network architecture and expedite the integration...

    Places

    • ADI Education Home
    • ADI Webinars
    • GMSL U
    • StudentZone (Analog Dialogue)
    • Video Annex
    • Virtual Classroom

    Libraries

    • 3D ToF Depth Sensing Library
    • Continuous-Wave CMOS Time of Flight (TOF) Library
    • Embedded Vision Sensing Library
    • Gigabit Multimedia Serial Link (GMSL) Library
    • Optical Sensing Library
    • Precision Technology Signal Chains Library
    • Software Modules and SDKs Library
    • Supervisory Circuits Library
    • Wireless Sensor Networks Library

    Latest Webinars

    • Simplifying Connectivity - Remote Controlled (RC) Nodes in a Software Defined Vehicle (SDV)
    • Upcoming Webinar: Simplify High-Accuracy Instrumentation Design with Latest Precision Data Converters
    • Design High Performance Power Systems with Ultralow Noise Technology
    • µModule Solution for Intelligent Motion Control
    • Accelerating Embedded System Development with CodeFusion Studio™︎
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes AQQ286 about Right Labels on the Right Boxes containing colored balls

      1. Quote of the week: "Knowledge is knowing a tomato is a fruit. Wisdom is not putting it in a fruit salad" - unknown Sources: commons.wikimedia...

    View All

    What's Brewing

      GMSL Quiz! Read the blog, take the quiz, and enter to win a gift card!

      Quiz! Read the GMSL Link Lock Blog - Take the Quiz and You are Entered to Win! Important: Read the blog first . The quiz questions are all based on...

    View All

    Places

    • Community Help
    • Logic Lounge
    • Super User Program

    Resources

    • EZ Code of Conduct
    • EZ How To Help Articles
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • Blogs

    Highlighted Blogs

    IO-Link: Power Dissipation in Practice

    The Limitation of Heat Dissipation IO-Link is used across many branches of factory automation, and in these applications, areas of the factory floor...

     

    GMSL Debugging: Getting a Lock

    Imagine a scenario where you have a brand-new board design or are excited to try out some evaluation kits only to find out that the two devices can’t talk...

    Latest Blogs

    • Exploring DCM and CCM in SMPS: Part 1 of 6
    • Let’s Take a Field-Bus Trip
    • Countable vs Non-countable Faults
    • Power Your Signal: DAS Networks Unleashed: Part 2 of 4
    • Combining Functional Safety and Availability Using Redundancy
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • ContentZone

    Visit ContentZone

    ContentZone

    Technical articles. Blogs. Videos. Your ADI content, all in one place.

    View ContentZone

    Featured Content

    Featured Content Title

    Blurb About Content

    View Content By Industry

    • Aerospace and Defense Systems
    • Automotive Solutions
    • Consumer Technology Solutions
    • Data Center Solutions
    • Energy Solutions
    • Healthcare Solutions
    • Industrial Automation Technology Solutions
    • Instrumentation and Measurement Solutions
    • Intelligent Building Solutions
    • Internet of Things (IoT)
    • Wireless Communication Solutions

    View Content By Technology

    • A2B Audio Bus
    • ADI OtoSense Predictive Maintenance Solutions
    • Dynamic Speaker Management
    • Gallium Nitride (GaN) Technology
    • Gigabit Multimedia Serial Link (GMSL)
    • Industrial Vision
    • Power Solutions
    • Precision Technology
    • RF
    • Security Solutions
    • Sensor Interfaces
    • SmartMesh
  • Partners

    Partner Forums

    • Boston Engineering
    • PalmSens
    • Richardson RFPD
    • Tri-Star Design, Inc.

    Partner Libraries

    • Calian, Advanced Technologies Library
    • Clockworks Signal Processing Library
    • Colorado Engineering Inc. (DBA CAES AT&E) Library
    • Epiq Solutions Library
    • Fidus Library
    • VadaTech Library
    • Vanteon Library
    • X-Microwave Library
EngineerZone
EngineerZone
Battery Management System
  • Log In
  • User
  • Site
  • Search
OR
Ask a Question
Battery Management System
  • Power Management
Battery Management System
Documents How do I load an INI file onto the MAX17050?
  • Q&A
  • FAQs/ Docs
  • Members
  • Tags
  • More
  • Cancel
  • +Documents
  • +ADBMS6830: FAQ
  • +ADP5061: FAQ
  • +DS2438: FAQ
  • +DS2438Z+: FAQ
  • +DS2704G+: FAQ
  • +DS2711: FAQ
  • +DS2711E+: FAQ
  • +DS2712E+: FAQ
  • +DS2712EVKIT+: FAQ
  • DS2715: FAQ
  • +DS2715BZ+: FAQ
  • DS2740: FAQ
  • +DS2740U: FAQ
  • +DS2745EVKIT+: FAQ
  • +DS2745U+: FAQ
  • +DS2762AE+: FAQ
  • +DS2764AE+025: FAQ
  • DS2775: FAQ
  • +DS2775G+: FAQ
  • +DS2777: FAQ
  • +DS2781AE+/: FAQ
  • +DS2782E+: FAQ
  • DS2784: FAQ
  • +DS2784G+: FAQ
  • +DS2786: FAQ
  • DS2788: FAQ
  • DS2788E+: FAQ
  • +DS2788E+T&R: FAQ
  • +DS2788EVKIT+: FAQ
  • How do I create a model with DS2788
  • MAX14690: FAQ
  • +MAX14690AEVAL#: FAQ
  • +MAX14745AEWX+: FAQ
  • +MAX14745DEWX+: FAQ
  • +MAX14745GEWX+: FAQ
  • +MAX14745MEWX+T: FAQ
  • +MAX14920ECB+: FAQ
  • +MAX14921 EVKIT SOF: FAQ
  • MAX14921: FAQ
  • +MAX14921ECS+: FAQ
  • +MAX1501: FAQ
  • +MAX1555EZK+T: FAQ
  • +MAX16016: FAQ
  • +MAX1667EAP_T1: FAQ
  • +MAX17043G+T: FAQ
  • +MAX17043G+U: FAQ
  • +MAX17043X+: FAQ
  • MAX17048: FAQ
  • MAX17048G+: FAQ
  • +MAX17048G+CHU: FAQ
  • +MAX17049: FAQ
  • -MAX17050X+T10: FAQ
    • How do I load an INI file onto the MAX17050?
    • How to prevent the SOC drop near empty since MAX17050 didn't have the empty hold feature?
  • MAX17055: FAQ
  • MAX17055AEWL+: FAQ
  • +MAX17055AEWL+_B1: FAQ
  • MAX17055ETB+: FAQ
  • +MAX17055ETB+T: FAQ
  • +MAX17055EWL+T: FAQ
  • +MAX17055GEVKIT: FAQ
  • +MAX17058: FAQ
  • MAX17201: FAQ
  • MAX17201G+: FAQ
  • +MAX17201G+T0E: FAQ
  • MAX17201G+T: FAQ
  • +MAX17201GEVKIT#: FAQ
  • MAX17205: FAQ
  • MAX17205G+: FAQ
  • +MAX17205G+T: FAQ
  • +MAX17205GEVKIT#: FAQ
  • +MAX17211G+: FAQ
  • +MAX17215G+: FAQ
  • +MAX17260 EVALUATION KIT SOFTWARE: FAQ
  • MAX17260BEWL+: FAQ
  • +MAX17260BEWL+_B1: FAQ
  • +MAX17260SETD+: FAQ
  • +MAX17260SEWL+: FAQ
  • +MAX17260XEVKIT#: FAQ
  • +MAX17261GEVKIT#: FAQ
  • MAX17261METD+: FAQ
  • +MAX17261METD+T: FAQ
  • +MAX17261MEWL+: FAQ
  • +MAX17261XEVKIT#: FAQ
  • +MAX17262REWL+: FAQ
  • +MAX17263GEVKIT#: FAQ
  • +MAX17263LETD+: FAQ
  • +MAX17301G+: FAQ
  • +MAX17301GEVKIT#: FAQ
  • +MAX17303G+: FAQ
  • +MAX17303X+T: FAQ
  • +MAX17313G+: FAQ
  • +MAX17320G10+: FAQ
  • +MAX17320G1EVKIT#: FAQ
  • +MAX17320G20+: FAQ
  • +MAX17320X22+: FAQ
  • +MAX17320X2EVKIT#: FAQ
  • MAX1737: FAQ
  • +MAX1737EEI+T: FAQ
  • +MAX17435: FAQ
  • +MAX1757EAI+: FAQ
  • +MAX1758EAI (28-SSOP): FAQ
  • +MAX1758EAI+: FAQ
  • +MAX17703ATG+: FAQ
  • MAX17823BGCB/V+: FAQ
  • +MAX17823BGCB/V+T: FAQ
  • +MAX17841BGUE/V+T: FAQ
  • MAX17843: FAQ
  • MAX17843ACB/V+: FAQ
  • +MAX17843ACB/V+_T1: FAQ
  • +MAX17851EVKIT#: FAQ
  • +MAX17852ACB/V+: FAQ
  • +MAX17852EVKIT#: FAQ
  • +MAX17853ACB/V+: FAQ
  • +MAX17853EVKIT#: FAQ
  • +MAX1870AETJ+: FAQ
  • +MAX1873REEE+: FAQ
  • MAX1873REEE: FAQ
  • +MAX1873TEEE+: FAQ
  • +MAX20094ATI/VY+: FAQ
  • +MAX20094ATIB/VY+: FAQ
  • MAX20303: FAQ
  • MAX20303AEWN+: FAQ
  • +MAX20303AEWN+T: FAQ
  • +MAX20303BEWN+: FAQ
  • +MAX20303EVKIT#: FAQ
  • +MAX20303EWN+: FAQ
  • +MAX20335AEWX+: FAQ
  • +MAX20353: FAQ
  • +MAX20360AEWZ+: FAQ
  • +MAX6361: FAQ
  • MAX6900: FAQ
  • +MAX6900ETTAEQ-T: FAQ
  • +MAX6953EAX+: FAQ
  • +MAX713: FAQ
  • +MAX7452: FAQ
  • +MAX7456EUI+_T1: FAQ
  • MAX77650: FAQ
  • +MAX77650AEWV+: FAQ
  • +MAX77650BEWV+: FAQ
  • +MAX77650CEWV+: FAQ
  • +MAX77651AEWV+: FAQ
  • +MAX77654AENV+: FAQ
  • +MAX77654AENVN+: FAQ
  • +MAX77654BENV+: FAQ
  • +MAX77654_NV+_A1: FAQ
  • +MAX77734AENP+T: FAQ
  • +MAX77734BENP+: FAQ
  • +MAX77818 CHARGER+F: FAQ
  • +MAX77818EVKIT#: FAQ
  • +MAX77818EVSYS#: FAQ
  • MAX77818EWZ+: FAQ
  • +MAX77818EWZ+T: FAQ
  • +MAX77840EVKIT#: FAQ
  • MAX77950: FAQ
  • +MAX77950EVKIT#: FAQ
  • +MAX77950EWW+_B1: FAQ
  • +MAX77960BEFV06+: FAQ
  • MAX77961EFV+: FAQ
  • +MAX77961EFV+T: FAQ
  • +MAX77961EFV06+T: FAQ
  • +MAX77962EWJ+_B1: FAQ
  • +MAX77962EWJ12+: FAQ
  • +MAX77975EFD+: FAQ
  • +MAX77976EFD+: FAQ
  • +MAX8677AETG+: FAQ
  • +MAX8713EVKIT: FAQ
  • +MAX8856ETD+: FAQ
  • +MAX8895VEWA+: FAQ
  • +MAX8903A: FAQ
  • +MAX8934AETI+: FAQ
  • MAX8971: FAQ
  • +MAX8971CEWP+: FAQ
  • +MAX8971EWP+T: FAQ

How do I load an INI file onto the MAX17050?

The MAX17047/50 should be initialized prior to being used. The following registers should be written to these values in order for the MAX17047/50 to perform at its best. These values are written to RAM, so they must be written to the device any time that power is applied or restored to the device. Some registers are updated internally, so it is necessary to verify that the register was written correctly to prevent data collisions.  

 

Please see the steps below to initialize the MAX17047/50:


Step 0. Check for POR
The POR bit is bit 1 of the Status Register.
Status = ReadRegister(0x00)
If POR=0, then go to Step 17.5.
If POR=1, then do Steps 1-17.
     

Step 1. Delay at least 500ms
After Power up, the MAX17047/50 requires 500ms in order to perform signal debouncing and
initial SOC reporting.

Step 2. Initialize Configuration
WriteRegister (0x1D , 0x2210) // Write CONFIG
WriteRegister (0x29 , 0x87A4) // Write FilterCFG
WriteRegister (0x2A , RelxCFG_Value) // Write RelaxCFG
WriteRegister (0x13 , 0x5F00) // Write FullSOCthr=95% to block full detection until at least 95%.
Set Iavg_empty(0x36) to C/4
For example, if a battery's design capacity (C) is 1000mAhr. Iavg_emptyshould be set to dec2hex(1000mA/4/0.15625mA) = 0x0640
WriteAndVerifyRegister (0x36,Iavg_empty)

Step 3. Choosing LearnCFG based on system shutdown method
For ModelGauge m3 devices, when Empty Learning is Enabled, QRTable is updated when battery voltage equals V_Empty. This means if the system is shutdown when VCELL > V_Empty, Empty Learning is not triggered. For drivers that shuts down the system when SOC > x % or when VCELL > V_Empty, this effectively disables empty learning when the fuel gauge has early error.

The custom model that is stored in the MAX17047/50 is also written to RAM and so it must be written to the device any time that power is applied or restored to the device. When the device is powered on, the host software must first unlock write access to the model, write the model, verify the model was written properly, and then lock access to the model. After the model is loaded correctly, simply write a few registers with customized parameters that will be provided by Maxim

Step 4. Unlock Model Access
To unlock access to the model the host software must write the following:
WriteRegister (0x62, 0x0059) //Unlock Model Access
WriteRegister (0x63, 0x00C4)

Step 5. Write/Read/Verify the Custom Model
Once the model is unlocked, the host software must write the 48 word model to the MAX17047/50. The model is located between memory locations 0x80h and 0xAFh.
//Actual bytes to transmit will be provided by Maxim after cell characterization.
//See INI file at the end of this document for an example of the data to be written.
Write16Registers (0x80)
Write16Registers (0x90)
Write16Registers (0xA0)

The model can be read directly back from the MAX17047/50. So simply read the 48 words of the model back from the device to verify if it was written correctly. If any of the values do not match, return to step 4.
Read16Registers (0x80)
Read16Registers (0x90)
Read16Registers (0xA0)

Step 6. Lock Model Access
To lock access to the model the host software must write the following:
WriteRegister (0x62, 0x0000) //Lock Model Access
WriteRegister (0x63, 0x0000)

Step 7. Verify that Model Access is locked
If the model remains unlocked, the MAX17047/50 will not be able to monitor the capacity of the battery. Therefore it is very critical that the Model Access is locked. To verify it is locked, simply read back the model as in Step 5. However, this time, all values should be read as 0x00h. If any values are non-zero, repeat Step 6 to make sure the Model Access is locked.

Step 8. Write Custom Parameters
Five additional registers should be written in this step with values that are provided by Maxim.
WriteAndVerifyRegister (0x38, RCOMP0) //Write and Verify RCOMP0
WriteAndVerifyRegister (0x39, TempCo) //Write and Verify TempCo
WriteRegister (0x1E, ICHGTerm) //Write ICHGTerm
WriteRegister (0x2C, TGAIN) //Write TGAIN
WriteRegister (0x2D, TOFF) //Write TOFF
WriteAndVerifyRegister(0x3A, V_Empty) //WriteAndVerify V_Empty
WriteAndVerifyRegister(0x12, QRTable00) //WriteAndVerify QRTable00
WriteAndVerifyRegister(0x22, QRTable10) //WriteAndVerify QRTable10
WriteAndVerifyRegister(0x32, QRTable20) //WriteAndVerify QRTable20
WriteAndVerifyRegister(0x42, QRTable30) //WriteAndVerify QRTable30

Step 9. Update Full Capacity Parameters
Capacity is a value provided by Maxim. If the INI does not have a VF_FullCap value, the Capacity should be used for both VF_FullCap and Capacity.
WriteAndVerifyRegister (0x10, Capacity) //Write and Verify FullCap
WriteRegister (0x18, VF_FullCap) //Write DesignCap
WriteAndVerifyRegister (0x23, VF_FullCap) //Write and Verify FullCapNom

Step 10. Delay at least 350ms
This delay must be at least 350ms to allow VFSOC to be calculated from the new configuration.

Step 11. Write VFSOC and QH values to VFSOC0 and QH0
VFSOC = ReadRegister(0xFF) //Read VFSOC
WriteRegister(0x60,0x0080) //Enable Write Access to VFSOC0 and Qh0
WriteAndVerifyRegister (0x48, VFSOC) //Write and Verify VFSOC0
Qh = ReadRegister(0x4D) //Read Qh register
WriteRegister(0x4C, QH) //Write Qh to Qh0
WriteRegister(0x60,0x0000) //Disable Write Access to VFSOC0 and Qh0

Step 11.5 Advance to Coulomb-Counter Mode
Advancing the cycles register to a higher values makes the fuelgauge behave more like a coulomb counter. MAX17047 supports quicker insertion error healing by supporting starting from a lower learn stage.
To Advance to Coulomb-Counter Mode, simply write the Cycles register to a value of 96%.
WriteAndVerifyRegister (0x17, 0x0060) // Write and Verify Cycles

Step 12. Load New Capacity Parameters
// VFSOC was read in step 11
RemCap = (VFSOC* VF_FullCap) / 25600
WriteAndVerifyRegister (0x0F, RemCap) //Write and Verify
RemCap
RepCap = RemCap * (Capacity/VF_FullCap)/ModelScaling
WriteAndVerifyRegister (0x05, RepCap) //Write and Verify
RepCap
//Write dQ_acc to 200% of Capacity and dP_acc to 200%
dQ_acc = (VF_FullCap/ 16)
WriteAndVerifyRegister (0x46, 0x0C80) //Write and Verify dP_acc
WriteAndVerifyRegister (0x45, dQ_acc) //Write and Verify dQ_acc
WriteAndVerifyRegister (0x10, Capacity) //Write and Verify FullCap
WriteRegister (0x18, VF_FullCap) //Write DesignCap
WriteAndVerifyRegister (0x23, VF_FullCap) // Write and Verify FullCapNom
//Update SOC register with new SOC
WriteRegister (0x06, VFSOC) //Write SOCRep

Step 13. Initialization Complete
Clear the POR bit to indicate that the custom model and parameters were successfully loaded.
Status = ReadRegister(0x00) //Read Status
WriteAndVerifyRegister (0x00, Status AND 0xFFFD) //Write and
Verify Status with POR bit Cleared

Step 14. Identify Battery

 

 

Tags: fuel gauge MAX17047 KA-02952 INI MAX17050X+T10 MAX17050 m3 Show More
  • Share
  • History
  • Cancel
analog-devices logo

About Analog Devices

  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue

Get the Latest News

Stay up to date with our latest news and articles about Analog Devices' products, design tools, trainings, and events.

Sign Up Now
  • Instagram page
  • Twitter page
  • Linkedin page
  • Youtube page
  • Facebook
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings
沪ICP备09046653号-1

©2025 Analog Devices, Inc. All Rights Reserved

analog-devices

About Analog Devices

Down Up
  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

Down Up
  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue

Get the Latest News

Stay up to date with our latest news and articles about Analog Devices' products, design tools, trainings, and events.

Instagram page Facebook Twitter page Linkedin page Youtube page
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings
沪ICP备09046653号-1

©2025 Analog Devices, Inc. All Rights Reserved