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.

TM4C129XKCZAD: I2C0 POR Default

Part Number: TM4C129XKCZAD

Hi team,

As we are looking to migrate from TM4C123x to the TM4C129x, we see that on the TM4C129x device, no longer does PB[3:2] (or any other pins) have I2C0 as its default function upon POR. We are looking to use I2C0 to load the flash from the boot loader. How do we set the PB[3:2] pins to be I2C0 if they do not default set as I2C0 functionality upon POR if there is nothing in flash? Does that mean that I2C0 cannot be used to load the flash?

From p. 9 of Differences Between Tiva™ C Series TM4C Microcontrollers Application Report (http://www.ti.com/lit/an/spma065/spma065.pdf):

From p. 774 of TM4C129XKCZAD datasheet (http://www.ti.com/lit/ds/symlink/tm4c129xkczad.pdf): 

Regards,

Akash

  • Hi Akash,

     Please refer to the datasheet for default state on PB[3:2] below. 

  • Hi Charles,

    Which page in which datasheet are you seeing that table?

    In the TM4C129XKCZAD datasheet (p. 811), I am seeing the following table:

    Regards,

    Akash Patel

  • Hi Akash,

     Sorry, I looked up the wrong datashhet (TM4C123).  In any case the ROM based bootloader support I2C0 as the communication interface to download your firmware if the flash is empty. In another word the ROM based bootloader will setup the I2C0 after POR. See below excerpt from the Bootloader user's guide.

    The Texas Instruments® Tiva® boot loader is a small piece of code that can be programmed at the

    beginning of flash to act as an application loader as well as an update mechanism for applications

    running on a Tiva ARM® Cortex™-M4-based microcontroller. The boot loader can be built to use

    either the UART, SSI, I2C, CAN, Ethernet, or USB ports to update the code on the microcontroller.

    The boot loader is customizable via source code modifications, or simply deciding at compile time

    which routines to include. Since full source code is provided, the boot loader can be completely

    customized.

    Note:

    For UART, I2C and SSI the ROM boot loader is fixed for UART0, I2C0 and SSI0. If the application

    uses any other instance of the peripheral, then it must be loaded into the flash by an

    emulator.

  • Hi Charles,

    From my understanding, the TIVA Bootloader is flash based and different from the ROM Bootloader.

    Can you provide a flow of how this will work on POR if we want to use I2C0 to update the flash? What will be assigning the PB[3:2] pins the I2C0 functionality?

    Regards,
    Akash
  • Hello Akash,

    The ROM Bootloader will configure the I2C pins automatically. As long as the Flash is empty and the ROM Bootloader is invoked, the device will have the correct configurations for the I2C pins to allow for I2C bootloader operations.
  • Also refer to the serial interface bootloader app note.

    Below is the excerpt.

    The TM4C12x family of devices and TivaWare™ from Texas Instruments integrates serial bootloaders

    with the following features:

    • ROM-based serial bootloader for UART0, I2C0, SSI0, USB0 and Ethernet (Ethernet is supported on

    TM4C129x device family only)

    • Flash-based serial bootloader source code that is fully customizable by the end user for UART, I2C,

    SSI, USB, CAN and Ethernet (Ethernet is supported on TM4C129x device family only).