PN512使用的一些小技巧

说回前言

上一篇文章讲了我使用PN512的一些内容,不少网友回复我,还有人给我邮件(邮件地址penrose@diwuceng.com,欢迎技术交流),但是还是有不少人提到复刻比较困难,我做这个东西已经有半年时间,踩了不少坑,这边也给大家多分享些自己的心得。

并非射频识别的最佳平台

首先第一点,必须得说PN512并非射频识别的最佳平台。PN512是一款并不新(甚至挺旧)的片子,受限于功率原因,读卡距离比较近,即使是支持距离最远的NFCIP也不超过50mm,ISO14443协议的卡读取距离更近,目前可以用来替代的芯片不少,如PN5180等都是不错的替代方案。都是恩智浦生产的芯片,所以在设置寄存器命名上有非常多的相似之处,所以迁移成本比较低,当然啦,迁移之前还是需要注意有些寄存器虽然命名相同但是设置值已经完全不同了。
先跟大家说明,PN512绝非最佳平台,如果实际需要和PN512的性质不匹配,还请回头是岸。

PN512寄存器配置值

目前网络上比较常见到的是潘春伟的关于射频识别的一系列博客,他的博客中有一篇关于PN512射频芯片初始化寄存器设置的内容,据他所说,他实现了一个能够识别3种卡片的平台并将配置代码给出。需要注意,PN512 并不能同时实现多种卡的识别读取,因为多种卡的识别读取对PN512的寄存器配置完全不同,我实现了支持读取ISO/IEC 14443协议A卡B卡和NFC-IP三种协议的读卡器,受限于PN512的这种特性,我的射频信号并不连续,而是中断的。
我将这部分寄存器设置的数组及部分寄存器说明贴在下面,仅供参考,毕竟我使用这套数据并没有实现功能,有可能是与天线不匹配的关系,我采用的天线体积较小,发送和接收时都需要较大增益,如果天线足够大,对这几个参数就会相对宽容很多.

*PN512寄存器设置数组
code unsigned char CardTypeSetReg[ ][5]={
{0x08,0,0x08,0x08,0x08},Status2Reg,turn off crypto
{0x0C,1,0x10,0x10,0x10},ControlReg,pn512 act as initiator
{0x11,2,0x38,0x39,0x3B},ModeReg,crcpreset
{0x12,2,0x92,0x00,0x83},TxModeReg,txcrc enable,felica at 212kbps,mifare106,typeb106
{0x13,2,0x92,0x00,0x83},RxModeReg,rxcrc enable,felica at 212kbps,mifare106,typeb106
{0x14,2,0x83,0x83,0x83},TxControlReg,tx2 inverted,tx1 and tx2 out enable
{0x15,2,0x00,0x40,0x00},TxAutoReg,antenna setting,100% ask disable for felica and typeb
{0x16,2,0x10,0x10,0x10},TxSelReg,tx output from internal coder
{0x17,2,0x84,0x86,0x86},RxSelReg,rxwait,felica=4,14443=6
{0x18,2,0x55,0x84,0x44},RxThresholdReg,set minlevel and collevel,when use rc531,typea=0xff(max),typeb=0x44
{0x19,2,0x41,0x4D,0x4D},DemodReg,Defines demodulator,when use rc531,TAU=E
{0x1A,2,0x00,0x00,0x00},FelNFC1Reg,Defines the length of the FeliCa Sync bytes and the minimum length of the received packet
{0x1D,2,0x11,0x10,0x10},ManualRCVReg,Parity Disable,High Pass Corner Frequency spectrum down to 212 kHz for felica,14443 set to 106kbps
{0x1E,2,0x00,0x00,0x90},TypeBReg,typeB settings
{0x23,2,0x88,0x88,0x88},GsNOffReg,Selects the conductance for the N-driver of the antenna driver pins TX1 and TX2 when the driver is switched off
{0x24,2,0x26,0x26,0x26},ModWidthReg,Controls the modulation width settings,rc531=0x13
{0x26,2,0x79,0x7F,0x79},RFCfgReg,Configures the receiver gain and RF level detector sensitivity
{0x27,2,0x88,0x88,0x88},GsNOnReg,Selects the conductance for the N-driver of the antenna driver pins TX1 and TX2 when the driver is switched on
{0x28,2,0x30,0x20,0x20},CWGsPReg,Defines the conductance of the P-driver during times of no modulation
{0x29,2,0x06,0x06,0x06} ModGsPReg,Defines the driver P-output conductance during modulation,不大于10可读,对读卡距离影响非常大
}; 
       第一列是寄存器地址;
       第二列为寄存器设置方法:0表示清0对应位,1表示置1对应位,2表示直接写入;
       第三列是操作FELICA设置值;
       第四列是操作ISO/IEC 14443A/MIFARE设置值;
       第五列是操作ISO/IEC 14443B设置值。
*/

有几个比较有意思的地方说明,RxThresholdReg阈值调整,调整这个寄存器的参数有时会有惊喜.

PN512天线匹配电路

与常见的天线调试思路类似,天现在一定的外围电路下达到谐振的效果可以使得天线上的信号峰值最大,PN512的天线外围电路参考如下:
在这里插入图片描述
这里的参数是以我自己的设计的天线为基础的,各位朋友还是建议自己调试得到最佳数据,我框选出来的几个电容是决定天线上信号波形参数最重要的元件,基本上是通过反复焊接比较数据结果得出的.R16和R17两个电阻调试阶段可以设定为0,若觉得天线上波形峰值过大可以简单加阻值解决,注意天线两端的电路元件必须对称,布板也必须对称排列,因为我们的信号基本上是差分信号,要尽量减少其他因素导致的误差.

替代方案考虑

如果对性能更高的射频识别有要求,可以采用同一类型的PN5180芯片,若性能要求并不严格可以使用更简单的RC523芯片,基本的代码完全可以轻松移植.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值