I'm trying to get the PN7150 (PN7150B0HN/C11002Y specifically) to do a self-test of the antenna circuitry (see if all the passive in the antenna circuit are soldered correctly).
I'm doing this with a simple code written for the Teensy 3.2 that I run from the Arduino IDE. First, I tried with some code that I took from: pn7150 self test which should read the TxLDO current.
// Check NFC antenna
uint8_t testAntenna[] = {0x2F, 0x3D, 0x02, 0xC8, 0x60, 0x03};
uint8_t response[MAX_NCI_FRAME_SIZE] = {0};
uint16_t respLen;
NxpNci_HostTransceive(testAntenna, sizeof(testAntenna), response, sizeof(response), &respLen);
Serial.println("Antenna read: " + String(response[0], HEX));
Serial.println("Antenna read: " + String(response[1], HEX));
Serial.println("Antenna read: " + String(response[2], HEX));
Serial.println("Antenna read: " + String(response[3], HEX));
Serial.println("Antenna read: " + String(response[4], HEX));
Serial.println("Antenna read: " + String(response[5], HEX));
Which should be an AGC value reading with the default values. It gives me:
Antenna read: 4f
Antenna read: 3d
Antenna read: 1
Antenna read: 0
Antenna read: 0
Antenna read: 0
Which, with 11.3 from UM10936 (PN7150 user guide) (by the way, the chapter numbering in UM10936 seems wrong) seems to say "Test execution rejected (PN7150 in wrong state)". Why is that?
What am I doing wrong?
Hello,
There is one byte missing in the Control Packet that is being sent. The Payload Length (L) also has to be included.
It shall go right after the OID field in the Control Packet, resulting as follows:
uint8_t testAntenna[] = {0x2F, 0x3D, 0x04, 0x02, 0xC8, 0x60, 0x03};
Regards,
Ivan.
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------