2016/07/09

[nrf52]NFCタグのサンプルを動かそう

まずは、nRF52832のNFCサンプルが動くか試そう。
このくらいだったらハンダ付けしなくても、ピンを挿すだけで使えるだろう。

 

電源を入れても何も動かなかったのだが、FLASHが空だった。
SoftDeviceはS132v2.0.1を入れておく。

なお、電源はUSB(MiniB)から取るだけでよさそうだ。

image

 

NFCサンプルは、nRF5 SDK v11.0.0のexamples\nfc\record_url\pca10040\armgcc。
ARM-GCCは4.9と、nRF51のときと同じものにした。

何も考えず、makeして、make flash。
そして、Android端末でTagInfoアプリを起動してNFCアンテナに近づける。

image

あっさり動いた。
GCCでも変更せずにビルドできるのは、楽だねぇ。


TagInfoアプリはタグから読めるだけ読もうとするので、えらく時間がかかる。
というのも、Type2Tagに見えるのだが、アドレスが0x100あるのだ。
1アドレス4バイトだから1KB!
すごいねぇ。

搬送波を検知するとLEDが点灯するようなソースになっているけど、この基板にはそういうのがないので、特に光らない。


で、NFCIDだ。
ここを見ると、FICRに初期値が入っているようだ。
まあ、Factory設定だから、それがよいのだろう。
UIDが1~15ってのがすごいな。

ただ、初期値なので、実際の値はNFCTのレジスタに入れるようだ。

  • 4バイトUID
    • SENSRES.NFCIDSIZE = 0
    • NFCID1_W, X, Y, Z
  • 7バイトUID
    • SENSRES.NFCIDSIZE = 1
    • NFCID1_T, U, V, W, X, Y, Z
  • 10バイトUID
    • SENSRES.NFCIDSIZE = 2
    • NFCID1_Q, R, S, T, U, V, W, X, Y, Z

サンプルを動かすと7バイトUIDに見えた。
デフォルトがそうなっているのだろう。
まあ、4バイトは推奨されなくなったので、7バイトなのかな。

components\nfc\t2t_lib\hal_t2t\hal_nfc_t2t.cのhal_nfc_common_hw_setup()でSENSRESを設定していて、Doubleになっていた。
これが初期値か。

そしてその前にNFCID1への設定があるから、それより後で設定すればUIDを好きな値に変更できそうな気がする。
やってみるか。

image

できてしまった。。。
こ、こいつは強力だな。
PN532みたいなR/Wチップの場合、カードエミュレーションさせてもType-AについてはUIDの一部しか変更できなかったのだ。
FeliCaについてはIDmを8桁とも変更できたので、ちょっと危ないと思っていたのだ。
が、これがあるとType-Aでも好きにUIDを変更できるのだ。

まあ、UIDだけで何かする、という実装はセキュリティ的にやってはいかんのだが、最近はどうなってるんだろうね。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。