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.

CCS / LAUNCHXL-CC1312R1: about CCS generates the correct HEX file

Part Number: LAUNCHXL-CC1312R1
Other Parts Discussed in Thread: UNIFLASH

Tool/software: Code Composer Studio

Hi Team,

SDK:simplelink_cc13x2_26x2_sdk_4_20_00_35

example:rfPacketTx

 I added wireless data transmission and wireless data reception to the program.

 After receiving the specified data packet, it enters low power consumption.

 I tested 5 devices and tested it many times after powering on again. The phenomenon is that when flash programmer 2 is used to burn the .out/.hex,

 low power consumption could not be entered. But low power consumption can be entered by using CCS load.

 I want to know the difference between CCS load and flash programmer 2.

 Can you help to check it?

codes I eidit:

/*
 * Copyright (c) 2019, Texas Instruments Incorporated
 * All rights reserved.
 *
 * 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.
 */

/***** Includes *****/
/* Standard C Libraries */
#include <stdlib.h>
#include <unistd.h>

/* TI Drivers */
#include <ti/drivers/rf/RF.h>
#include <ti/drivers/PIN.h>
#include <ti/drivers/pin/PINCC26XX.h>
#include <ti/drivers/UART.h>
#include <ti/drivers/SPI.h>
/* Driverlib Header files */
#include DeviceFamily_constructPath(driverlib/rf_prop_mailbox.h)

/* Board Header files */
#include "ti_drivers_config.h"
#include "RFQueue.h"
#include <ti_radio_config.h>

#include "de_bug.h"
#include "ebyte_mx25r2035f.h"
/***** Defines *****/

static void callback(RF_Handle h, RF_CmdHandle ch, RF_EventMask e);

/* Receive dataQueue for RF Core to fill in data */
static dataQueue_t dataQueue;
static rfc_dataEntryGeneral_t* currentDataEntry;
static uint8_t packetLength;
static uint8_t receLenth;
static uint8_t* packetDataPointer;
/* Packet RX Configuration */
#define DATA_ENTRY_HEADER_SIZE 8  /* Constant header size of a Generic Data Entry */
#define MAX_LENGTH             30 /* Max length byte the radio will accept */
#define NUM_DATA_ENTRIES       2  /* NOTE: Only two data entries supported at the moment */
#define NUM_APPENDED_BYTES     2  /* The Data Entries data field will contain:
                                   * 1 Header byte (RF_cmdPropRx.rxConf.bIncludeHdr = 0x1)
                                   * Max 30 payload bytes
                                   * 1 status byte (RF_cmdPropRx.rxConf.bAppendStatus = 0x1) */

/* Buffer which contains all Data Entries for receiving data.
 * Pragmas are needed to make sure this buffer is 4 byte aligned (requirement from the RF Core) */
#if defined(__TI_COMPILER_VERSION__)
#pragma DATA_ALIGN (rxDataEntryBuffer, 4);
static uint8_t
rxDataEntryBuffer[RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(NUM_DATA_ENTRIES,
                                                  MAX_LENGTH,
                                                  NUM_APPENDED_BYTES)];
#elif defined(__IAR_SYSTEMS_ICC__)
#pragma data_alignment = 4
static uint8_t
rxDataEntryBuffer[RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(NUM_DATA_ENTRIES,
                                                  MAX_LENGTH,
                                                  NUM_APPENDED_BYTES)];
#elif defined(__GNUC__)
static uint8_t
rxDataEntryBuffer[RF_QUEUE_DATA_ENTRY_BUFFER_SIZE(NUM_DATA_ENTRIES,
                                                  MAX_LENGTH,
                                                  NUM_APPENDED_BYTES)]
                                                  __attribute__((aligned(4)));
#else
#error This compiler is not supported.
#endif

/* Packet TX Configuration */
#define PAYLOAD_LENGTH      10
#ifdef POWER_MEASUREMENT
#define PACKET_INTERVAL     5  /* For power measurement set packet interval to 5s */
#else
#define PACKET_INTERVAL     500000  /* Set packet interval to 500000us or 500ms */
#endif

