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_Initialize ( )

This function initializes the I2C USCI module within the MSP430F5510 for SMBus communication.

  • Uses SMCLK as synchronous clock source to operate SMBus clock (SCL) at approximately 100 kHz.
  • Can configure the MSP430F5510 to act in master or slave mode. The master mode is useful when only the MSP430F5510 interrogates the fuel gauge; the slave mode is useful when the battery is setup in Broadcast Mode.
  • Master and slave addresses for the MSP430F5510 are defined in the header file smbus.h

Function Definition

void SMBus_Initialize (unsigned char SMBus_Mode) {...}

Inputs

Name Type Description Example Value
SMBus_Mode unsigned char Option to configure the MSP430F5510 in SMBus master or SMBus slave mode. SMBUS_MASTER_MODE, SMBUS_SLAVE_MODE

Return

None

Example Function Call

To configure the MSP430F5510 in master mode:

SMBus_Initialize SMBUS_MASTER_MODE);

The function uses a structure to map the MSP430F5510 port pins to the 1-to-2 demux (to prevent SMBus signal collision) and the SMBus clock and data Lines.

Structure Definition Name

SMBusDescription_t

Parameters

Name Type Description Example Value
PortChanDir unsigned int Address of the port direction register connected to the 1-to-2 demux. This register controls the input or output capability of the port. P4DIR_ADDR
PortChanOut unsigned int Address of the port output register connected to the 1-to-2 demux. This register controls the on or off state of the output. P4OUT_ADDR
PortChanBit unsigned int Bit of the port connected to the 1-to-2 demux (value can range from 0 to 15) BIT0, BIT1, ..., BITF
PortComAddr unsigned int Address of the port select register connected to the I2C USCI lines for SMBus. P6SEL_ADDR
PortComBitData unsigned int Bit of the port connected to the data line of the I2C USCI module (value can range from 0 to 15) BIT0, ...,BITF
PortComBitClock unsigned int Bit of the port connected to the clock line of the I2C USCI module (value can range from 0 to 15) BIT0, ...,BITF

Example Structure Declaration

For the SMBus channel select pin on P4.0 and SMBus communication lines SDA on P4.1 and SCL on P4.2:

// Constant defined in header file #define SMBUS_DEFAULT_STATE {P4DIR_ADDR, P4OUT_ADDR, BIT8, P4SEL_ADDR, BIT9, BITA} // Declaration in source code file SMBusDescription_t SMBus = SMBUS_DEFAULT_STATE;