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.

TMDSCNCD28P55X: Issue with LED Blink Project on TMDSCNCD28P55X Control Card

Part Number: TMDSCNCD28P55X
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Hello TI Team,

I am currently using the TMDSCNCD28P55X control card for development purposes.

I encountered an issue when importing the LED blink project located at:

C:\ti\c2000\C2000Ware_5_05_00_00\device_support\f28p55x\examples\led

into Code Composer Studio (CCS). The project imports successfully, and when I debug the code step-by-step, it works as expected. However, when I run the code continuously, I am unable to track its execution. I have attached a video showing the debugging behavior for your reference.

Below are the versions of the tools I am using:

  • CCS Version: 20.2.0.12__1.8.0

  • C2000Ware Version: 5.05.00.00

Please let me know if there’s anything I might be missing or if you have any suggestions to resolve this issue.

//#############################################################################
//
// FILE:   led_ex1_blinky.c
//
// TITLE:  LED Blinky Example
//
//! \addtogroup bitfield_example_list
//! <h1> LED Blinky Example </h1>
//!
//! This example demonstrates how to blink a LED.
//!
//! \b External \b Connections \n
//!  - None.
//!
//! \b Watch \b Variables \n
//!  - None.
//!
//
//#############################################################################
//
//
// 
// C2000Ware v5.05.00.00
//
// Copyright (C) 2024 Texas Instruments Incorporated - http://www.ti.com
//
// Redistribution and use in source and binary forms, with or without 
// modification, are permitted provided that the following conditions 
// are met:
// 
//   Redistributions of source code must retain the above copyright 
//   notice, this list of conditions and the following disclaimer.
// 
//   Redistributions in binary form must reproduce the above copyright
//   notice, this list of conditions and the following disclaimer in the 
//   documentation and/or other materials provided with the   
//   distribution.
// 
//   Neither the name of Texas Instruments Incorporated nor the names of
//   its contributors may be used to endorse or promote products derived
//   from this software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// $
//#############################################################################

//
// Included Files
//
#include "f28x_project.h"

//
// Defines
//
#define DEVICE_GPIO_PIN_LED1    31

//
// Main
//
void main(void)
{
    //
    // Initialize device clock and peripherals
    //
    InitSysCtrl();

    //
    // Initialize GPIO and configure the GPIO pin as a push-pull output
    //
    InitGpio();
    GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED1, GPIO_MUX_CPU1, 0);
    GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED1, GPIO_OUTPUT, GPIO_PUSHPULL);

    //
    // Initialize PIE and clear PIE registers. Disables CPU interrupts. 
    //
    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    //
    InitPieVectTable();

    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;

    //
    // Loop Forever
    //
    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 0);

        //
        // Delay for a bit.
        //
        DELAY_US(500000);

        //
        // Turn off LED
        //
        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 1);

        //
        // Delay for a bit.
        //
        DELAY_US(500000);
    }
}

//
// End of File
//

  • Hi,

    I have a couple of clarifying questions:

    The project imports successfully, and when I debug the code step-by-step, it works as expected

    Does the the example fully work if you step through each line of code (LEDs are able to blink) instead of continuously running?

    C:\ti\c2000\C2000Ware_5_05_00_00\device_support\f28p55x\examples\led

    Do you observe the same issue if you try using the LED blink example located at: C:\ti\c2000\C2000Ware_5_05_00_00\driverlib\f28p55x\examples\led

    Best,

    Matt

  •  Does the the example fully work if you step through each line of code (LEDs are able to blink) instead of continuously running?

    No, the code is not traceable. I’m getting the following error:
    "Source file 'boot28.asm' was not found", and the LED is not blinking.

    I’ve attached a screen recording of the debugging session for your reference.

     Do you observe the same issue if you try using the LED blink example located at: C:\ti\c2000\C2000Ware_5_05_00_00\driverlib\f28p55x\examples\led

    I get same issue in LED blink example located at: C:\ti\c2000\C2000Ware_5_05_00_00\driverlib\f28p55x\examples\led.

    Thank for support

    Rambabu Singh

  • Hello,

    I believe the issue lies with the device_cal() function call in f28p55x_sysctrl.c. Are you using REV0 silicon (is there an XF28P550... on the package)?

    The device_cal function address is different for various revisions of the F28P55x device. If the revision ID (at address 0x5D00C) is "1", then define REV_ID as a pre-defined symbol in the project properties:

    • "--define=REV_ID=1" corresponds to REV0
    • "--define=REV_ID=2" corresponds to REVA
      • This is the default value in the package, no symbol is required
    Best,
    Matt