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.

TRF7970A: P2P Target not receiving ATR_REQ

Part Number: TRF7970A

Hello TI Team,

 

I am trying to establish a P2P communication between to TRF7970A devices. My first step is to implement a passive Target device with 424 kbps and use an TRF7970A Boosterpack in initator mode (see picture TI_NFC_TOOL_INITATOR.PNG)

 

According to your “P2P SNEP Operation Overview” I should receive an ATR_REQ command after sending the SENF_RES.

But I only receiving some protocol errors IrqStatus(0x0C, val == 0x50) and after that the procedure is repeating with a sensf request (see putty output, picture UART_OUTPUT.PNG). Could you please tell what I miss here?

 

My target implantation is based on your implementation I found here:

www.ti.com/.../sloa192b.zip

 

After receiving a valid SENSF_REQ command from the initator I switch the Target device frequency to 424 kbs and send the sensf response:


bool Trf7970a::nfcfProcessReceivedRequest(uint8_t* dataReceived, uint8_t size){
	uint8_t commandLength = dataReceived[0];
	uint8_t command = dataReceived[1];

	// Handle only SENSF_REQ_CMD for now
	if(command==SENSF_REQ && commandLength == 0x06 && size==0x06){
		if(dataReceived[2]==0xff && dataReceived[3]==0xff){
//			NRF_LOG_INFO("Send sensf res")
			//switch Baudrate
			writeRegister(ISO_CONTROL, 0x23);
			// Register 09h. Modulator Control Register - ASK (10 %)
			writeRegister(MODULATOR_SYS_CLK_CONTROL, 0x00);
			sendSensF_Res();
			return true;
		}else{
			return false;
		}
	}else{
		return false;
	}
}

 

void Trf7970a::sendSensF_Res(){
	uint8_t ui8NFC_F_Packet[18];
	//
	// Length
	//
	ui8NFC_F_Packet[0] = 0x12;
	//
	// Command
	//
	ui8NFC_F_Packet[1] = SENSF_RES;

	ui8NFC_F_Packet[2] = 0x01;		// NFCID
	ui8NFC_F_Packet[3] = 0xFE;		// NFCID
	ui8NFC_F_Packet[4] = 0x88;		// NFCID
	ui8NFC_F_Packet[5] = 0x77;		// NFCID
	ui8NFC_F_Packet[6] = 0x66;		// NFCID
	ui8NFC_F_Packet[7] = 0x55;		// NFCID
	ui8NFC_F_Packet[8] = 0x44;		// NFCID
	ui8NFC_F_Packet[9] = 0x33;		// NFCID

	ui8NFC_F_Packet[10] = 0xC0;		// PAD0
	ui8NFC_F_Packet[11] = 0xC1;		// PAD0

	ui8NFC_F_Packet[12] = 0xC2;		// PAD1
	ui8NFC_F_Packet[13] = 0xC3;		// PAD1
	ui8NFC_F_Packet[14] = 0xC4;		// PAD1


	ui8NFC_F_Packet[15] = 0xC5;		// MRTI
	ui8NFC_F_Packet[16] = 0xC6;		// MRTI
	ui8NFC_F_Packet[17] = 0xC7;		// MRTI

	Delay::ms(2250);
	writeFifo(ui8NFC_F_Packet,CRC_BIT_ENABLE, sizeof(ui8NFC_F_Packet));

}

void Trf7970a::writeFifo(uint8_t* data, uint8_t size){

		//Read register periodically
		uint8_t writeFifo = WRITE|CONTINUOUS_ON|FIFO_IO_REGISTER;
		uint8_t data2Write[size+1] = {writeFifo};

		memcpy(&(data2Write[1]), data, size);

		transmitt(&writeFifo, sizeof(writeFifo), nullptr, 0);

}

 

  • Hello Arthur,

    this is a question I don't really have experience with. I will ask a colleague to help with this. We will come back to you the next days when we have news.

    Best regards,

    Helfried

     

  • Hello Arthur,

    Are you testing with two LaunchPad and BoosterPack combinations or do you have a custom board for one side? If a custom board, what are the antenna specs on it and the VIN voltage for the TRF7970A?

    What is the range you are testing? Do you have a test fixture to keep the range constant or are you moving the board in and out of range?

    Have you tried testing at 106 kbps first? How about 212 kbps? Do either of those work?

    Usually a 0x50 would indicate an issue with the RF link which typically is due to hardware factors and communication range. The higher the data rate, the less range you will have. So what might work at 106 kbps may not work at 424 kbps range wise.

    Also what register settings are you using? If you can share them all, that would be good, or share these key ones: Register 0x00, 0x0A, 0x0B, 0x18.

  • Hi Ralph,

    Are you testing with two LaunchPad and BoosterPack combinations or do you have a custom board for one side? If a custom board, what are the antenna specs on it and the VIN voltage for the TRF7970A?

    I tested both. I had no communication problems with two LaunchPads, BoosterPacks.

    After that I used a Boosterpack for my own devboard, on which I want to implement the passive target mode.

    What is the range you are testing? Do you have a test fixture to keep the range constant or are you moving the board in and out of range?

    I have a constant range. The initial rf collision (implemented on the target device) returns an signal strength of 7 if the initator field is activated.

    Have you tried testing at 106 kbps first? How about 212 kbps? Do either of those work?

    I test 106 kbps and 212 kbps. Unfortunately with the same results.

    Also what register settings are you using? If you can share them all, that would be good, or share these key ones: Register 0x00, 0x0A, 0x0B

    These are the Register settings for the target device

    0x00 = 0x2

    0x01 = 0x23

    0x02 = 0x0

    0x03 = 0x0

    0x04 = 0xC1

    0x05 = 0xBA

    0x06 = 0x0

    0x07 = 0xE

    0x08 = 0x7

    0x09 = 0x0

    0x0A = 0x10

    0x0B = 0x1

    0x0C = 0x0

    0x0D = 0x3E

    0x0E = 0x0

    0x0F = 0x40

    0x10 - 0x1C = 0x0

     

    I implemented the initator device yesterday, on an other devboard with an Boosterpack, with the same results. I can send the request command from the initator to the target device but the response of the target

    does not trigger an interrupt on the initator device. I will record the spi communication of the initator and target device for you.

    Edit:

    These are the register settings for the initiator device

    0x00 =0x20

    0x01 =0xF3

    0x02 =0x0

    0x03 =0x0

    0x04 =0xC1

    0x05 =0xC1

    0x06 =0x0

    0x07 =0x10

    0x08 =0x0

    0x09 =0x1

    0x0A =0xF0

    0x0B =0x0

    0x0C =0x0

    0x0D =0x3E

    0x0E =0x0

    0x0F = 0x40

    0x10 - 0x1C = 0x0

    Initator spi send request command:

    Target receives request:

    Target write response:

    I would expect, that the irq line of the initator goes high and the response can be read in the fifo buffer.

    Thank you for your help!

    Best Regards

    Arthur

  • Hi,

    problem is solved by adding us delays after write register commands and deactivating the periodical rf collision.

    Thank you for your time

    Best Regards,

    Arthur