This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP432E411Y: FW Update from Windows Host via I2C Bootloader

Expert 3740 points
Part Number: MSP432E411Y

Tool/software:

Hi team, 

Customer is using MSP432E411YTZAD on their board with an I2C connection between the MCU and their Back End board (host of I2C/SMB). The I2C bootloader signals are connected to PB2/PB3 pins as shown in Table1 of BSL User's Guide and in their source code, the definition of PB2 and PB3 are default. They would like to do FW updates using these I2C signals (without using JTAG/J-Link) but aren't sure how to boot the BSL.

Given this, could you advise on the process to enable I2C bootloader function? I have requested they share their schematic and source code to check what they've implemented so far. 

Best,

Luke

  • Hi,

      Please refer to the i2c bootloader example in C:\ti\BSL-Scripter\ScriptExampleWindows\E4xx_i2c for MSP432E.  Run the script_1.txt, script_2.txt and script_3.txt BSL scripter download firmware via I2C0.

      The I2C bootloader source code and configuration (bl_config.h) can be found at C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\nortos\MSP_EXP432E401Y\boot_loader\boot_serial_i2c_flash.

     As you can see in the bl_config.h (see below snippet) for the boot_serial_i2c_flash example, the I2C0 is used and the PB2 is used for SCL and PB3 is used for SDA. 

    //*****************************************************************************
    //
    // Selects the base address of the I2C peripheral module
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_CLOCK_ENABLE
    //
    //*****************************************************************************
    #define I2Cx I2C0

    //*****************************************************************************
    //
    // Selects the clock enable for the GPIO corresponding to I2C SCL pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SCLPIN_BASE, I2C_SCLPIN_PCTL and I2C_SCLPIN_POS
    //
    //*****************************************************************************
    #define I2C_SCLPIN_CLOCK_ENABLE SYSCTL_RCGCGPIO_R1

    //*****************************************************************************
    //
    // Selects the base address for the GPIO corresponding to I2C SCL pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SCLPIN_CLOCK_ENABLE, I2C_SCLPIN_PCTL and I2C_SCLPIN_POS
    //
    //*****************************************************************************
    #define I2C_SCLPIN_BASE GPIOB

    //*****************************************************************************
    //
    // Selects the port control value for the GPIO corresponding to I2C SCL pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SCLPIN_CLOCK_ENABLE, I2C_SCLPIN_BASE and I2C_SCLPIN_POS
    //
    //*****************************************************************************
    #define I2C_SCLPIN_PCTL 0x2

    //*****************************************************************************
    //
    // Selects the pin number for the GPIO corresponding to I2C SCL pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SCLPIN_CLOCK_ENABLE, I2C_SCLPIN_BASE and I2C_SCLPIN_PCTL
    //
    //*****************************************************************************
    #define I2C_SCLPIN_POS 2

    //*****************************************************************************
    //
    // Selects the clock enable for the GPIO corresponding to I2C SDA pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SDAPIN_BASE, I2C_SDAPIN_PCTL and I2C_SDAPIN_POS
    //
    //*****************************************************************************
    #define I2C_SDAPIN_CLOCK_ENABLE SYSCTL_RCGCGPIO_R1

    //*****************************************************************************
    //
    // Selects the base address for the GPIO corresponding to I2C SDA pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SDAPIN_CLOCK_ENABLE, I2C_SDAPIN_PCTL and I2C_SDAPIN_POS
    //
    //*****************************************************************************
    #define I2C_SDAPIN_BASE GPIOB

    //*****************************************************************************
    //
    // Selects the port control value for the GPIO corresponding to I2C SDA pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SDAPIN_CLOCK_ENABLE, I2C_SDAPIN_BASE and I2C_SDAPIN_POS
    //
    //*****************************************************************************
    #define I2C_SDAPIN_PCTL 0x2

    //*****************************************************************************
    //
    // Selects the pin number for the GPIO corresponding to I2C SDA pin
    //
    // Depends on: I2C_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: I2C_SDAPIN_CLOCK_ENABLE, I2C_SDAPIN_BASE and I2C_SDAPIN_PCTL
    //
    //*****************************************************************************
    #define I2C_SDAPIN_POS 3