uint8_t RecevFlag = 0;
/***** Prototypes *****/

/***** Variable declarations *****/
UART_Handle uart;
UART_Params uartParams;
#define     OPEN_USART_IDLE         UART_CMD_RESERVED + 0    //UARTCC26XX_CMD_RETURN_PARTIAL_DISABLE


static RF_Object rfObject;
static RF_Handle rfHandle;
RF_Params rfParams;
static RF_CmdHandle rf_cmdhandle = NULL;

/* Pin driver handle */
//static PIN_Handle ModePinHandle;
//static PIN_State ModePinState;
//
//static PIN_Handle LEDPinHandle;
//static PIN_State LEDPinState;
//
//static PIN_Handle LEDConnectPinHandle;
//static PIN_State LEDConnectPinState;

/*   pin test */
static PIN_Handle testPinHandle1;
static PIN_State testPinState1;

static PIN_Handle testPinHandle2;
static PIN_State testPinState2;


static PIN_Handle testPinHandle3;
static PIN_State testPinState3;

static PIN_Handle testPinHandle4;
static PIN_State testPinState4;



static uint8_t power_packet[PAYLOAD_LENGTH] =  {1,2,3,4,5,6,7,8,9,0};

static uint8_t trans_packet[PAYLOAD_LENGTH] = {0,9,8,7,6,5,4,3,2,1};

static uint8_t recePacket[PAYLOAD_LENGTH] = {2,11,10,9,8,7,6,5,4,3};
static uint8_t checkPacket[PAYLOAD_LENGTH];
//static uint8_t packet[PAYLOAD_LENGTH] =    {6,6,6,6,6,6,6,6,6,6,
//                                            5,5,5,5,5,5,5,5,5,5,
//                                            4,4,4,4,4,4,4,4,4,4};


///* PA Pin */
//#define     PA_CPS_PIN      PIN_ID(7)
//#define     PA_CSD_PIN      PIN_ID(5)
//#define     PA_CTX_PIN      PIN_ID(6)
//
///* Mode Pin */
//#define     Mode_Sel_PIN    PIN_ID(4)

///* LED Pin */
//#define     LED_PIN_1           PIN_ID(1)
//#define     LED_CONNECT_PIN_30  PIN_ID(30)



//PIN_Config ModepinTable[] =
//{
//     Mode_Sel_PIN |  PIN_INPUT_EN | PIN_PULLUP,
//     PIN_TERMINATE
//};
//
//PIN_Config LEDpinTable[] =
//{
//     LED_PIN_1 |  PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
//     PIN_TERMINATE
//};

//PIN_Config LEDConnectpinTable[] =
//{
// LED_CONNECT_PIN_30 |  PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
//     PIN_TERMINATE
//};


/* pin test */

PIN_Config testPinTable1[] = {
            Pin_19  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_1   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_20  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_2   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_21  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_3   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_22  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_4  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_23  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_5   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_24  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_6  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_25  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_7  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_26  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_8  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_27  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_9  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_28  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_10  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_29  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_16  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_30  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_17  |  PIN_INPUT_EN | PIN_NOPULL,

            //add pin test
            Pin_14  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_11  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_15  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_13  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_18  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_12  |  PIN_INPUT_EN | PIN_NOPULL,

            PIN_TERMINATE

};

//second
PIN_Config testPinTable2[] = {
          Pin_19  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_1   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_20  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_2   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_21  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_3   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_22  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_4  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_23  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_5  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_24  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_6  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_25  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_7  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_26  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_8  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_27  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_9  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_28  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_10  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_29  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_16  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_30  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_17  |  PIN_INPUT_EN | PIN_PULLUP,

          //add pin test
            Pin_14  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_11  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_15  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_13  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_18  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_12  |  PIN_INPUT_EN | PIN_NOPULL,

          PIN_TERMINATE
};


