cancel
Showing results for 
Search instead for 
Did you mean: 

Questions about ST25DV16 + Nordic 52832

KLam.11
Associate II

Hello,

I'm using adafruit ST25DV module with Nordic 52832 as host MCU, and porting the code to host bases on the ST25DV_DISCOVERY_FW_V1.1.2 demo, then encountered below issues:

1) In the demo, after enabling FTM, host MCU will keep monitoring the it status MsgInMailbox by calling BSP_NFCTAG_ReadITSTStatus_Dyn but after porting, host MCU never get this interrupt but can get the RFPutMsg by calling ST25DV_i2c_ReadMBCtrl_Dyn when App sends data to ST25DV.

I can confirm I've enabled (ST25DV_GPO_RFPUTMSG_MASK | ST25DV_GPO_RFGETMSG_MASK | ST25DV_GPO_ENABLE_MASK) in GPO register, what other reason may cause this happen?

2) By monitoring RFPutMsg in ST25DV_i2c_ReadMBCtrl_Dyn in the code, host MCU can easily receive 256 bytes, 512 bytes data from App, but when App sends more data let says 16000 bytes, it keeps intermittent, App keeps retry and host MCU cannot get correct data from ST25DV, is it related to questions 1?

3) During testing, I keep monitoring every second on the RF field by calling ST25DV_i2c_GetRFField_Dyn, after the phone closed to the NFC antenna, in most cases, it returns FIELD OFF after few seconds, is the field not stable or somehow the phone will off the nfc field after few seconds if not data transfer?

Thanks,

Kevin

1 ACCEPTED SOLUTION

Accepted Solutions
Rene Lenerve
ST Employee

Hi @KLam.11​,

Have you tried to manually generate the interruption (using a GPIO on the MCU, or by changing the GPO level with a wire and setting a breakpoint in the interruption), to see if the interrupt is raised. In that case, If the interrupt is not detected it means that there is something missing in the MCU configuration. Otherwise if the interruption is detected you could check the pulse duration on the GPO if it is not too short for your MCU.

For your 2), if the GPO is not working well the FTM demo cannot work. A workaround could be to use polling on GPO instead of interruptions.

For your 3), Android is continuously checking Tags presence for each Type (Type 2, Type 3, Type 4, Type V, ...), and to change Tag Type detection the field is cut off. If you want to have the Field turned on for a long period, you need to do it with an Application managing the NFC.

I hope this could help you.

Best Regards.

View solution in original post

15 REPLIES 15
Rene Lenerve
ST Employee

Hi @KLam.11​ ,

On the adafruit ST25DV, the GPO pin is directly connected to the connector and there is no Pull-Up resistor. With the ST25DV package embedded on the adafruit board, this GPO is in open drain mode and needs a Pull-Up resistor to operate correctly. Can you confirm if there is a pull-Up resistor on your setup, connected to the GPO?

Best Regards.

KLam.11
Associate II

Hi Rene,

I've set internal pull-up at host MCU and confirmed with scope, the GPO pin is working properly physically and host MCU can get every interrupt after field change in my testing, but don't know why the register value gets from BSP_NFCTAG_ReadITSTStatus_Dyn always 0.

Thank and regards,

Rene Lenerve
ST Employee

Hi @KLam.11​,

Have you tried to manually generate the interruption (using a GPIO on the MCU, or by changing the GPO level with a wire and setting a breakpoint in the interruption), to see if the interrupt is raised. In that case, If the interrupt is not detected it means that there is something missing in the MCU configuration. Otherwise if the interruption is detected you could check the pulse duration on the GPO if it is not too short for your MCU.

For your 2), if the GPO is not working well the FTM demo cannot work. A workaround could be to use polling on GPO instead of interruptions.

For your 3), Android is continuously checking Tags presence for each Type (Type 2, Type 3, Type 4, Type V, ...), and to change Tag Type detection the field is cut off. If you want to have the Field turned on for a long period, you need to do it with an Application managing the NFC.

I hope this could help you.

Best Regards.

