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.

RF430FRL152H: RF communication via RF13M module

Part Number: RF430FRL152H
Other Parts Discussed in Thread: TRF7970A

Hallo everyone,

I'm using the RF430FRL152H microcontroller for a project.
The main goal is to send data(as a transponder) to a receiver. One can do that using the integrated RF13M module.
I didn't found any example code to get this RF communication. I have no ideas how to start programming.

If there are example or somebody knows how to do it, I'd be interested to know.

Thank you for the support.

Best regards,
Giuliano Cairoli

  • Giuliano,

    the RF430FRL152H is ISO15693 compatible and has a build in software stack that handles the RF13M module.

    You do not need any own software. With a reader (i.e.  TRF7970) you have access to the FRAM by "Read Block" commands.

    Please see the RF430FRL152H FAQ for more information.

    http://www.ti.com/lit/an/sloa247b/sloa247b.pdf

    Best Regards,

    Helfried

  • Hi Helfried,

    So, if I good understand, using the TRF7970(for example), can I directly see the value stored in a certain variable/register?

    Thank you very much for your help.

    Best,
    Giuliano

  • Giuliano,

    more information about the TRF7970 Reader and the RF430FL152H can be found in this document:

    http://www.ti.com/lit/ug/slau607c/slau607c.pdf

    A description of the build in ROM firmware is in the following document.

    http://www.ti.com/lit/ug/slau603b/slau603b.pdf

    See chapter 4.4 for the memory (0xF868 - 0xFFFF) that can be accessed via the RF interface.

    Access to registers is not possible via the RF interface. This must be handled by own software. 

    Best Regards,

    Helfried

  • Hi Helfried,

    I'm able to connect the two devices together and I can get the temperature (for example).

    Now I'd like to get a certain value calculated in my program and stored in a certain value. Is it possible? How? I also tried to overwrite the Temperature variable with my desire value to get the results on the TRF software' graph but I apparently did it wrong(or is it not possible?!).

    Using the GUI for the TRF7970A I can read the blocks but I don't understand what they contain. How to find out what's the data contained on those blocks?

    For now, I'm reading and searching from TI documents.

    Thank you.
    Giuliano
  • Giuliano,

    because you access parts of the FRAM with the read blocks command it depends on your software what these blocks contain.
    They will contain your program code which is located in this FRAM area, as well as data that is stored by the program in this memory area.
    You will find useful information about the used addresses in the CCS .map file.

    Best Regards,
    Helfried
  • Helfried,

    I'm working like you said by looking at the map files etc.

    I tried to add a simple line of code that should create a toggle on a register, but through the GUI I see no changes, the same by reading blocks.
    It's strange because the userCustomCommand() function has to be executed. So, my "while" should be executed infinitively by observing a change in the RF13MTXF_L register.

    Note: it's only a debugging code, used to understand where data are saved (which block) etc.

    I'm really stuck.

    Best Regards,
    Giuliano

    void userCustomCommand()
    {
        u08_t control;
    
        if( RF13MFIFOFL_L == CRC_LENGTH_IN_BUFFER + DATA_IN_LENGTH)         // CRC_LENGTH + 1 byte expected
        {
            control = RF13MRXF_L;  // pull one byte from the recieve FIFO
    
            P1DIR |= BIT4; // set ALARM LED as an output
    
            if (control)
            {
            	P1OUT |= BIT4;		// turn on ALARM LED
            }
            else
            {
            	P1OUT &= ~BIT4;  	// turn off ALARM LED
            }
    
            //Device has 32 byte RX FIFO and 32 byte TX FIFO, this includes the CRC bytes
    
            //use RF13MRXF to receive two bytes
            //use RF13MRXF_L to receive one byte
            //to receive more than one byte simply continue to read the RF13MRXF_L register.
            //The limit is 32 bytes, but in reality it is less due to protocol overhead
           RF13MTXF_L = 0x0;      // no error, send out
           //To transmit more than one byte repeatedly write data into RF13MTXF_L for each data byte/word and it will go into the FIFO to be transmitted
        }
        else
        {
           RF13MTXF_L = 0x1;    // an error response
        }
    //------------MY CODE----------------
        while( 1 ) {
              RF13MTXF_L = 0xFF;
    
              volatile u32_t busyWait = 0;
    
              for(busyWait = 100000000; busyWait > 0 ; busyWait--) { asm("NOP"); }
    
              RF13MTXF_L = 0x00;


    for(busyWait = 100000000; busyWait > 0 ; busyWait--) {} } //-----------------------------------

  • Giuliano,

    have you tried the plain Default Code without your modification first?
    Are you able to to turn on and off the port P1.4 when sending the custom command 0xAA?

    Best Regards,
    Helfried
  • Hi Helfried,

    I attached the oscilloscope to the Jtag(P1.4) pin but I don't notice any changes after sending the 0xAA command. What should I expect?

    In any case, I hope to find a way to send data from RF430frl to trf7970A as soon as possible..

    Thank for your reply. BR,
    Giuliano

  • Hi Giuliano,

    I don't know exactly what reader are you using to send the command.

    With my following setup I can set/reset P1.4 (red LED U7 ALARM on the FRL152HEVM).

    My setup is following:

    RF430FRLHEVM with the NFC only project (that has the build in custom command 0xAA)

    TRF7970ABP with EXP430G2 Launchpad with Firmware "MSP430G2 LP TRF7970ABP Host Control" (sloc346)

    With a terminal program (i.e Termite) you can communicate with the reader. (Baud rate does not matter, "real" USB)  Do not terminate the commands by CR or LF.

    Initalization:

    Command: 0108000304FF0000                    Response: TRF7970A EVM

    Command: 010C00030410002101020000     Response: Register write request

    Command: 0109000304F0000000                 Response: AGC Toggle

    LED on/off:

    Command: 010C0003041802AA07010000      Response: Request mode

    Command: 010C0003041802AA07000000      Response: Request mode

    Highlighted the custom command.

    Hope that helps.

    Best Regards,

    Helfried

  • Hi Giuliano,

    I am using RF430FRL152H SensorHub Project as a basis to read and store the sensor data on custom memory locations. And using TRF7970A EVM to read those memory locations. (Note that TI discontinued this product, i dont know why, works very well)
    If you need further help on this setup i would want to help.



    Hi Helfried,

    Can you help me to find maximum reading frequency with the TRF7970ABP ? As I mentioned i have EVM board and I am only able read 20 times per second maximum. When I try to increase this reading cycle speed, system becomes non-responsive. I am not sure this is caused by the NFC device or reader device.



    Thanks
    Selman.
  • Hello Selman,

    the maximum speed for the EVM at low data rate is ~20ms cycle time.

    This sums up as follows:
    Communication PC to EVM @ 115200 baud -> command ~2ms, response ~2ms
    RF Read Block command to the tag ~3ms
    Response from the tag (64 bit @ 6,6kB/s low data rate) ~10ms
    All together ~17ms plus some time for processing in the EVM
    Also your PC will add some time to this cycle time.

    One thing you can do, is to switch from low data rate to high data rate which gives you for the response from the tag 2.5ms instead of 10ms. (see Flag setting in the Read Block command)

    Best Regards,
    Helfried