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

LED_Init ( )

This function configures all of the port bits connected to the LEDs to output direction and initializes all LEDs to off state.

Function Definition

void LED_Init(void) {...}

Inputs

None

Return

None

Example Function Call

LED_Init();

The function uses a structure to map the MSP430F5510 port pins to the LEDs. To allow multiple LEDs to blink at different intervals, virtual timer counters are used to keep track of the time-out duration. This structure declaration keeps track of the virtual count for each LED as well as the time-out duration.

Structure Definition Name

LEDDescription_t

Name Type Description Example Value
PortOutAddr unsigned int Address of the Port Out Register of the LED control output. This register controls the on/off state of the output. P2OUT_ADDR
PortDirAddr unsigned int Address of the Port Direction Register. This register controls the input/output capability of the port. P2DIR_ADDR
PortBit unsigned int Bit of the Port (value can range from 0 to 15) BIT0, BIT1, ..., BITF
LEDVirtualTimer (1) unsigned char Virtual Timer keeps tracks of timer ticks before time-out expires and LED is toggled. 0
LEDBlinkPeriod (1) unsigned char This parameter contains the time-out period that the virtual timer starts counting down from. This parameter is used to adjust the LED blink rate. 0
The parameters LEDVirtualTimer and LEDBlinkPeriod are initialized to zero and are used by the LED_Control function to set the blink period/timer value based on the user’s input for that particular LED. Initializing these parameters to non-zero values can cause the LEDs to function improperly.

Example Structure Declaration

For a case with two LEDs on P2.0 and P2.1:

// Constant defined in header file #define LED_DEFAULT_STATE { { P2OUT_ADDR, P2DIR_ADDR, BIT0, 0, 0 }, { P2OUT_ADDR, P2DIR_ADDR, BIT1, 0, 0 } } // Declaration in source code file LEDDescription_t LEDs[2] = LED_DEFAULT_STATE;