SLAA476B February   2011  – July 2019 BQ2040 , BQ2040 , BQ2060A , BQ2060A , BQ2063 , BQ2063 , BQ2083-V1P3 , BQ2083-V1P3 , BQ2084-V143 , BQ2084-V143 , BQ2084-V150 , BQ2084-V150 , BQ2085-V1P3 , BQ2085-V1P3 , BQ20Z40-R1 , BQ20Z40-R1 , BQ20Z70-V160 , BQ20Z70-V160 , BQ20Z80A-V110 , BQ20Z80A-V110 , BQ28400 , BQ28400 , BQ78PL114 , BQ78PL114 , BQ78PL116 , BQ78PL116 , LM5145 , LM5145 , MSP430F5500 , MSP430F5500 , MSP430F5501 , MSP430F5501 , MSP430F5502 , MSP430F5502 , MSP430F5503 , MSP430F5503 , MSP430F5504 , MSP430F5504 , MSP430F5505 , MSP430F5505 , MSP430F5506 , MSP430F5506 , MSP430F5507 , MSP430F5507 , MSP430F5508 , MSP430F5508 , MSP430F5509 , MSP430F5509 , MSP430F5510 , MSP430F5510 , TPS40057 , TPS40057 , TPS40170 , TPS40170

 

  1.   Wide-Vin Battery Charger Using SMBus Communication Interface Between MSP430™ MCUs and bq Fuel Gauges
    1.     Trademarks
    2. Introduction
    3. Hardware
      1. 2.1 Overall System Description
      2. 2.2 MSP430F5510 Daughterboard Subsystem
        1. 2.2.1 Subsystem Description
        2. 2.2.2 MSP430F5510 Port Pins Functionality Description
      3. 2.3 Power Stage Board Subsystem
        1. 2.3.1 Subsystem Description
        2. 2.3.2 Input Protection Features
        3. 2.3.3 Constant-Voltage and Constant-Current Feedback
    4. Software
      1. 3.1 SMBus Protocol Description
      2. 3.2 Software File Structure
      3. 3.3 API Calls Description
        1. 3.3.1  UCS_Init ( )
        2. 3.3.2  Timer_Init ( )
        3. 3.3.3  PWM_Init ( )
        4. 3.3.4  ADC_Init ( )
        5. 3.3.5  Fan_Init ( )
        6. 3.3.6  LED_Init ( )
        7. 3.3.7  SMBus_Initialize ( )
        8. 3.3.8  LED_Control ( )
        9. 3.3.9  Fan_Control ( )
        10. 3.3.10 VI_ADC_Read ( )
        11. 3.3.11 SMBus_Select ( )
        12. 3.3.12 Calibrate_Battery ( )
        13. 3.3.13 Delay_Timer ( )
        14. 3.3.14 PWM_Control ( )
        15. 3.3.15 Smbus_Access ( )
        16. 3.3.16 Smbus_Access_PEC ( )
        17. 3.3.17 crc8MakeBitwise ( )
      4. 3.4 Sample Application Description
    5. SBS Supported Commands Using SMBus Protocol
    6. Detailed Sample Application Flow Chart
    7. Battery Status Register Description
      1. 6.1 BatteryStatus (0x16)
    8. MSP430F5510 Daughterboard Schematics
    9. Setting Up the MSP430F5510 Daughterboard Hardware
      1. 8.1 JTAG FET Debugger Interface (Power Up, Program and Debug Options)
      2. 8.2 eZ430 Emulator Interface (Power Up, Program and Debug Options)
      3. 8.3 Power Stage Board (Power Up Option Only)
    10. Battery Calibration Circuit Setup
    11. 10 Battery Voltage and PWM Conversions
    12. 11 Battery Current and PWM Conversions
    13. 12 Power Stage Board Schematics (Generation 1: 40-V Input)
    14. 13 Bode Plot Measurement for Feedback Loop Stability Analysis
    15. 14 Power Stage Board Schematics (Generation 2: 60-V Input)
    16. 15 Setting Up the Power Stage Board Hardware
    17. 16 References
  2.   Revision History

Smbus_Access ( )

This function is implemented as a generic SMBus access function when the MSP430F5510 is initialized to master transmitter and receiver mode. This function handles the communication between the MSP430F5510 master and the slave bq fuel gauge device. It also assumes that the slave fuel gauge has the broadcast mode disabled.

NOTE

When using this function to write to the fuel gauge, use the Delay_Timer() function to wait for 50 to 100 ms before issuing a read or write command to the fuel gauge. This delay is necessary to give time for the data flash memory within the fuel gauge to be written without any corruption.

Function Definition

unsigned char Smbus_Access (unsigned char smbus_command, unsigned char read_write, unsigned char size_in_bytes {...}

Inputs

Name Type Description Example Value
smbus_command unsigned char One byte of SMBus command (0x00 to 0x7F). See Section 4 for a list of supported SMBus commands. SBS_CMD_VOLTAGE, SBS_CMD_CHARGING_CURRENT
read_write unsigned char Set the mode to either read data from or write data to the slave device. SMBUS_MASTER_MODE_READ, SMBUS_MASTER_MODE_WRITE
size_in_bytes unsigned char Based on the command syntax, size of the data set to be sent or received. 0x01 to 0x20
SMBus_Data_To_Slave unsigned char[] Array of data to be sent to the slave. The calling function should parse the data into byte-size elements and stuff them into this array.

Return

Name Type Description Example Value
smbus_access_status unsigned char Returns the status of whether the command was successful or not FLAG_SUCCESS=0, FLAG_FAIL=1, FLAG_NACK=2
SMBus_Data_From_Slave unsigned char[] Array of data to be received from the slave. The calling function should concatenate the byte-size elements to construct the data received.

Example Function Call

To interrogate the battery voltage through SMBus:

smbus_access_status = SMBus_Access(SBS_CMD_VOLTAGE, SMBUS_MASTER_MODE_READ, 2); // Tables for data to/from Slave Device declared with size of 32 bytes #define SMBUS_DATA_TO_SLAVE 32 //Table length unsigned char SMBus_Data_To_Slave[SMBUS_DATA_TO_SLAVE]; #define SMBUS_DATA_FROM_SLAVE 32 //Table length unsigned char SMBus_Data_From_Slave[SMBUS_DATA_FROM_SLAVE];