PN532 NFC RFID module について調べる


(Felica/Mifare/NFC チャレンジシリーズ) その他の記事はこちら 「Felica/Mifare/NFC でいろいろ実験」
https://qiita.com/nanbuwks/items/1f416d6e45a87250ee0a

-----

「Arduino ESP32 と STM32 で NFC RFID-RC522」
https://qiita.com/nanbuwks/items/96c3c2d2af2cf97f3797
ではMiFare カードを利用しましたが、FeliCa で同様のことを試してみたいと思い、Felica 対応のボードを入手してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/3ab290bb-796e-f7b4-5f91-ce81b182e1a1.png)

入手したのは PN532 NFC RFID module です。
このボードは RFID-RC522 と同様、NFC の格安モジュールです。そしてこちらは Felica にも対応しています。
「PN532 NFC Module SPI I2C Reader/Writer Breakout Board」としてAmazonで購入しました。

今回はこのボードの素性を調べてみます。

# オリジナルとバリエーション

いろんなところから購入できます。今回は Amazon で購入しましたが、 V3 という名前が付いています。
どこかのボードのコピー品かな？ と思って調べたら、オリジナルはこれらしいです。
「PN532 NFC RFID module V3 kits -- NFC with Android phone [WIRELESS-NFC-PN532] - $13.90 : Elechouse, Arduino Play House」
https://elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_93&products_id=2242

本家では、今はV4が出ているみたいですね。
「PN532 NFC RFID module V4 [WIRELESS-NFC-PN532_V4] - $29.90 : Elechouse, Arduino Play House」
https://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=90_93&products_id=2276

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/fc89a022-c393-eb2c-4765-04ab06166a05.png)

また、本家のページではチップの違いによって異なる製品を作っているみたいです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/87a244c6-150d-806c-789b-08f8fb39a0be.png)

# ドキュメント

オリジナル製品の説明書はこちら
http://www.elechouse.com/elechouse/images/product/PN532_module_V3/PN532_%20Manual_V3.pdf

# NXP PN5321

基板上には NFC コントローラ IC として NXP PN5321 が載っています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5d46784c-325c-9fc2-5564-99d4a851455d.png)



https://www.nxp.com/docs/en/nxp/data-sheets/PN532_C1.pdf
によると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e55ec157-76a3-348d-7155-152ac98b840f.png)

PN5321 とマーキングされているのは、 PN5321A3HN/C1xx を示しているのかな？

そうだとすると、PN5321とマーキングされているICはPN532と考えて良さそうです。
また、

> The PN532 is a highly integrated transceiver module for contactless communication at
13.56 MHz based on the 80C51 microcontroller core. It supports 6 different operating
modes:
• ISO/IEC 14443A/MIFARE Reader/Writer
• FeliCa Reader/Writer
• ISO/IEC 14443B Reader/Writer
• ISO/IEC 14443A/MIFARE Card MIFARE Classic 1K or MIFARE Classic 4K card
emulation mode
• FeliCa Card emulation
• ISO/IEC 18092, ECMA 340 Peer-to-Peer


その他のドキュメントはこちら
- ユーザマニュアル
  - https://www.nxp.com/docs/en/user-guide/141520.pdf
- アプリケーションノート
  - https://www.nxp.com/docs/en/nxp/application-notes/AN133910.pdf

# 電源と信号レベル

I2C と SPI ポートの VCC は PN532 のPin40 "VBAT" に接続されています。
VBAT は電源のメインサプライとしていて、定格が 2.7 - 5.5 V となっています。

I2C信号レベルはPVDD
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/8195bc1c-79f4-3480-f8d4-bb318c6242df.png)
SPI信号レベルもPVDD
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/f372310f-be51-2b96-5ea6-f24646d82e35.png)

PVDDって何かな？

PVDDは3.6Vまでが推奨で、IC外部から供給され、Padの電圧レファレンスとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/dfeb6949-b4d1-00fb-576c-712bc1eb9aa2.png)

さて、PN532 内部にはLDOが内蔵されていて、VBATから内部の動作に使う電圧を作成、更に外部にもDVDD端子(パッド39)から供給します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/50d1d8e2-fe08-248f-f0d4-4b876cc07622.png)

そしてこの Breakout Boardでは DVDD が TVDD(パッド5)と AVDD(パッド8)、PVDD(パッド23) に接続、LDOの出力が各リファレンス電圧に設定されています。

LDOの出力電圧は下記の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/7eb1d83a-3a2a-4c87-d0ff-317c4f95da71.png)

ということは、この Breakout Board の VDD に 5V の供給をした場合でも、I/Oは最大3Vレベルということになります。

~~赤基板の I2C インターフェースではバス上にトランジスタが乗っていてバッファになっているようですが、SPI インターフェースでは保護抵抗がついているだけで5Vレベルの信号は避けたほうが良さそうです。~~

説明書
http://www.elechouse.com/elechouse/images/product/PN532_module_V3/PN532_%20Manual_V3.pdf
を読むと、

> SPI: 3.3V TTL with 100 ohm resistors in series. It could be connected directly to 5V interface of microcontroller such as
Arduino

とありました。5Vレベルの信号も大丈夫かな？

# 技適など

NFCカードリーダーは「誘導式読み書き通信設備」として使用する場合、設置許可不要設備にあたらないものは総務大臣の高周波利用設備の設置許可が必要となります。設置許可不要設備として使用する場合は、形式認定を受けるなどの要件を満たす必要があります。

https://www.tele.soumu.go.jp/j/sys/others/highfre/

この Breakout Board は一切そのような許可や認定を受けていないので、適宜要件を満たして使用する必要があります。


# 赤基板上のインターフェース

2.54mmピッチ4ピンのI2Cポート、8ピンのSPIポートがついています。
表面には設定スイッチがついています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/5e445e4c-4e24-f97a-7862-80852706d338.png)
これはI2Cで設定した場合。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/34a7751d-94a1-4fc7-24ed-99b43e93e200.png)
これはSPIで設定した場合。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/37ee759b-a8d2-4ab1-11db-977b3d19c888.png)

以下は SPI で Arduino UNO に接続した結線例です。この結線で動作することを確認していますが、
上記「# 電源と信号レベル」において
> 5Vレベルの信号は避けたほうが良さそうです。

と記したとおり、このように使用することはオススメできません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/a508543a-90d9-23c0-7379-063b4097ae64.png)

裏面。1.27 mm ピッチポートに書かれたシルクを見ると、 PN532 のピン12,13,24,32~38が引き出されているのがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/70eaa441-44f7-d241-8087-184b3165bcdc.png)


# 安定化対策

使用していると不安定なことがありました。特に FeliCa を対象にしているときに全く反応が無かったりします。

こちらに記した安定化対策が顕著に効果がありました。
「NFC モジュールの動作安定性を改善する」
https://qiita.com/nanbuwks/items/a9217ba2e8f206b899b1

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/e876f51d-7773-0e24-c6f3-55b741c87ad6.png)


この対策は module 使用に当たり必須でしょう。