我正在用Java编写一个应用程序,它将命令发送到智能卡并通过NFC接口解析响应.此应用程序可以在Android和PC上使用.
通过PC使用USB非接触式读卡器,我可以毫不费力地连接并与我扔的任何卡通信.
Android是另一回事.通过Nexus S使用应用程序会产生不太理想的结果,具体取决于卡.
有些卡将以100%的成功率连接和通信.我尝试使用的大多数卡片甚至很难建立连接,更不用说与之通信了.
Nexus S上的NFC服务正在尝试连接卡.它产生连续的低脉冲声,表明它无法建立牢固的连接(据我所知).
我目前的思维过程是Nexus S的NFC芯片功耗低于我正在使用的USB PC阅读器.从我读过的其他文章来看,似乎不同的卡具有不同的功率要求才能使用它们.
如何确定为卡供电所需的功率级别?它隐藏在ATR的某个地方吗?
如何确定特定NFC芯片的功率水平?这是在某处记录的吗?
>卡中天线调整不当
>微控制器卡需要很大的功率
> NFC手机产生的弱射频场
这导致电话和卡之间的天线耦合不良,从而导致通信不良或无通信.桌面阅读器通常不会出现这种问题,因为它会生成更强大的字段.手机中的NFC功耗非常低,它产生的RF场通常处于ISO 14443允许的范围内.Nexus S中的NFC芯片NXP PN544会产生较弱的RF场.然而,这是NFC芯片和手机中的NFC天线的功能.根据我的经验,B型卡通常会引起问题(有传言称它们通常需要更多功率).另一个例子是电子护照:通常具有不太理想的天线.
卡所需的最低功率水平:它不在ATR中. ISO 14443卡没有ATR(它们可能有EF.ATR文件,但我从未见过). ATS(应答选择)响应不表示所需的功率电平.卡可以指示ISO 14443-4 S-Block的CID字段中的功率电平是否足够(当存在并由卡支持时).不过,我从来没有见过这样做的卡片.
要确定特定NFC芯片与特定天线(和调谐电路)相结合的功率水平,您可以使用频谱分析仪进行测量.我测量了几款都包含PN544的Android NFC手机(Galaxy Nexus,Nexus S,Galaxy S3,One X).手机之间的结果不同,足以在某些情况下产生差异(S3产生最大功率).