Good Evening,
First I would like to preface this by stating that the PN7150 controller is very nifty and has made my life in regards to NFC control much more straight forward.
However there are a few major issues I've encountered when using this product.
When using the TAG-CMD Interface with the MIFARE classic protocol there doesn't appear to be ANY functionality built in to simply check whether a tag is in the field or not.
The RF_INTERFACE_ACTIVATED_NTF is the only one, but this does not inform me if the tag has been removed.
The RF_FIELD_NTF appears to be overwritten inside of the TAG_COMMAND interface being replaced by the "PRESENCE CHECK", which unfortunately is only compatible with ISO_DEP protocol which I am not using (as stated above I am using MIFARE CLASSIC)
Why does this matter?
I have noticed after months of testing that if there happens to be a tag present IMMEDIATELY after the RF_DISCOVERY command is called - the PN7150 will not:
A - throw the external interrupt high
B- have any useable data to be read -even if we do a forced I2C read of the bus.
A card can even be present in the field, and no data will be read from it.
The only thing I haven't tried is force reading the card (using XCHG_DATA_REQ) and sending a MIFARE authentication command. Relying on a timeout while the user is sitting there waiting is not ideal.
This is a major state machine flaw - as - if this event happens, it essentially bricks the device because the RF field is active, but there is nothing telling the DH to send commands (including the RF_DEACTIVATE command).
I have come up with a number of attempted recovery techniques which are very unreliable as the controller seems to behave differently depending on the scenario.
I am designing an application for a entry system and (as you might have guessed) there is no way of knowing when a tag will be present) otherwise I would use a different method to detect when there should or should not be a card/tag present.
If there is a way - please god can somebody from your engineering staff point me in the right direction I have sunk many hours trying to understand this and I am about to give up on this controller.
Thanks,
Cole Radoja
Hi Crad:
Thanks for your feedback.
Please be kindly noted that PN7150 is not recommended for new designs. The replacement for this product is the PN7160.
For your issue, could you please let me know if this issue can be reproduced with NXP released PN7150 development Kits? which host MCU you are using?
Regards
Daniel
PIC24FJ128GL406. Is the main MCU.
Unfortunately I don't have access to any of your development boards to test this although I wish I did.
I've learned a few new things since this message.
1. Rf_field_info_ntf can only be accessed in listen mode, not in any poll modes. Both the NCI and pn7150 user manual documentation fail to mention this or elaborate on this it is knowledge expected for developers to know before hand which isn't right. I've noticed this pattern in most of your documentation and would simply ask - why do you not include any example frames for any of your commands? Especially the proprietary ones which are built on top of an already existing and frankly bulky and dated interface ( NCI 1.1)
2. Presence check - proprietary command GID 0b1111 and OID command 0x11 during active phase ( which according to the documentation is the only phase this can be called) breaks the IC causing it to reset.
3. I know the syntax and the methodology I'm using is correct because I'm using other proprietary commands with the same GID in the same way ( different OIDs) and they do what they are supposed to do.
4. The only way for me to tell if a tag is in the field is using proprietary command 0x33 ( I think is the right hex value from memory) which spits out the digital representation of the AGC value. This works sort of but is hardly reliable when testing quick placement and removal of tags.
A few further questions for you :
1. Is there any reason to believe pn7160 has fixes for some of this stuff? I have some of them on me I can test but we're trying to roll out production of this board set and I don't want to change a major component like this until I know it is fully cross compatible.
Kind regards,
Cole