PIN_Config testPinTable3[] = {
            Pin_1  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_19   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_2  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_20   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_3  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_21   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_4  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_22  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_5  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_23   |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_6  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_24  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_7  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_25  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_8  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_26  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_9  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_27  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_10  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_28  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_16  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_29  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_17  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_30  |  PIN_INPUT_EN | PIN_NOPULL,

            //add pin test
            Pin_11  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_14  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_13  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_15  |  PIN_INPUT_EN | PIN_NOPULL,

            Pin_12  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
            Pin_18  |  PIN_INPUT_EN | PIN_NOPULL,

            PIN_TERMINATE

};


PIN_Config testPinTable4[] = {
          Pin_1  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_19   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_2  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_20   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_3  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_21   |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_22  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_4  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_23  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_5  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_24  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_6  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_25  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_7  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_26  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_8  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_27  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_9  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_28  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_10  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_29  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_16  |  PIN_INPUT_EN | PIN_PULLUP,

          Pin_30  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_17  |  PIN_INPUT_EN | PIN_PULLUP,

          //add pin test
          Pin_11  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_14  |  PIN_INPUT_EN | PIN_NOPULL,

          Pin_13  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_15  |  PIN_INPUT_EN | PIN_NOPULL,

          Pin_12  | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MAX,
          Pin_18  |  PIN_INPUT_EN | PIN_NOPULL,

          PIN_TERMINATE
};


// Reads the input pin level for the first time
uint32_t readPin1[] =
{
     Pin_19, Pin_20, Pin_21, Pin_22,
     Pin_23, Pin_24, Pin_25, Pin_26,
     Pin_27, Pin_28, Pin_29, Pin_30,
     Pin_14, Pin_15, Pin_18
};


//Reads the second input pin level
uint32_t readPin2[] =
{
     Pin_1, Pin_2, Pin_3, Pin_4,
     Pin_5, Pin_6, Pin_7, Pin_8,
     Pin_9, Pin_10, Pin_16, Pin_17,
     Pin_11,Pin_13, Pin_12
};


void IO_Test(void)
{
    uint8_t count1=0;
    uint8_t pinTestCount = 15;
    testPinHandle1 = PIN_open(&testPinState1, testPinTable1);  //30 - 8
    if(!testPinHandle1)
    {
        while(1);
    }
    usleep(5000);
    for(count1 =0; count1 < pinTestCount; count1++)
    {
     if(PIN_getInputValue(readPin2[count1]) != (count1%2))        //第一种引脚分配方式的输入输出值是否正确
     {
         while(1);
     }
    }
    PIN_close(testPinHandle1);                                     //关闭第一组引脚配置

    //pin test 2
    testPinHandle2 = PIN_open(&testPinState2, testPinTable2);  //30 - 8
    if(!testPinHandle2)
    {
       while(1);
    }
    usleep(5000);
    for(count1 = 0; count1 < pinTestCount; count1++)
    {
       if(PIN_getInputValue(readPin2[count1]) != ((count1+1)%2))
       {
           while(1);
       }
    }
    PIN_close(testPinHandle2);

    //pin test 3
    testPinHandle3 = PIN_open(&testPinState3, testPinTable3);  //30 - 8
    if(!testPinHandle3)
    {
       /* Error initializing board LED pins */
       while(1);
    }
    usleep(5000);
    for(count1 =0; count1 < pinTestCount; count1++)
    {

       if(PIN_getInputValue(readPin1[count1]) != (count1%2))
       {
           while(1);
       }
    }
    PIN_close(testPinHandle3);


    //pin test 4
    testPinHandle4 = PIN_open(&testPinState4, testPinTable4);
    if(!testPinHandle4)
    {
       while(1);
    }
    usleep(5000);
    for(count1 = 0; count1 < pinTestCount; count1++)
    {
       if(PIN_getInputValue(readPin1[count1]) != ((count1+1)%2))
       {
           while(1);
       }
    }
    PIN_close(testPinHandle4);

}



