Hello,
I'm having trouble getting the PN7160 to produce a valid RF field when transmitting. I'm trying to set up the chip to work as a tag reader by sending NCI commands directly over I2C, as my system is baremetal. I am using an external 32MHz clock source, and I am also using an external 5.4V supply connected to VDD(UP), with no connection to DCDC_EN on the PN7160.
This is the sequence of commands I am sending, and their responses:
CORE_RESET_CMD
W: [20, 00, 01, 01]
R: [40, 00, 01, 00]
R: [60, 00, 09, 02, 01, 20, 04, 04, 61, 12, 50, 05]
CORE_INIT_CMD
W: [20, 01, 00]
R: [40, 01, 1e, 00, 1a, 7e, 06, 02, 01, d0, 02, ff, ff, 01, ff, 00, 08, 00, 00, 01, 00, 02, 00, 03, 00, 80, 00, 82, 00, 83, 00, 84, 00]
CORE_SET_POWER_MODE_CMD (disable standby)
W: [2f, 00, 01, 00]
R: [4f, 00, 01, 00]
CORE_SET_CONFIG_CMD (TOTAL_DURATION)
W: [20, 02, 05, 01, 00, 02, fe, 01]
R: [40, 02, 02, 00, 00]
CORE_SET_CONFIG_CMD (TAG_DETECTOR_CFG, CLOCK_SEL_CFG, PLL_SETTING, DPLL_SETTING, CLOCK_TO_CFG)
W: [20, 02, 23, 05,
a0, 40, 01, 00,
a0, 03, 01, 00,
a0, 20, 08, 82, a3, 51, b8, 02, f0, f1, 88,
a0, 26, 08, 82, a3, 01, b0, 02, e2, 01, 88,
a0, 04, 01, 01]
R: [40, 02, 02, 00, 00]
CORE_SET_CONFIG_CMD (PMU_CFG)
W: [20, 02, 0f, 01, a0, 0e, 0b, 11, 01, 02, 02, 00, 00, 1e, ff, 00, 10, 0c]
R: [40, 02, 02, 00, 00]
CORE_RESET_CMD
W: [20, 00, 01, 01]
R: [40, 00, 01, 00]
R: [60, 00, 09, 02, 01, 20, 04, 04, 61, 12, 50, 05]
CORE_INIT_CMD
W: [20, 01, 00]
R: [40, 01, 1e, 00, 1a, 7e, 06, 02, 01, d0, 02, ff, ff, 01, ff, 00, 08, 00, 00, 01, 00, 02, 00, 03, 00, 80, 00, 82, 00, 83, 00, 84, 00]
NCI_PROPRIETARY_ACT_CMD
W: [2f, 02, 00]
R: [4f, 02, 05, 00, 00, 01, aa, dd]
RF_DISCOVER_MAP_CMD
W: [21, 00, 04, 01, 02, 01, 01]
R: [41, 00, 01, 00]
CORE_SET_CONFIG_CMD (PA_BAIL_OUT, RF_FIELD_INFO)
W: [20, 02, 06, 02, 08, 00, 80, 01, 01]
R: [40, 02, 02, 00, 00]
RF_DISCOVER_CMD
W: [21, 03, 03, 01, 00, 01]
R: [41, 03, 01, 00]
CORE_GENERIC_ERROR_NTF (DISCOVERY_TARGET_ACTIVATION_FAILED)
R: [60, 07, 01, a1]
That same CORE_GENERIC_ERROR_NTF is continuously sent after starting discovery, and the reader is unable to activate tags passed by the antenna. After troubleshooting the the clock hardware, we probed the TX path before the first inductor in the matching circuit to see if there was at least a carrier being generated. We found that there's a square waveform with a frequency between ~4-6 MHz.
This is one test, where we saw a 5.07MHz wave:
This is another test, where we saw 4.42MHz:
I'm sure there's something wrong in the settings I'm writing to the chip, but I can't seem to figure it out. Could someone please take a look at this and let me know if I'm missing something? Thank you.
Raghib
Solved! Go to Solution.
Hi Daniel,
I found the problem: my settings for PLL_SETTING and DPLL_SETTING were incorrect. I was entering them in big-endian order (e.g. for 32MHz, sending 0x82 first). After changing this to little-endian (e.g. for 32MHz, sending 0x88 first) I got the expected TX waveform out.
Regards,
Raghib
Hi @raghib
CORE_GENERIC_ERROR_NTF "6007A1" interrupts the presence check procedure. This is usually observed when noise is catch on RF. To limit this, RX sensitivity must be adapted to the customer integration.
For more details, please look into the PN7160 RF settings guide.
The RX gain must be adjusted for each technology
Regards
Daniel
Hi Daniel,
I found the problem: my settings for PLL_SETTING and DPLL_SETTING were incorrect. I was entering them in big-endian order (e.g. for 32MHz, sending 0x82 first). After changing this to little-endian (e.g. for 32MHz, sending 0x88 first) I got the expected TX waveform out.
Regards,
Raghib