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.

RF430CL330 Data Rate Testing

Other Parts Discussed in Thread: RF430CL330H

I was able to configure an RF430CL330 IC per the instruction in the data sheet (table 30) for setting the data rate to something other than the default data rate of 106kpbs.  Is there a way to confirm the NFC data rate that is being used in the communication?  I try to read back register 0x2A78, but I'm not sure it is a readable location.  If it is, it is always coming back 0x00 which is the default low rate of 106kpbs.  I've attached a couple of log files from my attempt to set the IC to read/write at the high rate (847kpbs) only.  Is there a way to confirm the mode I'm in by reading a certain register?  Or is there an Android app that will report what rate a data transfer occurred at?

1258.High Rate 847kbps setup.xlsx

  • Hi Doug,

    This question was also emailed to me directly.  Please see my answer below.

    When setting this register in the RF430CL330H, this changes our response to the REQB command to indicate that we are capable of specific data rates.  The reader, PN544 in this case, has to make the decision to increase the data rate.  After we respond to the REQB indicating our bit rate support, the reader shall indicate what data rate the remaining communication will occur at.  This is indicated in the Param 2 byte of the ATTRIB command.  We would need to sniff the communication over the air to ensure what data rate the reader is operating.  The decision of data rate is entirely up to the reader device.  For example, when I sniff with the Samsung S3(uses NXP IC), it switches to 848kbps.  When I read with the Nexus 4(uses Broadcom IC), it stays at 106kbps.  I used the Frontline Comprobe Protocol analyzer to sniff the over the air communication.

    http://www.fte.com/products/nfc.aspx

     

     

     

  • Hi Doug and Eddie, 

    I would really like to get this working - setting the data rate. The datasheet doesn't give any guidance on when in the code to apply this change in settings. Currently, I apply the errata fix and then change the data rate setting prior to turning on the RF; using:

    Write_Register( 0xFFE0, 0x004E);
    Write_Register( 0xFFFE, 0x0080);
    Write_Register( 0x2A78, 0x00F7);
    Write_Register( 0x2814, 0x0000);
    Write_Register( 0xFFE0, 0x0000);
    

    I am trying to get confidence that this is correct (as currently the reader doesn't report anything other than 106k) - but when I read back 2A78 it was 0. Is this expected behavior?

    I tried various APP on a Samsung S4 and none of them report the data rate (not even 106k). What did you use? Where was this information? 

    Please help. Many thanks. 

  • Hi James,

    What chip revision are you using?  This can be found in the lower right corner of the topside marking on the chip.  it should be either C or D.  The address used for the new bit rate capability is different for each revision.  See the examples below of both.  In order to read back the correct address, you need to do this before exiting test mode as this reconfigures the addresses(see revD example below).  This is essentially a patch mechanism to allow changing of certain addresses.  Also, it looks like the datasheet needs to correctly reflect this.  I can get this updated.

    The S4 will not switch to 848kbps as of right now.  This is based on the way the firmware in the NFC S4 is implemented.  Future revisions of this firmware should also support the higher data rates.  From testing, it appears that the NXP based phones are the only ones supporting higher data rates for tags.  We have confirmed this with the Galaxy Nexus and Note2 devices.  I am able to determine when the phones are switching to a higher data rate by "sniffing" the over the air communication with a protocol analyzer from FTE as shown below. 

    http://www.fte.com/products/nfc.aspx   

        /****************************************************************************/
        /* This code is used to change data rate capability (revD)                  */
        /****************************************************************************/
    
    	Write_Register(TEST_MODE_REG, TEST_MODE_KEY);   //unlock test mode
    	Write_Register(CONTROL_REG, TEST430_ENABLE);    //enable test mode, now have to use actual addresses
    	Write_Register(0x2a7c, 0xC4);                   //the bit rate capability setting, 0xC4=848kbits
    	flags = Read_Register(0x2a7c);
    	Write_Register(0x2814, 0);                      //exit test mode (CONTROL_REG is at real address 0x2814)
    	Write_Register(TEST_MODE_REG, 0);               //exiting this mode, RF is disabled as Control register is set to 0
    
     /****************************************************************************/
        /* This code is used to change data rate capability(revC)                   */
        /****************************************************************************/
    
    	Write_Register(TEST_MODE_REG, TEST_MODE_KEY);   //unlock test mode
    	Write_Register(CONTROL_REG, TEST430_ENABLE);    //enable test mode, now have to use actual addresses
    	Write_Register(0x2aa4, 0xC4);                   //the bit rate capability setting, 0xC4=848kbits
    	Write_Register(0x2814, 0);                      //exit test mode (CONTROL_REG is at real address 0x2814)
    	Write_Register(TEST_MODE_REG, 0);               //exiting this mode, RF is disabled as Control register is set to 0

     

  • Hi Eddie, thanks for your really useful and detailed prompt reply. Excited to test this. Yes please do get the datasheet updated as it was not correct.

    I am using rev c (0101 = version response).

    Where did the  code you provide come from?

    Secondly, please could you confirm the values of all the defines e.g. what are the values of

    TEST_MODE_REG,
    TEST_MODE_KEY,
    CONTROL_REG,
    TEST430_ENABLE ...just in case this catches me out.

    Cheers!!
  • The code example from the boosterpack includes the data rate code. 

    http://www.ti.com/devnet/docs/catalog/thirdpartydevtoolfolder.tsp?actionPerformed=productFolder&productId=18020

    #define TEST_MODE_KEY 		0x004E
    #define CONTROL_REG 		0xFFFE
    #define TEST_MODE_REG		0xFFE0
    #define TEST430_ENABLE		BIT7            //bit7 of control register