内容提纲
1、NFC的概念-熟悉
2、NFC和RFID区别-掌握
3、NFC的工作模式-掌握
nfc概述:
NFC (Near Field Communication)近场通信,这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。NFC是一种短距离高频的无线电技术,在13.56Mhz频率运行于20cm距离内。其传输速度有106Kbit/s,212Kbit/s或者424Kbit/s三种。目前近场通信已通过并成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。NFC采用主动和被动两种读取模式。
Nfc工作模式:
卡模式:这个模式其实就是相当于一张采用RFID技术的IC卡。可以替代大量的IC卡(包括信用卡)场合商场刷卡、公交卡、门禁管制,车票,门票等等。此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的RF域来供电,即便是寄主设备(如手机)没电也可以工作。
读写器模式:这个模式可以模拟读读卡器功能,读取MIFARE和FeliCa卡的信息
点对点模式:这个模式和红外线差不多,可用于数据交换,只是传输距离较短,传输创建速度较快,传输速度可快些,功耗低(蓝牙也类似)。将两个具备NFC功能的设备链接,能实现数据点对点传输,如下载音乐、交换图片或者同步设备地址簿。一次通过NFC,多个设备如数码相机、PDA、计算机和手机之间都可以交换资料或者服务
NFC与RFID区别:
• 第一、NFC将非接触读卡器、非接触卡和点对点功能整合进一块单芯片,而rfid必须有阅读器和标签组成。RFID只能实现信息的读取以及判定,而NFC技术则强调的是信息交互。通俗的说NFC就是RFID的演进版本,双方可以近距离交换信息。NFC手机内置NFC芯片,组成RFID模块的一部分,可以当作RFID无源标签使用进行支付费用;也可以当作RFID读写器,用作数据交换与采集,还可以进行NFC手机之间的数据通信。
• 第二、NFC传输范围比RFID小,RFID的传输范围可以达到几米、甚至几十米,但由于NFC采取了独特的信号衰减技术,相对于RFID来说NFC具有距离近、带宽高、能耗低等特点。
• 第三、应用方向不同。NFC看更多的是针对于消费类电子设备相互通讯,有源RFID则更擅长在长距离识别。
NFC与BLE区别:
内容提纲
1、PN532介绍-了解
2、PN532帧格式-掌握
PN532概述:
• 随着互联网的普及,手机作为互联网最直接的智能终端,必将会引起一场技术上的革命,如同以前蓝牙、USB、GPS等标配,NFC将成为日后手机最重要的标配,通过NFC技术,手机支付、看电影、坐地铁都能实现,将在我们的日常生活中发挥更大的作用。
• 我们这里使用的NFC芯片为PN532,它是一款高度集成的非接触式通讯收发模块,基于8051单片机核心。它支持6个不同的操作模式:ISO/IEC14443A/MIFARE 读/写器、FeliCa 读/写器、ISO/IEC 14443B 读/写器、ISO/IEC14443A MIFARE卡模拟模式、FeliCa卡模拟模式、ISO/IEC 18092 ECMA 340点对点;这款芯片提供3中和主机通信的接口:SPI\I2C\USART。
PN532普通帧(P9):
对于PN532的控制,只需要按照帧格式写入数据就可以了
0x00, 前序
0x00, 0xff, 包头
LEN, 数据长度,包含TFI和PD
LCS, 长度校验和,LEN + LCS = 0x00;
TFI, 传输方向,0xd4传到卡片,0xd5卡片返回
PD0, 数据
PD1, 数据
…
PDn, 数据
DCS, 数据校验和,DCS+TFI+PD0+…+PDn = 0x00;
长格式帧(P10) :
0x00, 前序
0x00, 0xff, 包头
0xff, 0xff 短格式中的长度和校验 (普通格式最大发送255个字节,而长格式可以发送更多的字节)
LENH, 数据长度高字节,包含TFI和PD
LENL, 数据长度低字节,包含TFI和PD
LCS, 长度校验和,LENH + LENL + LCS = 0x00;
TFI, 传输方向,0xd4传到卡片,0xd5卡片返回
PD0, 数据
PD1, 数据
…
PDn, 数据
DCS, 数据校验和,DCS+TFI+PD0+…+PDn = 0x00;
PN532应答(P9):
0x00, 前序
0x00, 0xff, 包头
00, 数据长度, 这里没有任何数据
ff, 长度校验和,LEN + LCS = 0x00;
传输方向,0xd4传到卡片,0xd5卡片返回
数据
数据
…
PDn, 数据
DCS, 数据校验和,DCS+TFI+PD0+…+PDn = 0x00;
00, 尾序
内容提纲
1、唤醒-掌握
2、扫卡-掌握
3、认证-掌握
4、读写-掌握
唤醒芯片(P23,P99) :
0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0x03,0xFD,0xD4,0x14,0x01,0x17,0x00
从手册可以看出,唤醒命令要在原有的数据包之前加入唤醒头,这个比较特殊一点
0xd4代表主机向PN532写入数据
0x14,0x01代表选择了普通模式
命令格式(P35) :
• 扫描卡片
0x4a, 0x02, 0x00 //扫描命令,卡片个数,波特率
• 应答
0x4b, 应答码
0x02, 卡片个数
0x01, 第一个卡片
0x04, 0x00, 卡片类型
0x08, 卡片容量
0x04, id长度
0x01, 0x02, 0x03, 0x04 卡片id
• 认证卡片
0x40, 0x01, 0x60, 0x02, 数据交换命令,1号卡片,A认证,2地址
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 秘钥
0x01, 0x02, 0x03, 0x04 卡片id
• 应答
0x41, 0x00 无错
• 读卡
0x40, 0x01, 0x30, 0x02 //交换数据,1号卡,读取块,2地址
• 应答
0x41, 0x00, 16bytes 应答,无错,16个数据
• 写卡
0x40, 0x01, 0xa0, 0x02, 交换数据,1号卡,写入块,2地址
1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6 数据
• 应答
0x41, 0x00 应答,无错
• 充值
0x40, 0x01, 0xc1, 0x02, 1,0,0,0 //交换数据,1号卡,充值,2地址,数据
0x40, 0x01, 0xB0, 0x02;//交换数据,1号卡,保存,2地址
• 应答
0x41, 0x00 应答,无错
• 扣款
0x40, 0x01, 0xc0, 0x02, 1,0,0,0;//交换数据,1号卡,扣款,2地址,数据
0x40, 0x01, 0xB0, 0x02;//交换数据,1号卡,保存,2地址
• 应答
0x41, 0x00 应答,无错
注意:充值或者扣款操作一定要加上保存动作
读写卡片(P35,P33) :
读写卡片的每一条命令都要按照帧格式
• 唤醒芯片,将芯片设置为普通模式
• 扫描卡片,一次最多2张。成功可以得到ID
• 认证,需要发送秘钥和ID。注意这里没有防冲突环节,因为在扫描的时候已经拿到卡片的ID,在认证的时候指明ID就可以了
• 读、写、充值、扣款
• PN532读取卡片的过程要比MFRC522简单很多
内容提纲
1、读写卡流程-掌握
2、读卡(BLOCK0)实战-掌握
3、写卡(BLOCK3)实战-掌握
命令格式(P35,P33) :
• 唤醒
• 扫描
• 认证
• 读卡
• 唤醒
• 扫描
• 认证
• 写卡
唤醒芯片(P23,P99) :
0x55,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0x03,0xFD,0xD4,0x14,0x01,0x17,0x00
从手册可以看出,唤醒命令要在原有的数据包之前加入唤醒头,这个比较特殊一点
0xd4代表主机向PN532写入数据
0x14,0x01代表选择了普通模式
命令格式(P35) :
• 扫描卡片
0x4a, 0x02, 0x00 //扫描命令,卡片个数,波特率
• 应答
0x4b, 应答码
0x02, 卡片个数
0x01, 第一个卡片
0x04, 0x00, 卡片类型
0x08, 卡片容量
0x04, id长度
0x01, 0x02, 0x03, 0x04 卡片id
• 认证卡片
0x40, 0x01, 0x60, 0x02, 数据交换命令,1号卡片,A认证,2地址
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 秘钥
0x01, 0x02, 0x03, 0x04 卡片id
• 应答
0x41, 0x00 无错
• 读卡
0x40, 0x01, 0x30, 0x02 //交换数据,1号卡,读取块,2地址
• 应答
0x41, 0x00, 16bytes 应答,无错,16个数据
• 写卡
0x40, 0x01, 0xa0, 0x02, 交换数据,1号卡,写入块,2地址
1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6 数据
• 应答
0x41, 0x00 应答,无错
读写卡片(P35,P33) :
读写卡片的每一条命令都要按照帧格式
• 唤醒芯片,将芯片设置为普通模式
• 扫描卡片,一次最多2张。成功可以得到ID
• 认证,需要发送秘钥和ID。注意这里没有防冲突环节,因为在扫描的时候已经拿到卡片的ID,在认证的时候指明ID就可以了
• 读、写、充值、扣款
• PN532读取卡片的过程要比MFRC522简单很多
内容提纲
1、S50值段-掌握
2、充值操作-掌握
3、扣款-掌握
S50存储结构:
值段
值段可以实现电子钱包的功能 有效的命令有 读 写 增 减 恢复 发送
值段有一个固定的数据格式 可以进行错误检测和纠正并备份管理
值段只能在值段格式的写操作时产生
• 值 表示一个带符号 4 字节值 这个值的最低一个字节保存在最低的地址中 取反的字节以标准2 的格式保存 为了保证数据的正确性和保密性 值被保存了 3 次 两次不取反保存 一次取反保存
• Adr 表示一个 1 字节地址 当执行强大的备份管理时用于保存存储段的地址 地址字节保存了 4次 取反和不取反各保存两次 在执行增 减 恢复 传送操作时 地址保持不变 它只能通过写命令改变
• 初始化为固定的格式
block1, 00,00,00,00,ff,ff,ff,ff,00,00,00,00,1,fe,1,fe
• 唤醒
• 扫描
• 认证
命令格式(P35,P33) :
• 充值
0x40, 0x01, 0xc1, 0x02, 1,0,0,0 //交换数据,1号卡,充值,2地址,数据
0x40, 0x01, 0xB0, 0x02;//交换数据,1号卡,保存,2地址
• 应答
0x41, 0x00 应答,无错
• 扣款
0x40, 0x01, 0xc0, 0x02, 1,0,0,0;//交换数据,1号卡,扣款,2地址,数据
0x40, 0x01, 0xB0, 0x02;//交换数据,1号卡,保存,2地址
• 应答
0x41, 0x00 应答,无错
注意:充值或者扣款操作一定要加上保存动作