Output power on st25ru3993 really low
Hi ST,
We bought a ST25RU3993-HEPV last year to evaluate the RFID chip and wanted to control it using SPI (You already helped us with that question and this one). The SPI master is a Cortex A15.
We are currently adapting ST code into our newly created Linux Device driver. We tested the driver to read/write registers, the IRQ is working properly, and the selftests done by ST st25RU3993Initialize function are OK.
However, when we try to read a tag using inventoryGen2 function in evalAPI_commands.c file, we can't manage to have more than -17dbm in output of the spectrum analyser. We can see that we are emitting at the good frequencies (Europe profile), but the output power with the internal power amplifier are nowhere near the experiments we did with a non modified EVAL board (-2db).
Currently, here are the calls we do to initialize and run a scan:
Note that spictx is just the context of the 25ru3993 device to be able to communicate with it by SPI.
/* Initialization */
initializeFrequencies();
st25RU3993Initialize(spictx);
initCommands(spictx);
checkAndOpenSession(spictx, SESSION_GEN2);
ENEXTIRQ(spictx);
/* Gen2 Inventory */
for (i=0; i<rounds; ++i ) {
inventoryGen2(spictx);
}Information about the execution:
- External PA is disabled
- Just before calling gen2SearchForTags function, in inventoryGen2
- cycleData->statistics.sensitivity=3
- cycleData->statistics.frequency=865700
- cycleData->statistics.tuningStatus=0
- After calling st25RU3993AntennaPower and activating autoAck (begining of gen2SearchForTags function), we have the following register values:
- The AGCANDSTATUS register (2Ah) value is 8b. PLL Is locked.
- Protocol Control register (01h) has value 0x20. AutoAck is enabled, Gen2 protocol is selected
- Device status control register (00h) has value 0x03. The receiver is enabled, Tx RF field and receiver are enabled.
- When the IRQ is called, the IRQ registers value is 0x01 (No response interrupt)
- The Rx no response time register (07h) has value 0x5 instead of the default 0xf, giving less time to the tags to answer.
- We tried with AutoAck disabled, and the received IRQ is 0x81 since we need to acknowledge the tx by ourselves.
Modifications done to ST code:
- Added SPI context to all necessary functions.
- Replaced HAL time functions by Linux kernel ktime ones.
- Replaced floating point divisions by registers shift / euclidean divisions.
Can you confirm that we did not miss any commands for initialization, and can you help us debugging this output power problem ?