void UART_ConfigInit(void)
{
    UART_Params_init(&uartParams);

    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_RETURN_FULL;
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.baudRate = 115200;

    uart = UART_open(CONFIG_UART_0, &uartParams);
    if (uart == NULL) {
        while (1);
    }
    /* Command used by UART_control to enable partial return. */
    /*if auto send ,can delete */
    UART_control(uart,OPEN_USART_IDLE,NULL);
}



/***** Function definitions *****/
uint8_t randomTime;
uint8_t randomCount = 50;     //433 send packet count  send 45 packet about 3s

uint32_t TX_MODE = 1;

////865 890 915 928 MHz
//uint16_t va_fre_setting[4] = {0x0361,0x037A,0x0393,0x03A0};

uint8_t v_fre_count = 1;
uint16_t va_fre_setting[4] = {0x0361,0x0375,0x0389,0x03A0};    //865 885 905 928 MHz

void RF_ConfigInit(void)   //para different
{
    RF_Params_init(&rfParams);
       /* RF Tx */
       RF_cmdPropTx.pktLen = PAYLOAD_LENGTH;
       RF_cmdPropTx.pPkt = power_packet;
       RF_cmdPropTx.startTrigger.triggerType = TRIG_NOW;

       /* RF Rx */
       if( RFQueue_defineQueue(&dataQueue,
                                  rxDataEntryBuffer,
                                  sizeof(rxDataEntryBuffer),
                                  NUM_DATA_ENTRIES,
                              MAX_LENGTH + NUM_APPENDED_BYTES))
      {
          /* Failed to allocate space for all data entries */
          while(1);
      }

      /* Modify CMD_PROP_RX command for application needs */
      /* Set the Data Entity queue for received data */
      RF_cmdPropRx.pQueue = &dataQueue;
      /* Discard ignored packets from Rx queue */
      RF_cmdPropRx.rxConf.bAutoFlushIgnored = 1;
      /* Discard packets with CRC error from Rx queue */
      RF_cmdPropRx.rxConf.bAutoFlushCrcErr = 1;
      /* Implement packet length filtering to avoid PROP_ERROR_RXBUF */
      RF_cmdPropRx.maxPktLen = MAX_LENGTH;
      RF_cmdPropRx.pktConf.bRepeatOk = 1;
      RF_cmdPropRx.pktConf.bRepeatNok = 1;
}

void CC1352_Enter_Rx(void)
{
    RF_flushCmd(rfHandle,rf_cmdhandle,0);
    RF_close(rfHandle);
    /* Request access to the radio */
    rfHandle = RF_open(&rfObject, &RF_prop,
                       (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);

    /* Set the frequency */
    RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);

    rf_cmdhandle = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropRx, RF_PriorityNormal, \
                              &callback, RF_EventRxEntryDone);     //最后的参数

}







#define     AUTO_SEND   1
#define     UART_SEND   0
#define     PIN_TEST    1


