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 for Simple EZ430-RF2500 Communication

Other Parts Discussed in Thread: CC2500, MSP430F2274, MSP430F2619, CC1100, SIMPLICITI, Z-STACK

Hello,

I have been looking at what would be the best way in order to use the CC2500 device with two different MSP430 microcontrollers (MSP430F2274 from EZ430-RF2500 and MSP430F2619).

I have six EZ430-RF2500 modules. The EZ430-RF2500 Sensor Monitor Software is provided and works perfectrly good.

In the slaa325 pack that you provide, it is explained how to Interface the MSP430 to CC1100/2500. Code and library are also provided.

I have been trying to configure the EZ430-Rf2500 with the code from slaa325, but I couldn't make it work.

 

I wanted to know if someone could provide me with the working project. Everyone seems to provide with bits of code and it is really hard to analyze them. I am using IAR.

A simple program transmitting a packet to the receiver and switching a LED would be all I ask for.

 

I thank you all for your help,

Eric

  • Hi,

     

    I am just looking for a source code based on the SLAA325 exmaple.

    Anything that will prove there is a transmission/reception between the EZ430-RF2500. I don't wanna use Simplicity.

     

    Thanks in advance.

    Eric

  • Hi Eric,

    This works with SimpliciTI 1.0.6.  Install 1.0.6 in it's defaul location. 

    Install the zip file in C:/  It will create two directories, one in the SimpliciTI 1.0.6 folder, called My Design.  The other one is SimpliciTI_Template in the C: drive.

    Follow the PDF and you should be good to go.

     

    Mike

    SimpliciTITM 1 Day Workshop - Lab Guide.pdf
  • Hi Eric.

    The information you need is in the user guide.

    You will need to follow the points in chapter 5.2

    • The include file in TI_CC_msp430.h should be #include "msp430x22x4.h"
    • TI_CC_hardware_board.h needs to be updated according to the schematics of the eZ430-RF2500 (can be found in the eZ430-RF2500 user manual). Think you need to select TI_CC_SER_INTF_USCIB0 as the interface.
    • main.c must be updated if you remove LEDs and Buttons from the TI_CC-hardware_board.h

    If done correctly, pushing the button on one device should toggle the LED on the other.

    As for project settings. Start with a new workspace, select MSP430 as the template and choose MSP430F2274 as the device. Believe this is the only thing needed..oh..and make sure that the debugger is set to FET debugger, not simulator.

    Good luck.

    Rgds,
    Kjetil

  • Hi Kjetil,

    I want to the same thing as Eric, and I  have done accordingly to your instruction. But it hasn't worked yet. Could you help to look and advise my mistakes? 

    The source codes were changed as follow:

    1. CC1100-CC2500.c file  #define TI_CC_RF_FREQ  2400  //2400 selected instead of 315

    2. TI_CC_MSP430.h file  #include "msp430x22x4.h" // instead of "msp430x16x.h"

    3. TI_CC_hardware_board.h

    #define TI_CC_LED_PxOUT         P1OUT
    #define TI_CC_LED_PxDIR         P1DIR
    #define TI_CC_LED1              0x01
    #define TI_CC_LED2              0x02

    // #define TI_CC_LED3              0x04
    // #define TI_CC_LED4              0x08

    #define TI_CC_SW_PxIN           P1IN
    #define TI_CC_SW_PxIE           P1IE
    #define TI_CC_SW_PxIES          P1IES
    #define TI_CC_SW_PxIFG          P1IFG
    #define TI_CC_SW1               0x04

    //#define TI_CC_SW1               0x10
    // #define TI_CC_SW2               0x20
    // #define TI_CC_SW3               0x40
    // #define TI_CC_SW4               0x80

    #define TI_CC_GDO0_PxOUT        P2OUT
    #define TI_CC_GDO0_PxIN         P2IN
    #define TI_CC_GDO0_PxDIR        P2DIR
    #define TI_CC_GDO0_PxIE         P2IE
    #define TI_CC_GDO0_PxIES        P2IES
    #define TI_CC_GDO0_PxIFG        P2IFG
    #define TI_CC_GDO0_PIN          0x20

    #define TI_CC_GDO1_PxOUT        P5OUT
    #define TI_CC_GDO1_PxIN         P5IN
    #define TI_CC_GDO1_PxDIR        P5DIR
    #define TI_CC_GDO1_PIN          0x04

    #define TI_CC_GDO2_PxOUT        P2OUT
    #define TI_CC_GDO2_PxIN         P2IN
    #define TI_CC_GDO2_PxDIR        P2DIR
    #define TI_CC_GDO2_PIN          0x40

    #define TI_CC_CSn_PxOUT         P3OUT
    #define TI_CC_CSn_PxDIR         P3DIR
    #define TI_CC_CSn_PIN           0x01

    //#define TI_CC_CSn_PxOUT         P5OUT
    //#define TI_CC_CSn_PxDIR         P5DIR
    //#define TI_CC_CSn_PIN           0x01

    //----------------------------------------------------------------------------
    // Select which port will be used for interface to CCxxxx
    //----------------------------------------------------------------------------
    #define TI_CC_RF_SER_INTF       TI_CC_SER_INTF_USCIB0  // Interface to CCxxxx

    4. main.c

    #include "include.h"

    extern char paTable[];
    extern char paTableLen;

    char txBuffer[4];
    char rxBuffer[4];
    unsigned int i;

    void main (void)
    {
      WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
      P1OUT |= 0x04;                            // P1.2 pullup
      P1REN |= 0x04;                            // P1.2 pullup

     

      TI_CC_SPISetup();                         // Initialize SPI port

      TI_CC_PowerupResetCCxxxx();               // Reset CCxxxx
      writeRFSettings();                        // Write RF settings to config reg
      TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//Write PATABLE

      // Configure ports -- switch inputs, LEDs, GDO0 to RX packet info from CCxxxx
      //TI_CC_SW_PxIES = TI_CC_SW1+TI_CC_SW2+TI_CC_SW3+TI_CC_SW4;//Int on falling edge
      //TI_CC_SW_PxIFG &= ~(TI_CC_SW1+TI_CC_SW2+TI_CC_SW3+TI_CC_SW4);//Clr flags
      //TI_CC_SW_PxIE = TI_CC_SW1+TI_CC_SW2+TI_CC_SW3+TI_CC_SW4;//Activate enables
      //TI_CC_LED_PxDIR = TI_CC_LED1 + TI_CC_LED2 + TI_CC_LED3 + TI_CC_LED4; //Outputs
      //TI_CC_GDO0_PxIES |= TI_CC_GDO0_PIN;       // Int on falling edge (end of pkt)
      //TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // Clear flag
      //TI_CC_GDO0_PxIE |= TI_CC_GDO0_PIN;        // Enable int on end of packet

     
      TI_CC_SW_PxIES = TI_CC_SW1;
      TI_CC_SW_PxIFG &= ~(TI_CC_SW1);//Clr flags
      TI_CC_SW_PxIE = TI_CC_SW1;//Activate enables
      TI_CC_LED_PxDIR = TI_CC_LED1 + TI_CC_LED2; //Outputs
      TI_CC_GDO0_PxIES |= TI_CC_GDO0_PIN;       // Int on falling edge (end of pkt)
      TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN;      // Clear flag
      TI_CC_GDO0_PxIE |= TI_CC_GDO0_PIN;        // Enable int on end of packet

      TI_CC_SPIStrobe(TI_CCxxx0_SRX);           // Initialize CCxxxx in RX mode.
                                                // When a pkt is received, it will
                                                // signal on GDO0 and wake CPU
      _BIS_SR(LPM3_bits + GIE);                 // Enter LPM3, enable interrupts
    }


    // The ISR assumes the interrupt came from a press of one of the four buttons
    // and therefore does not check the other four inputs.
    #pragma vector=PORT1_VECTOR
    __interrupt void port1_ISR (void)
    {
      // Build packet
      txBuffer[0] = 2;                           // Packet length
      txBuffer[1] = 0x01;                        // Packet address
      txBuffer[2] = (~TI_CC_SW_PxIN) & 0x0F;     // Load four switch inputs

      RFSendPacket(txBuffer, 3);                 // Send value over RF

      P1IFG &= ~(TI_CC_SW1);//Clr flag that caused int
      P2IFG &= ~TI_CC_GDO0_PIN;                  // After pkt TX, this flag is set.
    }                                            // Clear it.


    // The ISR assumes the int came from the pin attached to GDO0 and therefore
    // does not check the other seven inputs.  Interprets this as a signal from
    // CCxxxx indicating packet received.
    #pragma vector=PORT2_VECTOR
    __interrupt void port2_ISR (void)
    {
      char len=2;                               // Len of pkt to be RXed (only addr
                                                // plus data; size byte not incl b/c
                                                // stripped away within RX function)
      if (RFReceivePacket(rxBuffer,&len))       // Fetch packet from CCxxxx
        //TI_CC_LED_PxOUT ^= rxBuffer[1];         // Toggle LEDs according to pkt data
         TI_CC_LED_PxOUT ^= 0x01;                //Toggle LED1
         P2IFG &= ~TI_CC_GDO0_PIN;                 // Clear flag
    }

  • Hi Kjetil and vnlotus,

     

    I notice that I am not the only person that has the similar problem!

    It would be really appreciable from the Texas Instrument team to provide an example working for the MSP430F2274 for many reasons:

         - First SImpliciTI is (as TI  explains it) a low-power, low rate protocol.

        - SimpliciTI contains unreadable, unmodifyable libraries that limits the size of packet to 10 bytes and many other limitations.

         - Most of the people who buys the EZ430-RF2500 or RF2480 expect to transmit at a maximum rate of 500 kilobits, but will never be able with SimpliciTI.

         - Except SimpliciTI, no other working source codes are available to make work a MSP430 with a Chipcon device

         - Most of the people who buy the EZ430 are Newbie and unfortunately will stay if the TI team don't provide more samples.

         - By buying a module (EZ430) that embeds a microcontroller (MSP430) and a transceiver (CC2500), we expect a full working device. WHEN I BUY A NEW CAR I DONT WANT TO MOUNT THE ENGINE BY MYSELF!!!!

    I would be happy to hear someone from the TI team and logically provide to the TI community a source code that would work with a common microcontroller such as the MSP430F2274.

     

    Kind regards,

     

    Eric

  • Totally agree with Eric and really looking forward to the support of TI team.

    Warmest regards, Vnlotus

     

  • Everyone,

    Eric Bader said:
    First SImpliciTI is (as TI  explains it) a low-power, low rate protocol.

    When doing a general protocol, like SimpiciTI, you will need to make some assumptions and limitations. There is no protocol to rule them all and design choices will always have to be made. Some might be perfect fit for some, while others might need something completely different. I believe that SimpliciTI can serve as a great starting point for many applications and not only the low power, low rate ones. Changing it to fit the different needs might require some more knowledge of the capabilities in the MSP and CC radio though.

    Eric Bader said:
    It would be really appreciable from the Texas Instrument team to provide an example working for the MSP430F2274 for many reasons:

    In addition to SimpliciTI with the sensor monitor demo running on eZ430-RF2500 and thus the MSP430F2274, we have the examples and function library  for the CC2500 + MSP developed using the experimenters board which can be ported and the Example Libraries for the CC2500 (which is written for 8051 micro) which shows how the CC2500 can be used. All in all, I personally think this is quite a lot of material, but off course we could improve this further. Especially if the MSP+CC2500 examples are not straight forward to port to other MSP variants or HW like the eZ430 tool.

    Eric Bader said:
    SimpliciTI contains unreadable, unmodifyable libraries that limits the size of packet to 10 bytes and many other limitations.

    Correct, but SimpliciTI is also available in full source which can be edited and altered at will as long as one follows the license agreement. Sadly the kickstart edition of IAR is limited in size and the only way to get around this is to provide SimpliciTI also as libraries. The next version of SimpliciTI will come with CCE support which is free up to 16kB. This will be available within the month.

    Eric Bader said:
    Most of the people who buys the EZ430-RF2500 or RF2480 expect to transmit at a maximum rate of 500 kilobits, but will never be able with SimpliciTI.

    Not sure if I agree that most want to use the highest data rate, but thats another discussion. The RF2480 is a 802.15.4 radio fixed at 250 kbits. The RF2500 supports 500 kbits data rate on the radio and you are more than welcome to run SimpliciTI at 500 kbits setting for the radio. What you will have to be aware of though is that the effective data rate with any radio will never be the maximum of  what the radio is capable of (there is always some sort of radio overhead etc). There are forums threads on this forum that goes into increasing the maximum effective datarate using SimpliciTI. This is one of them: http://community.ti.com/forums/p/3317/12234.aspx

    Eric Bader said:
    Except SimpliciTI, no other working source codes are available to make work a MSP430 with a Chipcon device

    As listed above.. the examples and function library  for the CC2500 + MSP is available in full source. It was written for the experimenters board (FG461x and F2013) and was written with portability in mind. Again, why it does not easily ports to the eZ430 is something someone has to look into.

    Eric Bader said:
    Most of the people who buy the EZ430 are Newbie and unfortunately will stay if the TI team don't provide more samples.

    Agreed..one can never have enough samples right? That's part of why we have SimpliciTI and for the eZ430 we even did the sensor monitor demo on top of SimpliciTI with full source for both the eZ430 and the PC GUI.  With SimpliciTI we hoped that getting started with RF would be easier (6 APi calls instead of a 250+ page datasheet etc). Again, making something that fits everyone is quite a challenge and given the number of possible combinations of MSP + Radio, a substantial task. Hopefully as the community grows, more people will post their code here in the forum, like someone already has here: http://community.ti.com/forums/85.aspx (this seems to be code for the eZ430-RF2500 that does not use SimpliciTI)..

    Eric Bader said:
    By buying a module (EZ430) that embeds a microcontroller (MSP430) and a transceiver (CC2500), we expect a full working device. WHEN I BUY A NEW CAR I DONT WANT TO MOUNT THE ENGINE BY MYSELF!!!!

    Once again I agree, if the out of box experience when buying the eZ430 is not satisfactory this is something TI should look into.

    Thanks for the input, its valuable and appreciated.

    Kjetil

  • Noticed the code example was pulled.

    Adding it back in.

     

    Mike

    SimpliciTI_demo.zip
  • Hi Mike,

    Not sure whether  your simpliciTI_demo can be done with IAR kickstart version?

    vnlotus

  • Hi vnlotus,

    It cannot.  The demo uses the full stack build.

    You can download a 30 Eval version of the IAR tools here:

    http://supp.iar.com/Download/SW/?item=EW430-EVAL 

     

    Mike

  • Hi Mike,

    I have tried to done the lab1 eval version of IAR, but it seem can not too. Here are error indications:

    "Building configuration: SimpliciTI_Demo - Debug
     Updating build tree...
     Linking
     Fatal Error[e89]: Too much object code produced (more than 0x1000 bytes) for this package
     Error while running Linker
     
     Total number of errors: 1
     Total number of warnings: 0
    "

  • The error is (for some reason) coming from the kickstart tool.

    I have run across similar errors from IAR, when I have had the Eval version and the Kickstart version installed on the same PC.

    You should not have any limitations on the EVAL (except 30 days).

    Maybe try a reboot of the PC.  Last ditch effort may be to uninstall the kickstart tool.

    Mike

  • Hi Mike and Kjetil,

    Tks for your helps. It is much appreciated.

    Rdgs, vnlotus

  • Hi Mike,

    I have done accordingly to the steps in the lab1. But at 14th step, there was nothing appeared  on the hyper terminal screen. Could you help to advise what are possible reasons? Sorry for my poor knowledge...[:(]

  • Mike, i am using emulator of ez430 of ez430-f2013 kit (as i had ez430-f2013 before, i buy only RF2500T boards).  Is it  the reason causing this issue? are these emulators different?

  • Hi vnlotus,

    It should work the same.  Did you build and compile the End Device project?  The Access Point project doesn't access Hyperterminal.

    Mike

  • Hi Mike,

    I have checked user guide of ez430rf. It seems different as "it features a back channel MSP430 Application UART that may be used independently of a debug session". I have ordered ez430-rf2500 kit, and will study your labs latter on.

    Thanks so much for your supports.

    Vnlotus

  •  

    vnlotus said:

    Hi Kjetil,

    I want to the same thing as Eric, and I  have done accordingly to your instruction. But it hasn't worked yet. Could you help to look and advise my mistakes? 

    The source codes were changed as follow:

    1. CC1100-CC2500.c file  #define TI_CC_RF_FREQ  2400  //2400 selected instead of 315

    2. TI_CC_MSP430.h file  #include "msp430x22x4.h" // instead of "msp430x16x.h"

    3. TI_CC_hardware_board.h

    // The ISR assumes the interrupt came from a press of one of the four buttons
    // and therefore does not check the other four inputs.
    #pragma vector=PORT1_VECTOR
    __interrupt void port1_ISR (void)
    {
      // Build packet
      txBuffer[0] = 2;                           // Packet length
      txBuffer[1] = 0x01;                        // Packet address
      txBuffer[2] = (~TI_CC_SW_PxIN) & 0x0F;     // Load four switch inputs

      RFSendPacket(txBuffer, 3);                 // Send value over RF

      P1IFG &= ~(TI_CC_SW1);//Clr flag that caused int
      P2IFG &= ~TI_CC_GDO0_PIN;                  // After pkt TX, this flag is set.
    }                                            // Clear it.


    // The ISR assumes the int came from the pin attached to GDO0 and therefore
    // does not check the other seven inputs.  Interprets this as a signal from
    // CCxxxx indicating packet received.
    #pragma vector=PORT2_VECTOR
    __interrupt void port2_ISR (void)
    {
      char len=2;                               // Len of pkt to be RXed (only addr
                                                // plus data; size byte not incl b/c
                                                // stripped away within RX function)
      if (RFReceivePacket(rxBuffer,&len))       // Fetch packet from CCxxxx
        //TI_CC_LED_PxOUT ^= rxBuffer[1];         // Toggle LEDs according to pkt data
         TI_CC_LED_PxOUT ^= 0x01;                //Toggle LED1
         P2IFG &= ~TI_CC_GDO0_PIN;                 // Clear flag
    }

    Hi Kjetil,

     

    I have faced the same problem with vnlotus when trying to investigate the eZ430-CC25500 module.

    And I found out that the error came from GDO0 interrupt, my program will run well if I comment SendPacket function:

    //RFSendPacket(txBuffer, 3);                 // Send value over RF

    However this job is meaningless for my purpose to research wireless communication.

    After that, I have tried other solutions such as pull up (or down) GDO0 input pin, but what I receive is nothing.

    Could you help me to overcome this problem, or if possible please send me a perfect sample ( I don't want to use the SimpliciTI library).

    It will help me a lot to be farmiliar with TI MCU programming.

    Thanks alot,

    thebrine

  • Can anybody help me, hic [:(]

  • Hello everybody, I'm new here :)

     

    I'm working on both "ez430-RF2500" (the USB stick) and "MSP430FG461x/F20xx experimenter's board", trying to make them communicate wirelessly.

    I've tried to get SimpliciTI working on the experimenter board, spending three days on it, and gave up... it is not a piece of cake, frankly, when you are limited to 1000kB of code. Whereas on the target board (usb stick) it was straight forward (kind of^^)

    So I 've looked for a simpler solution to get wireless com working, and ended up here.

    I tried the code vnlotus replied on 03-18-2009 2:12 PM and it looks like it never enters the Interrupt when pressing the switch on the target board (using debugger) whereas with the example code given for the experimenter's board, it does.

    Maybe it could be a clue to somebody. Anyway, I'm still working on it.

    Maxx, Scotland.

     

    PS: excuse my numerous mistakes, i'm French ;)

  • Hi Maxx,

    I think you should pull up resistor for P1.2 by add following commands

    "P1OUT |= 0x04;                            // P1.2 pullup
      P1REN |= 0x04;                            // P1.2 pullup"

    Good luck!

  • Agreed with Eric. It'd be nice to have once simple tutorial to do the simplest communication between 2 boards. We can elaborate from it on our own. I have experience with the MSP430 but have no idea where to start with cc2500. I don't want to use Simpliciti either. 

  • Hi xtster,

    There is a demo of a simple communication in the Low Power RF Code Examples called Wireless UART using the eZ430-RF2500.

    It does simple point to point communication and it does not use SimpliciTI.  It has a lab document that walks through it as well.

    If you take some of the Terminal Code out it will build in the IAR kickstart tool.

  • Hi Maxx,

    Two things that can help you.

    1.  SimpliciTI 1.1.0 should be out this week.  It supports Code Composer Essentials.  Code Composer Essentials has 16k limit on the code space.  That will help your Code size issues.

    2.  SimpliciTI 1.1.0 is well documented.  You can find the documentation in the Texas Instruments/SimpliciTI-IAR-1.1.0/Documents  directory.    SimpliciTI Sample Application User's Guide.pdf

    There are demos on End Device to End Device communication for both the EXP board and the eZ430-RF2500.  You can find them in the

    C:\Texas Instruments\SimpliciTI-IAR-1.1.0\Projects\Examples\EXP461x and C:\Texas Instruments\SimpliciTI-IAR-1.1.0\Projects\Examples\eZ430RF directories respectively. 

    They are under simple peer to peer

    Only caveat is to make sure the two end devices have different addresses which are defined in the smpl_config.dat.

    SimpliciTI 1.0.6 has the same support as well.  But it doesn't yet support the Code Composer Essentials tool.

    Hope this helps.

  • Hi Mike,

    Thanks for your instruction.

    I have done ED to ED demo for ez430-rf2500. It has worked well.

    And now I want to know how the source codes runs, but it is really hard for me to understand as it is too complicated ( i personally find that [:'(]). Could you (or other expert) help to daftly give newbies like me a  tutorial of building up this application step by step? so that we can imagine how  we need to do to build up  our own project with using SimpliciTI protocol.

    Eg: I want to port this application to other t/g board, i need to change board initialization function. however when i referred to  simpliciTI  API.pdf  and  saw :

    3.2  BSP_Init ( )
    3.2.1  Description
    Not strictly part of the SimpliciTI API this call initializes the specific target hardware. It should be invoked before
    the SMPL_Init() call.

    3.2.2  Prototype
    void BSP_Init(void)
    3.2.3  Parameter Details
    None.
    3.2.4  Return
    None.

    I don't know how to to port to other t/g board....etc.

    Vnlotus, Vietnam

     

  • Hi Vnlotus,

    You're actually pretty close.  At this point you may want to seperate directory structures and make one specific to your board.  This allows porting from SimpliciTI versions easier.

    The example I am going through uses IAR and SimpliciTI 1.0.6.  I am sure the other versions are similar, but these are the ones I am currently using as reference.

    I use a .cfg file, like the one I have attached (of course I had to change the extension to a .txt for me to add it to the community, so you will have to change it back to a .cfg).

    It has the directory structures of the SimpliciTI stack in them, plus the radio definition, and some other compile time builds I do for demos.

    I would copy it in your  project directory, $PROJ_DIR$, with your SimpliciTI main.c file , and your config.dat files, and whatever else you need. 

    The directory structures needed for the stack and mrfi, etc... will be pointed to by the CFG file.  To bring the .cfg into the project you use:

    Project->Options->C/C++ Compiler Tab->Extra Options, Check the use command line options box and in the command line options place -f and the file with paths in " "

    Mine currently has this  in it:

    -f "$PROJ_DIR$\smpl_nwk_config.dat"
    -f "$PROJ_DIR$\smpl_config_ED.dat"
    -f "$PROJ_DIR$\SimpliciTI_General_Configuration.cfg"

    We will change at least one of the directory structures in the .cfg file to point to your new BSP directory:

    -I "C:\Texas Instruments\SimpliciTI-1.0.6\Components\bsp\boards\EZ430RF"

    That directory defines what board you are characterizing.

    Mapping to a new board to follow.

     

  • vnlotus said:

    Hi Maxx,

    I think you should pull up resistor for P1.2 by add following commands

    "P1OUT |= 0x04;                            // P1.2 pullup
      P1REN |= 0x04;                            // P1.2 pullup"

    Good luck!

    Thank you vnlotus for that even if I noticed early that it was necessary ^^

     

    protagonist said:

    Hi Maxx,

    Two things that can help you.

    1.  SimpliciTI 1.1.0 should be out this week.  It supports Code Composer Essentials.  Code Composer Essentials has 16k limit on the code space.  That will help your Code size issues.

    2.  SimpliciTI 1.1.0 is well documented.  You can find the documentation in the Texas Instruments/SimpliciTI-IAR-1.1.0/Documents  directory.    SimpliciTI Sample Application User's Guide.pdf

    There are demos on End Device to End Device communication for both the EXP board and the eZ430-RF2500.  You can find them in the

    C:\Texas Instruments\SimpliciTI-IAR-1.1.0\Projects\Examples\EXP461x and C:\Texas Instruments\SimpliciTI-IAR-1.1.0\Projects\Examples\eZ430RF directories respectively. 

    They are under simple peer to peer

    Only caveat is to make sure the two end devices have different addresses which are defined in the smpl_config.dat.

    SimpliciTI 1.0.6 has the same support as well.  But it doesn't yet support the Code Composer Essentials tool.

    Hope this helps.

    Thanks protagonist for all the infos on simpliciTI. I didn't know for the new release coming soon. I will certainly look at the change log, to be up-to-date. CCE doesn't interest me so far. However, if I have no choice in the future, I could maybe migrate to it.

     

    But now, I have what I want (thanks to all of you, and some of my skills I guess ;p ), namely:

    On one side, the MSP430FG461x/F20xx Experimenter's Board, and on the other side, three MSP430 eZ430-RF2500T Development Tool (let's name them PINK, YELLOW and WHITE, because of the BluTak on them^^)

    So, PINK can toggle the GREEN led on the Exp. Board

    WHITE can toggle the ORANGE led

    and YELLOW can toggle the RED led.

    All of this DOESN't use SimpliciTI, but a lower level communication. (using RFSendPacket() and RFReceivePacket() from cc1100-CC2500.c)

    I don't know if i'm clear enough on my explanations!!!

     

    Anyway, if someone wants a pretty neat Workspace (WS) in order to communicate between Exp. Board and Target Boards, I could send the WS.

     

    Maxx.

  • Part II: Designing a New BSP...

    Copy one of the folders from the BSPs in the SimpliciTI 1.0.6 directory into your new project directory:

    C:\Texas Instruments\SimpliciTI-1.0.6\Components\BSP\boards  change the name of the directory to better describe your board and change the path setting in the .cfg file from above to match that new directory path.

    I'll use the EZ430RF directory in my example.  Quick Tour:

    The bsp_external directory has a file named mrfi_board_defs.h  - If you open that file you will see that it maps your GPIO ports, your SPI port, etc.  If you want a schematic to reference on how that was done you can find one in the schematics directory.

    bsp_board.c initializes the board files BSP_INIT_BOARD() for the system.  In the eZ430RF, it turns off the watchdog, initializes the clocks, and the Timer A resource.  Below it BSP_Delay uses that Timer A peripheral to set a Timer for SimpliciTI.

    The BSP_INIT_BOARD()  invokation comes from BSP_Init () which you call in your main.c file, and it is located in BSP.c

    If you want to use drivers for LEDs, Switches, or other things on your board, you modify BSP_Drivers.c  currently it inits the LEDs and the Buttons.  if you want to change the behaviour of those two init files, you can find them in bsp_button_defs.h and bsp_LED_defs.h

    Finally if you need the Port I/O interrupts used by your GDO pins you can access the ISR call in mrfi_board.c

    It might not be clear, but if you follow this structure, you can do a BSP_Init () in your main, and the BSP it initializes is the one you define in your path structure of the .cfg config file mentioned above.

    That should get you a good start down the path.

     

  • Hi Mike,

    Thanks for the lesson. I can see SimpliciTI  is quite complicated , however i will try to study it.

  • Maxx said:

    But now, I have what I want (thanks to all of you, and some of my skills I guess ;p ), namely:

    On one side, the MSP430FG461x/F20xx Experimenter's Board, and on the other side, three MSP430 eZ430-RF2500T Development Tool (let's name them PINK, YELLOW and WHITE, because of the BluTak on them^^)

    So, PINK can toggle the GREEN led on the Exp. Board

    WHITE can toggle the ORANGE led

    and YELLOW can toggle the RED led.

    All of this DOESN't use SimpliciTI, but a lower level communication. (using RFSendPacket() and RFReceivePacket() from cc1100-CC2500.c)

    I don't know if i'm clear enough on my explanations!!!

     

    Anyway, if someone wants a pretty neat Workspace (WS) in order to communicate between Exp. Board and Target Boards, I could send the WS.

     

    Maxx.

     

    Maxx, your example is really interesting. So, could you upload your workspace on this forum, everybody can enjoy your "Bluetalk".

    I also tried to use RFSendPacket() and RFReceivePacket() from cc1100-CC2500.c, but it run well only on Exp board. I do not know why it cuoldn't work on ez430-rf2500.  Hopefully thank to your code i can recognize my mistake.

    Vnlotus, Vietnam; email: robbie.ng64@gmail.com

  • @Vnlotus

    I won't be able to upload before next week, because i'm away tomorrow, and this week end. I hope it doesn't compromise your expectations!

     

    Otherwise, I have a question for everybody. It shouldn't be too hard to answer. In fact, I just need a confirmation!!

    Here it is:

     

    In the file msp430x22x4.h

    don't you think there is an error at lines 435 and 436

    #define OAADC0              (0x01)    /* OAx output to ADC10 input channel select 0 */
    #define OAADC1              (0x02)    /* OAx output to ADC10 input channel select 1 */

    shouldn't it be:

    #define OAADC0              (0x00)    /* OAx output to ADC10 input channel select 0 */
    #define OAADC1              (0x01)    /* OAx output to ADC10 input channel select 1 */

     

    Because if you look in MSP430x22x4_Family_User's_Guide_(Rev._E)_slau144e (page567/693)

    OAADC is represented on Bits 1-0 and if we want to select channel 0, we should have 0x00.

    Am I right? Cuz if I don't change this two lines, I don't have what I'm expecting with OpAmp0 O.o

     

    Thank you for any answer,

    Maxx. Scotland.

     

     

     

  • PLEASE EXPLAIN ME THE CODE WHICH IS FROM SENSOR MONITOR DEMO:

     if( Flash_Addr[0] == 0xFF &&
          Flash_Addr[1] == 0xFF &&
          Flash_Addr[2] == 0xFF &&
          Flash_Addr[3] == 0xFF )
      {
        createRandomAddress();                  // set Random device address at initial startup
      }
      lAddr.addr[0]=Flash_Addr[0];
      lAddr.addr[1]=Flash_Addr[1];
      lAddr.addr[2]=Flash_Addr[2];
      lAddr.addr[3]=Flash_Addr[3];
      SMPL_Ioctl(IOCTL_OBJ_ADDR, IOCTL_ACT_SET, &lAddr);

  • Hello

    The code actually sets the 4 byte address SimpliciTI uses to identify the device.

    How it works, the code checks the address in Flash (if you don't do a full re-program of the Flash, it will actually maintain the address from build to build) and if the address is erased (all 0xFF's) it will the generate a random address from a reading in the vlo timer. 

    That address (whether it is newly generated or existing) is used to over-write the SimpliciTI address defined in the smpl_config.dat file.

    You can change the address anytime before you do a SMPL_Init()  after that the change in address will have no effect.

    Hope that helps.

  • Hello, I've just downloaded and installed SimpliciTI 1.10, along with CCE to run the sample peer-to-peer example on two ez430-RF2500. 

    I followed the instructions, and loaded the code onto the devices, but the two tranceivers just don't link together.

    i.e. After pressing buttons (first LinkListen, then LinkTo) to initialize linking, LinkTo device keeps flashing both LED's and LinkListen 's red LED (1) is constantly on - meaning they have failed to link. I've tried this a dozen times, and they never link together.

    So my questions are, 1) is there something I'm not aware of that I need to set up in the code? 2) Is it possible to download the previous version of SimpliciTI (1.06)?

    Thanks in advance,

    Eric

  • IS IT THE METHOD? OR ARE THERE ANY OTHER METHOD TO SET THIS ADDRESS?

    WHAT IS THE DIFFERENCE BETWEEN LINKID AND THE DEVICE ADDRESS? IS IT NOT THE SAME?

  • PLEASE HELP ME?

    I WANT TO BUILD A TEMPERATURE LOGGER IN PC.

    1. ONE EZ430-RF2500 IS USED AT THE PC AS A ACCES POINT.

    2. I HAVE TWO TARGET BOARDS WHICH USED TO MEASURE THE TEMPERATURE IN TWO DIFFERENT PLACES.

    3. THE TARGET BOARDS SAMPLES AND SEND THE TEMPERATURE TO THE ACCES POINT.

    4. IF ONE OF THE TARGET BOARD IS OUT OF THE RANGE FROM AP THEN THE OTHER TARGET BOARD WHICH IS IN THE RANGE OF AP MUST RECEIVE THE OTHER TARGET BOARD'S DATA AND SEND TO THE AP.

    PLEASE EXPLAIN ME HOW CAN I DO THAT? CAN THIS DONE IN SIMPLICITI? AND HOW?

    THANKS ALOT. 

  • Hi Eric,

    The Device addresses need to be different on each of the end devices.

    You can set the address in the  smpl_config.dat

    -DTHIS_DEVICE_ADDRESS="{0x79, 0x56, 0x34, 0x12}"

  • It is a method. 

    You can set the device address either in the SMPL_config.dat file:

    -DTHIS_DEVICE_ADDRESS="{0x79, 0x56, 0x34, 0x12}"

    or you can do the IOCTL

      SMPL_Ioctl(IOCTL_OBJ_ADDR, IOCTL_ACT_SET, &lAddr);

    The LinkID is SimpliciTI's translation of the Device Address, it's actually a pointer to a lookup table.

  • You may take a look at the eZ430-RF2480, it supports Zigbee mesh networking/

    You can do it by SimpliciTI (a little more complicated).

    Using SimpliciTI 1.1, Turn Auto Acknowledge on.

    Setting up the USB board as a data hub, you will use the link to, link listen functions to join the two end devices to the data hub as well as each other.

    Temperature being sent to the data hub should generate an auto acknowledge. 

    If no acknowledge is received, you will instead send to the other End Device and have it transfer to the Access Point.

    Again, not as automatic or as simple as a Zigbee Mesh, but it can be done.

  • What is the difference between ez430-rf2500 and ez430-rf2480?

    BUT I SAW IN SIMPLICITI DOCUMENTS THAT VIEWS ONE SENSOR PASSES DATA THROUGH THE OTHER SENSOR TO AP IN SMOKE DETECTOR SYSTEM.

    IS SIMPLICITI ONLY SUPPORTS STAR NETWORK?

    WHAT IS THE RANGE EXTENDER? IS IT A TARGET BOARD?

    CAN I NOT DO THE TEMPERATURE LOGGER PROJECT WITH EZ430-RF2500 AND SIMPLICITI?

    DO I ONLY NEED TO CHANGE THE TARGET BOARD WITH RF2480?

  • 1.  The eZ430-RF2480 is an 802.15.4 radio + Zigbee evaluation board.    The eZ430-RF2500 is a proprietary radio evaluation board

    2.  The passing of information through other sensors is an emergency or broadcast function, versus a point to point communication (End Device to End Device)

    3.  Yes, SimpliciTI is best designed as a Star or Peer to Peer network.

    4.  The range extender is not a target board, it is just a repeater.

    5.  Yes, you can do the temperature logger project with SimpliciTI and the eZ430-RF2500, but there will be some (not trivial) application code involved. 

    6.  The temperature logger project you described has pretty much been done already in the eZ430-RF2480 temperature demo.

    see page 11 or this pdf for a quick view of the demo:  http://focus.ti.com/lit/ug/swru157b/swru157b.pdf

  • In the smoke detector system in simpliciti it has also a AP in the middle of the network.

    The sensors are sending data through each other to the AP. Is it not right? or what is happening there? explain me little more?

    The smoke detector system with simpliciti confusing me. Because I thought that sensors are passing data through each other to the AP.

    What is the repeater? is it a hardware device? which one? what it does?

    How can I do my project with simpliciti?

    PLEASE HELP ME? I AM DOING THIS PROJECT TO MY EXAMINATION.

  • My project leader gave me one ez430-rf2500 and 2 target boards and said to me to develope this project. But he do not know about this can be done or not.

    I want to know that about can this project done with simpliciti with mesh networking through sensors?

  • The example is SimpliciTI is a Broadcast example, where all the devices broadcast the same message.

    The description of the project is page 30, in the SimpliciTI Sample Application User's Guide.pdf which can be found here:  C:\Texas Instruments\SimpliciTI-IAR-1.1.0\Documents

    Again, the message is propogated through the network, independent if the sensors are or are not within the range of the AP.  There is no connection table in that example.

    Following the example highlighted in the document above should get you on the path.

     

     

  • It can be done using the broadcast function in SimpliciTI. 

  • I have one AP and 2 target boards.

    I want to log the temperature from both boards. Board 1 sends directly to the AP and board 2 must send to board 1 and then board 1 passes the tempertature data to AP and logged in pc.

    can this done with the broadcast funktion?

  • I HAVE SIMPLICITI 1.0.6 ON PC NOW. SHALL I REMOVE THAT BEFORE INSTALLING 1.1.0?

    CAN THE OLD PROJECTS DONE IN 1.0.6 WORK IN 1.1.0?

  • How can I implement a mesh network of sensors with one AP in ez430-rf2500 with the use of simpliciti?

    are there any other solutions than simplicit?

  • You can install 1.1.0 without removing 1.0.6.  They exist in different directories.

  • The Broadcast function will be transmit the packet to all the devices.  Order is not really defined.