最近学习NFC,此文章仅作为自己知识的整理,学习。
Felica技术并不是一个完全公开的协议,尤其是该技术涉及安全认证和加密的部分,SONY的保密做的很好。本文介绍的也仅是其公开的部分信息。
Felica技术的通讯协议包括三层:物理层描述数据传输的物理和电气特性; 数据链路层描述数据传输和错误检测的格式;应用层描述命令的功能和规范.
Felica射频传输的物理特性如下表所示
Felica射频接口的物理特性
数据传输方法
半双工同步系统
载波频率
13.56MHz
调制方法
ASK
位编码方法
Manchester编码,MSB在前
数据传输速率
212/424 kbps
Felica卡片和读写器之间的数据传输使用数据包。数据包的格式如下:
数据包各部分定义
名称
字节长度
定义
前导码
6
00 00 00 00 00 00
同步码
2
B2 4D
数据长度
1
包数据长度+1
包数据
n
命令包或返回包中的数据
CRC
2
基于CRC-CCITT的校验,
初始值=0000H,
生成多项式:X16+X12+X5+1
Felica技术应用层的命令包由命令码和命令数据两部分组成,包括1字节的命令码和N字节的命令数据。命令码标识命令的类型,命令数据为本条命令执行所需的数据。读卡器命令发出后卡片回复一个响应包,响应包由1字节响应码和N字节响应数据两部分组成。响应码标识响应的类型,响应数据为本条命令执行后卡片返回的数据。
Felica命令列表如下:
命令
命令码
响应码
功能简述
轮询
00H
01H
探测识别卡片
请求服务
02H
03H
验证卡片上是否存在指定的域或服务
请求响应
04H
05H
验证射频场中是否有卡
不需认证读
06H
07H
从不需认证的服务中读取数据块
不需认证写
08H
09H
向不需认证的服务中写入数据块
请求系统码
0CH
0DH
读取卡片上已注册的系统码
认证1
10H
11H
读写器认证卡片
认证2
12H
13H
卡片认证读写器
读
14H
15H
从需认证的服务中读取数据块
写
16H
17H
向需认证的服务中写入数据块
Felica有两个重要的参数:出厂识别码(IDm)和出厂参数(PMm)。IDm和PMm可以使用轮询命令获得,IDm和PMm在出厂时固化在卡片中,卡片出厂后不能修改。
Felica使用出厂识别码(IDm)在通讯中识别一张卡片。Idm包含制造商代码和卡片识别码两部分。
出厂参数(PMm)包括2字节的芯片类型(用来识别产品)和6字节的最大响应时间参数(用来确定每一条命令的超时时间)。
Felica采用基于时隙的方法实现卡片的防冲突机制。为了识别一张卡片,读写器必须使用轮询命令轮询未知数量的卡片。卡片收到轮询命令后,以随机的方式选择一个时隙,并在读写器呼叫该时隙时予以应答,从而实现防冲突。
当读写器正确接收一个卡片对于轮询命令的应答,读写器可以获得卡片的Idm,在之后的通讯中,读写器通过在命令包中包含Idm,就可以从射频场的多张卡片中唯一的指定一张进行通讯。卡片收到命令后将把自己的Idm与命令包中的Idm比对,如果不同卡片不会对命令做出反应。这种机制实现了射频场中的卡片选择。