void *mainThread(void *arg0)
{
    usleep(200000);
    IO_Test();

    UART_init();
    UART_ConfigInit();
    RF_ConfigInit();

    UART_write(uart, "hi uart", sizeof("hi uart"));

    //865 885 905 928 MHz
    //uint16_t va_fre_setting[4] = {0x0361,0x0375,0x0389,0x03A0};

    RF_cmdPropRadioDivSetup.centerFreq = 0x0384;    //900Mhz
    rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);
    if(rfHandle == NULL)
    {
       while(1);
    }

    while(1)
    {

       /**********************add send power (905Mhz:13.3dBm)*****************************/

        RF_cmdFs.frequency = 0x0384;    //900Mhz
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);    //modify RF_runCmd->RF_postCmd

        for(randomTime = 0; randomTime < randomCount; randomTime++)
        {
            RF_EventMask terminationReason = RF_runCmd(rfHandle, (RF_Op*)&RF_cmdPropTx,
                                                       RF_PriorityNormal, NULL, 0 );   //last Param  RF_EventTxDone->0 cause SDK is 0
            switch(terminationReason)
            {
            case RF_EventLastCmdDone:

                break;
            default :
                while(1);
            }
            usleep(20000);
        }
        RF_close(rfHandle);

        /* Trans test */
        RF_cmdPropTx.pPkt = trans_packet;
        RF_cmdPropRadioDivSetup.centerFreq = 0x0375;    //885MHz
        rfHandle = RF_open(&rfObject, &RF_prop, (RF_RadioSetup*)&RF_cmdPropRadioDivSetup, &rfParams);
        if(rfHandle == NULL)
        {
        while(1);
        }
        RF_cmdFs.frequency = 0x0375;    //885MHz
        RF_runCmd(rfHandle, (RF_Op*)&RF_cmdFs, RF_PriorityNormal, NULL, 0);    //modify RF_runCmd->RF_postCmd
        rf_cmdhandle = RF_postCmd(rfHandle, (RF_Op*)&RF_cmdPropTx,
                                                 RF_PriorityNormal, NULL, 0 );   //last Param  RF_EventTxDone->0 cause SDK is 0
        if(rf_cmdhandle ==  RF_ALLOC_ERROR)   //can remove up
       {
           while(1);
       }

        RF_EventMask terminationReason = RF_pendCmd(rfHandle,rf_cmdhandle,RF_EventTxDone );

        CC1352_Enter_Rx();

        while(1)
        {
            if(RecevFlag == 1)                         //if receive  data
            {

                if(memcmp(&checkPacket,&recePacket,receLenth) == 0)
                {
                    //printf_debug(" Test OK! !\r\n");
                    UART_write(uart, "receive ACK", sizeof("receive ACK"));
                    usleep(100);
                    RF_flushCmd(rfHandle,rf_cmdhandle,0);  //modify
                    RF_close(rfHandle);
                    usleep(100000);
                    UART_close(uart);



                    while(1)
                    {
                        sleep(250);
                    }

                }
            }
        }



    }
}


void callback(RF_Handle h, RF_CmdHandle ch, RF_EventMask e)
{
    if (e & RF_EventRxEntryDone)
    {
        /* Get current unhandled data entry */
        currentDataEntry = RFQueue_getDataEntry();

        /* Handle the packet data, located at &currentDataEntry->data:
         * - Length is the first byte with the current configuration
         * - Data starts from the second byte */
        packetLength      = *(uint8_t*)(&currentDataEntry->data);
        packetDataPointer = (uint8_t*)(&currentDataEntry->data + 1);
        memcpy(checkPacket,packetDataPointer,packetLength);
        receLenth = packetLength;
       // UART_write(uart, packetDataPointer, packetLength);
        RecevFlag = 1;
        /* Copy the payload + the status byte to the packet variable */
        //memcpy(packet, packetDataPointer, (packetLength + 1));

        RFQueue_nextEntry();
    }
}

Regards,

Kevin

  • Hi Kevin,

    Do you mean you are flashing the same HEX with two different tools and are getting different results?

    Can you verify if the content of the flash is exactly the same for the two cases? (you could do a dump of the flash using Uniflash for example)
    Can you also explain how you are doing to determine if you are or are not in "low power consumption"?

    Thanks and regards,

  • Hi Clément

    Yeah,I am flashing the same .out /hex with two different tools and  getting different results.

    I measured the current and found it does not enter low power consumption.

    How to do a dump of the flash by Uniflash ?

    regards,

    Kevin

  • Hi Kevin,

    There is no direct difference, CCS loads the same out file but it will keep the debugger attached until you disconnect it yourself, this is the main difference.

    Have you tried connecting to your running target from CCS to check what part of your application is currently running? You might be hitting some of your "trap" and this would be the easiest way to start figuring our project out.