Part Number: MSP430F5438A
Our design is using the MSP430F5438A and we are using Code Composer Studio (CCS) for the IDE.
The design requires firmware updates over I2C. We have decided to use the TI provided BSL code (downloaded as a zip file) which contains the necessary files to get started.
The design is using UCB0 P3.1 and P3.2. Below are the settings used to define the PORT and PINS.
|
BSL_Device_File.h |
|
... /* Device Specific Definitions */
#define UCZNCTL1 UCB0CTL1
#define PROGRAMMING_FUNCTIONS #ifdef PROGRAMMING_FUNCTIONS ... |
Below is the code from PI_init() and Assigned register values after executing the code.

Using a JTAG, I can download the BSL and step through the code (CCS debugger) up to the function PI_receivePacket() in file BSL430_PT_USCIB_I2C.c where the code is waiting for an I2C Start Condition (checking for changes in UCZIV).
|
BSL430_PI_USCIB_I2C.c |
|
char PI_receivePacket() while (RX_StatusFlags == RX_PACKET_ONGOING) ... |
We are invoking the BSL using the code provided in the documentation:
| __disable_interrupt(); /* disable interrupts */ ((void (*)())0x1000)(); /* jump to BSL */ |
I even added an LED to light up when the BSL has been invoked...
Do the registers and code segments above look correct?
The issue:
To test the design we are using another MSP430F5438A to communicate to the BSL slave above over I2c using slave address 0x48. For some reason we never get a Start Condition.
- I have tried adding another LED to toggle when the start condition is received, but nothing happens.
- I have tried using two computers with 2 JTAGs one for the master and one to debug the BSL code using a breakpoint in the switch statements START condition, but nothing happens.
Note: Before the BSL is invoked the 2 microcontrollers communicate over I2C without issue sending messages back and forth. One of the messages calls the code to invoke the BSL.
If the register settings and code shown above are correct, what are some things I can check/verify next?
Once I can get the BSL to recognize the Start condition - the rest will just be getting the protocol worked out (password, etc.)