KLam.11
Associate II

Hi Rene,

Thanks for the suggestion, I'm now using the workaround, polling on BSP_NFCTAG_ReadITSTStatus_Dyn in stead of interruptions, and modified a bit on ST demo android app, so far I can send 20kB data from App to host MCU within 28s without intermittent.

Thanks and regards,

Kevin

KLam.11
Associate II

Hi Rene,

I have a question about energy harvesting (EH).

I'm able to send data from App to host MCU via ST25DV with a 3.3V power supply. Now, I would like to enable EH and use V_EH as system voltage. I noted that the V_EH is subject to the size of antenna, so in the current setup, V_EH is around 0.4V with adafruit board.

Is there any reference design that for small size of antenna and boost up to 3.3V?

Thanks and regards,

Kevin

JL. Lebon
ST Employee

Hello,

There is no reference design for EH antenna. You can check the application note AN4913 (https://www.st.com/resource/en/application_note/an4913-energy-harvesting-delivery-impact-on-st25dvi2c-series-behaviour-during-rf-communication-stmicroelectronics.pdf). It gives some figures for a class 1 antenna (credit card size).

Concerning EH, there is several points to check.

First, check that EH is enabled in your ST25DV. There is 2 ways of doing that:

  • permanent EH: you need to write 0x00 in static register EH_MODE (address 0x0002). With this value, EH will be enabled by default aa soon as the RF field is strong enough.
  • temporary EH: you can enable temporarily EH by writing 0x01 in the EH_CTRL_Dyn dynamic register (address 0x2002). The EH will be enable until you write again 0 in this register or until RF field is lost.

The fact that you have only 0.4V on V_EH pin may be because of too weak RF field, or simply because EH is not enabled.

Second point is the antenna size: it is better to have a large antenna, and that the antenna size more or less match the size of the reader's antenna for better matching. In case of Adafruit board, I don't know the exact size of the antenna, but is seems very small, so don't expect a lot of power from EH. Also, antennas with less number of turns are generally better suited for EH.

Last point is the reader power and antenna size. The more power the reader send, the more the tag will get for its EH. For instance, smartphones are generally not very powerfull and are not the best for EH. Also, alignement between reader's antenna and tag's antenna is important, to get max RF field power. With smartphones, it is not always obvious where the antenna is, so difficult to align correctly.

Best regards.

KLam.11
Associate II

Thanks Lebon, after enabling the EH during initialization of mailbox, V_EH is now 3.3.V.

Best regards.

KLam.11
Associate II

Hello Lebon,

We are now trying to use V_EH output of Adafruit board (antenna size 15mm x 25mm) as system power, but the power seems not enough for host MCU and ST25DV data transfer in start Fast Transfer Mode.

According to AN4913, max power P_EH is up to 12.593mW, but it seems doesn't have a relationship between "Antenna Size" and "Power Output", any reference or document to describe how to design the antenna to achieve this P_EH? Please advise.

Thanks and best regards.

JL. Lebon
ST Employee

Hello,

Indeed, there is a relationship between antenna size and power output, even if it is not the only factor.

in AN4913, the figures are given for an class 1 antenna (credit card size), and for a given RF field strength (the 12.593mW are given for a 5.5A/m field strength, measured on a reference ISO15693 tower).

There are 3 main factors that influence energy harvesting:

  • antenna size: larger antenna provides more energy harvesting
  • field strength: the higher it is, the better it is for energy harvesting. This depends on power output of your reader, it's antenna, the distance between reader's antenna and your antenna and the coupling.
  • antenna design: an antenna with low turn count will be better than an antenna with high number of turns.

The adafruit antenna does not match the two antenna criteria. You may try to design a larger antenna with less turns (you will probably have to add an external tuning capacitor in order to be able to reduce the number of turns).

I don't know about your reader, but you may also try different ones with higher power output (I don't know what you are using as a reader?)

You may also try to add a tank capacitor at the output of V_EH to damp the current surge of your application (a few uF up to a hundred uF). That usually helps.

Best regards.