cancel
Showing results for 
Search instead for 
Did you mean: 

Questions about configurations of ST25R3916 for Transparent Mode (Passive/Active Target) for ISO14443 Type A/B and ISO15693

ben_hw_sw
Associate II

1) How to configure ST25R3916 in Transparent Mode for Passive Target/Active Target for ISO14443A/B and ISO15693 TX coding & RX decoding (Datasheet §2.2.12 & §2.2.13) ?

1-1) How to configure Transparent Mode in Passive Target for ISO14443A/B, ISO15693 and so directly configure the modulation of transmitter (for TX coding on MOSI pin) and digitized subcarrier configuration (for RX MISO pin) ?

  • Could you mainly provide details on required registers to modify if there is variation depending on standard ISO14443A/B, ISO15693, if possible with AGC / NSR(Noise Suppression configuration details)

1-2) How to configure Transparent Mode in Active Target for ISO14443A/B, ISO15693 and so directly configure the modulation of transmitter (for TX coding on MOSI pin) and RX decoding "digitized subcarrier configuration" (on RX MISO pin) ?

  • The main idea is to understand how to configure the ST25R3916 in Transparent mode to configure following features (described in Datasheet §2.2.2 Receiver):
  1. "two gain and filtering stages".
  2. "final digitizer stage".
  3. With details of configuration for either "AM/PM demodulator" or "I/Q demodulator".
  4. Provide details to configure "The filter characteristics" to be adjusted to match the selected RF mode (mainly ISO14443A/B, ISO15693) and bit rate to optimize performance (subcarrier frequencies from 212 to 848 kHz are supported).
  5. Finally configure receiver AGC and squelch .

2) Can we switch from Passive Target to Active Target without exiting Transparent Mode ? (or does it is required to exit Transparent Mode set some registers to switch Passive/Active, Configure TX coding/RX decoding... then re-enter Transparent Mode ?

Update 09 Dec 2019:

New datasheet DS12484 Rev 2 has been released today with lot of improvements but those questions related to Transparent Mode with Passive/Active Target are not answered in it, so all the questions are always open and it will be nice to have answer and why not a specific Application Note to have clear description for those advanced mode with lot of details.

Best Regards,

Benjamin

1 ACCEPTED SOLUTION

Accepted Solutions
Ulysses HERNIOSUS
ST Employee

Hi Benjamin,

using MCU_CLK in this way should work. We had a demo in the past with some predecessor chip which used the same/similar approach using a different MCU.

As I said: Perform analog configs as defined in rfal_analogConfigTbl.h and used by the rfalSetMode(). Then set the wanted operation mode (Operation Control and Mode registers) (Active Target/Initiatior, Passive Target/Initiator) and enter Transparent mode. It would probably be a good idea to let rfalSetMode() do its job and after that instead of calling rfalStartTransceive() you call your own functions which make use of the transparent mode.

Please note that that if you have set dis_corr=0 you will not have the envelope as in ST25R3911B but actually the digitized correlator signal. Which if you want to decode various protocols with different subcarrier signals will not be of use for you.

Also you need to choose one filter setting which may actually not give you the best performance for all protocols at the same time.

Regards, Ulysses

View solution in original post

9 REPLIES 9
Ulysses HERNIOSUS
ST Employee

Hi Benjamin,

Let me first ask you what you are actually pursuing. To our knowledge all protocols can be implemented by using normal / stream modes. Do you really need transparent mode?

Using transparent mode is a rather seldom use case, this mode is typically only used for prototyping inside our labs. We only have internal documentation on it which is not in a state that we can actually share it.

Transparent mode (similar as in ST25R3911B) allows to have all necessary modulation and demodulated signals available on ins MOSI (modulation), MISO, IRQ (both demodulated), SCLK (receiver enable), MCU_CLK (extracted clock), EXT_LM (field detector) as digital signals. The configuration of the current modulation/demodulation/field detector parameters is done by configuring the registers. Of course accessing registers to change any of these parameters will cause leaving the transparent mode. You should set all the analog / operating parameters as you would also do for non-transparent mode.

Regards, Ulysses

ben_hw_sw
Associate II

Hi Ulysses,

Yes I really need transparent mode (or stream mode in best case), the use cases are numerous:

1) Use ST25R3916 as passive sniffer (to capture TAG & Reader) for debug, R&D and to check Reader/TAG compliance with different standards.

2) Use ST25R3916 in Emulation mode for ISO15693 (which is not possible in normal mode as it is not supported).

3) Use ST25R3916 in Emulation mode for non standard tags ISO144443A... (Example Mifare or other Custom Tags).

