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.

Need help -- SimpliciTI compatible UART driver and EZ430

Other Parts Discussed in Thread: SIMPLICITI, CC2530EM, CC2530

Hello all,

I have been working on CC2530EM and SimpliciTI protocol for quite a some time. I am well acquainted with the protocol stack and it's working. 

I now wish to develop an application for EZ430-RF2500 platform, as one of my client wished me to port the same application which was working well on CC2530EM to EZ430. The application contains the usual SimpliciTI APIs and APIs for UART operations. I was using the SimpliciTI compatible UART driver (DN117) for whatever UART operations required.

The problem is -

Everything worked great with the UART driver on CC2530. However, when I tried to develop the application for EZ430-RF2500, the UART driver doesn't seem to work.

I tried to send some hardcoded characters from an EZ430 module connected to the PC via USB port. In the application I am sending a string on the UART port periodically and for the debugging purpose blinking the LEDs present on the module. However, nothing is visible on the terminal.

I also tried the same code with CC2530EM, and it looks like the application doesn't contain any bug. I still wish to share the applications, as I don't have any experience working on MSP430 processors, so any tips will be really helpful.

#include "bsp.h"
#include "mrfi.h"
#include "nwk_types.h"
#include "nwk_api.h"
#include "bsp_leds.h"
#include "bsp_buttons.h"
#include "nwk_pll.h"
#ifdef MRFI_CC430
  #include "uart_intfc_cc430.h"
#else
  #include "uart_intfc.h"
#endif

/* application Rx frame handler. */
static uint8_t sRxCallback(linkID_t);

/* led toggle helper function */
void toggleLED(uint8_t which);

#define SPIN_ABOUT_A_SECOND()  NWK_DELAY(1000)

void main (void)
{
  BSP_Init();

  SMPL_Init(sRxCallback);

  uart_intfc_init();

  /* turn on LEDs. */
  if (!BSP_LED2_IS_ON())
  {
    toggleLED(2);
  }
  if (!BSP_LED1_IS_ON())
  {
    toggleLED(1);
  }

  while (1) {
    tx_send ("Hello world", sizeof("Hello world"));
    toggleLED(1);
    toggleLED(2);
    SPIN_ABOUT_A_SECOND();
  }
}

void toggleLED(uint8_t which)
{
  if (1 == which)
  {
    BSP_TOGGLE_LED1();
  }
  else if (2 == which)
  {
    BSP_TOGGLE_LED2();
  }
  return;
}

/* handle received frames. */
static uint8_t sRxCallback(linkID_t port)
{
  /* keep frame for later handling. */
  return 0;
}

Questions -

1. Is the SImpliciTI compatible UART driver (DN117) compatible with the EZ430 platform?

2. If yes, what is the bug in the above program?

3. If no, can it be modified to make it compatible with EZ430 platform?

4. If no, Is there any other option by which I can achieve some basic UART operations such as sending a string, receiving a string, on EZ430?

Any help will be greatly appreciated. Thank you in advance.

  • Hi,

    i don't think the DN117 supports the eZ430-RF2500 platform as it is not listed in the DN117 device list. However since the eZ430 supports the so called UART backchannel,  i believe you can port the app note code to the eZ430-RF2500 platform.

    Please refer here for more information regarding the UART backchannel capability of eZ430 emulator:

    http://processors.wiki.ti.com/index.php/EZ430_Backchannel_UART_Configuration

    http://www.ti.com/lit/ug/slau227e/slau227e.pdf - page 10

  • Thank you Leo, for all the pointers you have provided.

    Leo Hendrawan said:
    i don't think the DN117 supports the eZ430-RF2500 platform as it is not listed in the DN117 device list.

    At first, I too was considering that DN117 won't support ez430-RF2500 platform as it is not listed in the supported devices. But it happened to me when I saw the ready-to-run application "UART bridge" which comes for ez430 platform along with the SimpliciTI stack. Also, I checked the low level ISRs of UART stack, which contained the code for "MSP430 + CCxxxx" variants, thus prompting me to try it out in my own application.

    However, the "UART Bridge" application actually uses API tx_transmit_wait () instead of tx_trasmit (). So, I checked the above code using tx_transmit_wait () instead of tx_transmit (), and it works like a charm. Tried to check what is the exact difference between the two, but didn't get any clue about why tx_transmit () shouldn't work.

    Nevertheless, I will still check the links that you have sent and try to get  as much as possible out of it.

    Thank you once again for the help.