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.

MSP430FR2512: Cannot detect the MSP430FR2512 while programming via SPI-Bi-Wire (MSP-FET430UIF)

Part Number: MSP430FR2512
Other Parts Discussed in Thread: UNIFLASH

Hi TI Team,

We use MSP-FET430UIF to program a board with MSP430FR2512 via SPI-Bi-Wire.

We cannot flash our program using Uniflash:

[ERROR] MSP430: Error connecting to the target: Unknown device

Or CSS 8.1.0

Error connecting to the target: Unknown device.

Regards,

Walter

  • HI TI Team,

    Need your reply immediately.
    This is critical for us because we have our board.

    Regards,
  • Based from documentation of MS430 Programmer, we can use from (Figure 2-2 or Figure 2-3)?

    www.ti.com/.../slau278ad.pdf

    Figure 2-2. Signal Connections for 2-Wire JTAG Communication (Spy-Bi-Wire) Used by MSP430F2xx,
    MSP430G2xx, and MSP430F4xx Devices

    Figure 2-3. Signal Connections for 2-Wire JTAG Communication (Spy-Bi-Wire) Used by All MSP430 SBWCapable
    Devices That are Not Part of F2xx, G2xx, F4xx Families
  • As I can see cap value on reset pin is 0.1uF. It should be 1nF for reliable SBW interface with TI tools.

  • I agree with Zrno. The first thing to try here is to de-populate C9 (0.1uF). That capacitance value is about 100x to large for SBW to work properly.

    Regards,
    Walter
  • Hi Walter,

    I also noticed that you have discrete capacitors C1, C2, and C3 on your schematic connected to the touch button nets. What is the intention of these components?

    Adding capacitance to the touch sensors can degrade touch sensitivity and performance. In the self-capacitance mode, we generally don't recommend adding any discrete capacitance to the touch sensors themselves. In mutual-mode, we specify 68pF capacitors to ground on RX pins for improved noise immunity.

    Walter
  • HI Zrno,
    Yes changing the capacitance value, solves our problem regarding detection of msp430 chip. We can now
    program the chip.

    Hi Walter,
    The C1, C2, C3 capacitors are discrete capacitance our HW team have put. For our case, we are using self capacitance. So we just connect the button directly to CapTouch IO?

    Regards,
    Walter
  • Hi TI,

    We remove the capacitors, now it can generate callback when we touch the captive touch 1,2 & 3 while we load the CAPMINI-demo orig code.

    The CAPMINI-demo code, the chip is MSP430FR2512HL so IOs are configured as this.

    void BSP_configureMCU(void)
    {
    uint8_t ui8LFOsc = DEFAULT_OSC_SELECTION;

    #if (DEFAULT_OSC_SELECTION == CS_REFOCLK_SELECT)
    //
    // Re-map EUSCI A0 pins to secondary locations
    // This frees up CapTIvate IOs.
    // If XT1 is used (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT),
    // Do not remap EUSCI A0, as XT1 needs those pins.
    // Keep the original muxing in that case.
    //
    SYSCFG3 |= USCIARMP;
    #endif

    //
    // Re-map EUSCI B0 pins to secondary locations
    // This frees up CapTIvate IOs
    //
    SYSCFG2 |= USCIBRMP;

    // P1.0: OUTPUT LOW
    // P1.1: OUTPUT LOW
    // P1.2: OUTPUT LOW
    // P1.3: OUTPUT LOW
    // P1.4: UCA0 UART TXD if (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT), else OUTPUT LOW
    // P1.5: UCA0 UART RXD if (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT), else OUTPUT LOW
    // P1.6: OUTPUT LOW
    // P1.7: OUTPUT LOW
    #if (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT)
    P1OUT = (0);
    P1DIR = (GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 = (GPIO_PIN4 | GPIO_PIN5);
    P1SEL1 = (0);
    #else
    P1OUT = (0);
    P1DIR = (GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);
    P1SEL0 = (0);
    P1SEL1 = (0);
    #endif

    // P2.0: UCA0 UART TXD if (DEFAULT_OSC_SELECTION == CS_REFOCLK_SELECT), else XOUT
    // P2.1: UCA0 UART RXD if (DEFAULT_OSC_SELECTION == CS_REFOCLK_SELECT), else XIN
    // P2.2: SYNC (SET OUTPUT LOW UNLESS USED)
    // P2.3: OUTPUT LOW
    // P2.4: IRQ (OPEN DRAIN), set high to start
    // P2.5: UCB0 I2C SDA
    // P2.6: UCB0 I2C SCL
    #if (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT)
    P2OUT = (GPIO_PIN4);
    P2DIR = (GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4);
    P2SEL0 = (0);
    P2SEL1 = (GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN5 | GPIO_PIN6);
    #else
    P2OUT = (0);
    P2DIR = (GPIO_PIN2 | GPIO_PIN3 | GPIO_PIN4);
    P2SEL0 = (GPIO_PIN0 | GPIO_PIN1);
    P2SEL1 = (GPIO_PIN5 | GPIO_PIN6);
    #endif

    //
    // Clear port lock
    //
    PM5CTL0 &= ~LOCKLPM5;

    // Configure FRAM wait state (set to 1 to support 16MHz MCLK)
    FRAMCtl_configureWaitStateControl(FRAMCTL_ACCESS_TIME_CYCLES_1);

    #if (DEFAULT_OSC_SELECTION == CS_XT1CLK_SELECT)
    //
    // Attempt to start the low frequency crystal oscillator
    //
    CS_setExternalClockSource(XT1_OSC_FREQ);
    if (CS_turnOnXT1LFWithTimeout(CS_XT1_DRIVE_0, XT1_OSC_TIMEOUT) == STATUS_FAIL)
    {
    //
    // If a crystal is not present or is failing, switch the LF
    // clock definition to the internal 32kHz reference oscillator.
    //
    ui8LFOsc = CS_REFOCLK_SELECT;
    }
    #endif

    //
    // Initialize Clock Signals
    //
    CS_initClockSignal(CS_FLLREF, ui8LFOsc, CS_CLOCK_DIVIDER_1);
    CS_initClockSignal(CS_ACLK, ui8LFOsc, CS_CLOCK_DIVIDER_1);
    CS_initClockSignal(CS_MCLK, CS_DCOCLKDIV_SELECT, CS_CLOCK_DIVIDER_1);
    CS_initClockSignal(CS_SMCLK, CS_DCOCLKDIV_SELECT, CS_CLOCK_DIVIDER_8);

    //
    // Tune the DCO parameters
    //
    CS_initFLL((MCLK_FREQ/1000), FLL_RATIO);
    CS_clearAllOscFlagsWithTimeout(1000);
    }


    Our final board will be MSP430FR2512PW16, what are the changes needed to do in config. I only want to on/off IO everytime there is a touch from 3 channels?

    Regards,
    Walter
  • So, essentially you would like to have the 3 buttons control the state of 3 digital I/O outputs?  Looking at your schematic, do you want the BTN_CTL_1, BTN_CTL_2, and BTN_CTL_3 nets (P1.1, P1.0, and P1.2, respectively) to be controlled directly based on the touch detection state for IN0, IN1, and IN2?

    Walter

  • HI Walter,

    Thanks, we figured out how to do.

    Regards,

  • Great, glad to hear it.

    A good reference for how-to's in the software library can be found in our tech guide here:

    Regards,
    Walter

**Attention** This is a public forum