ISO 14443 非接触式IC卡

PICC : Proximity Integrated Circuit Card 卡
PCD: Proximity Coupling Device 接近式耦合设备,通常指读卡器

ReqA: Request command, Type A
ReqB: Request command, Type A, 在 NFC中,叫 SENSB_REQ
ATQA: Answer To Request, Type A, 在NFC标准中,叫 SENS_RES
ATQB: Answer To Request, Type B, 在NFC标准,这个叫 SENSB_RES
ATTRIB: PICC 选择命令,TypeB
WUPA: Wake-Up Command, Type A
WUPB: Wake-Up Command, Type B, 在NFC中,叫 ALLB_REQ, 轮询命令
ATS: Answer to Select
ATR: Answer to Reset
PTS: Protocol Type Selection
PPS: Protocol and Parameter Selectrion
RATS: Request for Answer to Select

——————————————————
当 PICC 暴露于未调制的工作场内,它能在5ms 内接受一个请求。
例如:
当类型A PICC 接收到任何类型B 命令时,它能在5ms 内接受一个REQA。
当类型B PICC 接收到任何类型A 命令时,它能在5ms 内接受一个REQB。

为了检测到是否有PICCs进入到PCD的有效作用区域,PCD重复的发出请求信号REQ,并判断是否有响应ATQ。请求信号必须是REQA和REQB,附加ISO/IEC14443其它部分的描述的代码。A型卡和B型卡的命令和响应不能够相互干扰。
———————————————-
当一个B型卡被置入阅读器的作用范围内,IC卡执行一些预置程序后进入”闲置状态”,等待接收有效的REQB命令。对于B型卡,通过发送REQB命令,可以直接启动SlottedALOHA防碰撞算法,选出一张卡,对其进行操作。

当接收到有效的REQB帧的命令,PICC定义了单一的时间槽用来发送ATQB。
如果是PICC定义的第一个时间槽,PICC必须发送ATQB的响应信号,然后进入准备—已声明子状态。
如果不是PICC定义的第一个时间槽,PICC进入准备—已请求子状态。
———————
在已声明子状态下,PICC已经上电,并且已经发送了对REQB的ATQB响应。
它监听REQB和ATTRIB的数据帧。
————
激活状态
PICC已经上电,并且通过ATTRIB命令的前缀分配到了通道号,进入到应用模式。
————————-
frameworks / base / core / java / android / nfc / tech / NfcB.java

public byte[] getApplicationData()
在Tag发现阶段,从 ATQB/SENSB_RES 中得到的应用数据

public byte[] getProtocolInfo()
在Tag发现阶段,从 ATQB/SENSB_RES 中得到的协议信息

public byte[] transceive(byte[] data)
发送原生的nfcb命令给tag, 并收到响应
1)应用 不必要添加 EoD (CRC) 到payload, 校验会被自动计算。
2)应用也不应该发送那些管理 轮询和初始化的命令 :SENSB_REQ, SLOT_MARKER 等
——————————-
frameworks/base/core/java/android/nfc/Tag.java
public byte[] getPollBytes() {
在轮询时间,Tag返回的底层字节
这些字节的意义,依赖于所采用的Tag技术
在ISO14443-3A , 叫做 ATQA/SENS_RES
在ISO14443-3B, 包含 来自于 ATQB/SENSB_RES 的 Application data (4 bytes) 和 Protocol Info (3 bytes)

public byte[] getActivationBytes() {
在激活阶段, Tag返回的底层字节
ISO14443-3B & ISO14443-4中,叫 ATTRIB response
ISO14443-3A & ISO14443-4 叫做 SAK/SEL_RES, historical bytes from ATS

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注