The idea is exactly to configure the ST25R3916 for low level modulation and demodulation with MOSI/MISO pins... (for that I'm using a fast STM32 > 100MHz with fast GPIO > 80MHz and I even plan to switch to latest STM32H7 Dual Core to have a big margin to do everything in software only).

It is why I need details on registers usage for those use cases, for the configuration of registers for Active Target/Passive Target and the configuration of the modulation/demodulation/field detector/filters/AGC/Squelsh... parameters.

Best Regards,

Benjamin

Ulysses HERNIOSUS
ST Employee

Hi Benjamin,

such applications typically require some dedicated hw like an FPGA or at least a feedback from the MCU_CLK to the MCU to be able to drive signals in a synchronous way. I am not sure simple bit-banging on an MCU will suffice.

For all the analog parameters: They are the same as for normal mode. Just extract them from our software deliveries (rfal_analogConfigTbl.h). AFAIK Squelch is not available but could be triggered from normal mode. AGC should work as configured.

Regards, Ulysses

ben_hw_sw
Associate II

Hi Ulysses,

I'm working on NFC since few years doing all from scratch on MCU (STM32) + NFC chipset (Reader Passive/Active).

I'm not doing bit-banging in fact as I'm using MCU SPI slave (DMA with FIFO...) for the streaming RX or TX with ST25R3916 Transparent Mode (in case ST25R3916 stream mode is too limited for example to capture both Reader & Tag as a Passive Target...).

  • So by using STM32 SPI slave MOSI/MISO with SPI clock connected to the ST25R3916 MCU_CLK, the data stream (digital carrier) on MISO or MOSI is perfectly synchronized to a multiple of NFC clock 13.56MHz configurable on ST25R3916 side (depending on symbol rate), so with such architecture it is very easy to stream RX or TX from/to MCU SPI Slave<=>ST25R3916 MISO/MOSI depending on what we want to do.
    • Note: I'm also using SPI master for normal mode on other pins to quickly switch from any mode on the fly without re-configuring anything on MCU side.

I have produced few prototypes boards with ST25R3916 on Aug 2019, and I'm designing a new revision to add other features like CSI / CSO to validate analog and digital output thanks to latest ST25R3916 Datasheet DS12484 Rev 2 update.

  • I have validated my Custom NFC Antenna + Tuning Capacitor with my HP VNA ...

So it will be very welcome if you could provide more details on the register(s) related to low level stuff especially Active Target and Passive Target in Transparent Mode:

  • Which register(s) to change to set the ST25R3916 as Active Target in Transparent Mode for ISO14443 Type A/B and especially ISO15693
  • Which register(s) ro change to set the ST25R3916 as Passive Target in Transparent Mode for ISO14443 Type A/B and especially ISO15693

Best Regards,

Benjamin

Ulysses HERNIOSUS
ST Employee

Hi Benjamin,

using MCU_CLK in this way should work. We had a demo in the past with some predecessor chip which used the same/similar approach using a different MCU.

As I said: Perform analog configs as defined in rfal_analogConfigTbl.h and used by the rfalSetMode(). Then set the wanted operation mode (Operation Control and Mode registers) (Active Target/Initiatior, Passive Target/Initiator) and enter Transparent mode. It would probably be a good idea to let rfalSetMode() do its job and after that instead of calling rfalStartTransceive() you call your own functions which make use of the transparent mode.

Please note that that if you have set dis_corr=0 you will not have the envelope as in ST25R3911B but actually the digitized correlator signal. Which if you want to decode various protocols with different subcarrier signals will not be of use for you.

Also you need to choose one filter setting which may actually not give you the best performance for all protocols at the same time.

Regards, Ulysses

IAdly.1
Associate

Hi Benjamin,

Have you succeeded in operating the the ST25R3016 as card emulation in transparent mode? I have been trying for several days following Ulysses recomendations with no luck, seems I am missing something here. I can receive pretty well at the MISO pin but I cannot trasmit through the MOSI anything. Appreciate your help very much.

Best regards,

Ihab

ben_hw_sw
Associate II

Hi Ihab,

So far I have not implemented/tested ST25R3916 "Transparent Mode" as I'm finishing the latest PCB revision (including latest features of latest datasheet DS12484 Rev 2) and working on the firmware too (with standard features like Reader ...)

I have already validated my different PCB revision with ST tools

It will be interesting your provide some details picture/capture to check you are in the right mode "Transparent Mode" with Logic Analyzer traces in parallel to Oscilloscope Traces (500MSPS@8bits) to check the effect on MISO/MOSI.

I'm using a PicoScope 3406DMSO for such advanced traces with the help of my own Calibration Coil (0.5x72x42 ISO/IEC 10373-6:2016) ...

I'm also using cheap Logic Analyzer with PulseView for the SPI analyze (with my own sigrok/plugin to be released as open source)

Thanks to provide PulseView traces/Picture+Oscilloscope to check what happen (as anyway I plan to work on that in February)

Note: I will publish later (when my ST25R3916 boards are finished/produced/available) my firmware as open source firmware on github when something will be ready so you are welcome to contribute.

Regards,

Benjamin

Hi Benjamin,

Thanks for your offer to help. I managed to find the problem, for some reason, I forgot to enable the automatic field detection (least two bits in the Operation control register) before initiating the communication as target. I will add some captures when I sort out all issues, yet having some minor issues.

Regards,

Ihab

It will be interesting to share it with some captures (Sigrok/PulseView+Scope capture..) as it is clearly what is missing on this chipset a good Application Note with some capture of such modes with Oscilloscope + sigrok/pulseview files (we can even have oscilloscope and SPI data in PulseView now) as the registers configurations are quite complex to debug.