NFC的PN532 读写命令格式

合集下载

(完整word)实验11 NFC通信实验-V20170317

(完整word)实验11 NFC通信实验-V20170317

实验11 NFC通信实验—V201703171.实验目的了解NFC近场通信原理和过程;学习PN532的使用;2.实验设备硬件:RFID实验箱6号NFC节点;软件:STC下载软件STC_ISP,RFID实验箱管理软件;芯片手册:配套光盘\附件\芯片手册\PN532用户手册3.实验原理3。

1 NFC简介NFC是Near Field Communication缩写,即近距离无线通讯技术。

是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输,在十厘米(3.9英吋)内,交换数据。

这个技术由免接触式射频识别(RFID)演变而来,由飞利浦公司和索尼公司共同开发的NFC 是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。

3.2 工作模式1。

卡模式(Card emulation):这个模式其实就是相当于一张采用RFID技术的IC卡(个人理解).可以替代现在大量的IC卡(包括信用卡)场合商场刷卡、公交卡、门禁管制,车票,门票等等。

此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的 RF 域来供电,即便是寄主设备(如手机)没电也可以工作.2。

点对点模式(P2P mode):这个模式和红外线差不多,可用于数据交换,只是传输距离比较短,传输创建速度快很多,传输速度也快些,功耗低(蓝牙也类似)。

将两个具备 NFC 功能的设备链接,能实现数据点对点传输,如下载音乐,交换图片或者同步设备地址薄。

因此通过NFC,多个设备如数字相机,PDA,计算机,手机之间,都可以交换资料或者服务。

3。

读卡器模式(Reader/writer mode):作为非接触读卡器使用,比如从海报或者展览信息电子标签上读取相关信息。

本实验介绍点对点通信模式的应用。

3.3 指令帧格式3.3.1 Normal information frame:正常信息数据帧格式3.3。

2 Extended information frame:扩展信息数据帧格式3.3.3 ACK frame:应答数据帧格式3。

RFID RC522和PN532的区别

RFID RC522和PN532的区别

RFID RC522和PN532的区别简单的说,就是协议支持的类型PN 比RC系列更多。

PN支持NFC协议,RC主要是支持ISO14443A/B。

RC522是一款NXP 公司的支持ISO14443A协议的高频的射频芯片,PN532这个款芯片是支持NFC功能一款射频芯片,也是NXP公司的。

RC522特性◆高集成度的调制解调电路;◆采用少量外部器件,即可将输出驱动级接至天线;◆支持ISO/IEC 14443 TypeA 和MIFARE®通信协议;◆读写器模式中与ISO 14443A/MIFARE®的通信距离高达50mm,取决于天线的长度和调谐。

◆支持ISO 14443 212kbit/s 和424kbit/s 的更高传输速率的通信。

◆支持MIFARE® Classic 加密;◆支持的主机接口:-10Mbit/s 的SPI 接口-I2C 接口,快速模式的速率为400kbit/s,高速模式的速率为3400kbit/s-串行UART,传输速率高达1228.8kbit/s,帧取决于RS232 接口,电压电平取决于提供的管脚电压◆64 字节的发送和接收FIFO 缓冲区;◆灵活的中断模式;◆可编程定时器。

◆具备硬件掉电、软件掉电和发送器掉电 3 种节电模式,前两种模式雷同于MFRC500 和CL RC400,其特有的“发送器掉电”则可关闭内部天线驱动器,即关闭RF 场;◆内置温度传感器,以便在芯片温度过高时自动停止RF 发射;◆采用相互独立的多组电源供电,以避免模块间的相互干扰,提高工作的稳定性;◆具备CRC 和奇偶校验功能,CRC 协处理器的16 位长CRC 计算多项式固定为:x16+x12+x5+1,符合ISO/1EC14443 和CCTITT 协议;◆内部振荡器,连接27.12MHz 的晶体;◆2.5~3.3V 的低电压低功耗设计;◆工作温度范围-30~+85℃;◆5mm&TImes;5mm&TImes;0.85mm 的超小体积。

PN532学习笔记

PN532学习笔记

串口发送命令到PN532的数据格式:0x00 | 0x00 0xff | 命令长度+1 |0xff-命令长度|0xD4|命令数据包|校验和|0x00|校验和=0x100-(0xd4+命令包);PN532执行命令后返回的数据格式:|0x00 0x00 0xFF 0x00 0xFF 0x00 0x00 |+|0x00 0xFF|+|长度|+|0x100-长度|+|0xD5|+|数据|+0x00说明:长度是指数据区数据的字节数数据区数据的最后一个数据是数据区其他数据和0xD5的校验和数据区的一个数据是此返回数据所对应的命令+1激活PN532:55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00返回的数据:00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00读出PN532的固件版本:00 00 ff 02 fe d4 02 2a 00读UID命令格式:0x4A|NID|Cardbaudrate|NID:每次最大寻卡数,最大为2Cardbaudrate:范围0-2,106kps的卡任意范围都支持,1是用于201kps,2是用于424kps返回的数据格式:|0x00 0x00 0xFF 0x00 0xFF 0x00 0x00 |+|0x00 0xFF|+|长度|+|0x100-长度|+|0xD5|+|0x4B 0x01 0x01 0x00 0x04 0x08 0x040xFB 0x0E 0xE2 0x0B 0xD8|+0x00说明:长度是绿色底纹部分的字节数绿色底纹的红色0x4B证明是0x4A命令的返回值绿色底纹的红色0x04是其后有效数据的长度,这个有效数据就是卡的ID号绿色地位的最后一个十六进制字符是黄色底纹数据和绿色底纹数据(不包括绿色地位的最后一个十六进制字符)的校验和身份校验命令格式:0x40| cardnumber| authtype|6个字节长度的密码|4个字节长度的卡号|Cardnumber:用来选择验证所寻到的卡中的卡1还是卡2,1就是卡1,2就是卡2 Authtype:0x60是A类卡,0x61是B类卡返回的数据格式:|0x00 0x00 0xFF 0x00 0xFF 0x00 0x00 |+|0x00 0xFF 0x03 0xFD 0xD5 0x410x00 0xEA|+|0x00|说明:数据返回里的红色部分的0x00是身份验证成功的标志,而红色的0x41是证明返回的数据是身份验证命令0x40应返还的读指定块的数据的命令格式:0x40|cardnumber|0x30| blockaddress|Blockaddress:目标块地址Cardnumber:用来选择验证所寻到的卡中的卡1还是卡2,1就是卡1,2就是卡2写指定块的数据的命令格式:0x40|cardnumber|0xA0| blockaddress|16字节的数据|Blockaddress:目标块地址Cardnumber:用来选择验证所寻到的卡中的卡1还是卡2,1就是卡1,2就是卡2P2P数据通信:1、PN532为主动通信配置PN532为主导模块的命令格式:|0x56|0x01| baudrate|0x01|0x00 0xff 0xff 0x00 0x00|Baudrate:范围0-2,106kps的卡任意范围都支持,1是用于201kps,2是用于424kps 返回的有效数据的第7个字符为0x00则表示成功主动发送并接收数据的命令格式:|0x40|target|16字节数据|Target:1或2,表示选择1号卡或2号卡为目标卡返回的有效数据段为目标卡发送回来的数据2、PN532为被动通信配置PN532为目标模块的命令格式:|0x8C|0x00|0x08 0x00|0x12 0x34 0x56|0x40|0x01 0xFE 0xA2 0xA3 0xA4 0xA5 0xA6 0xA7|0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7|0xFF 0xFF|0xAA 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11|0x00 0x00|即:0x8C 0x00 0x08 0x00 0x12 0x34 0x56 0x40 0x01 0xFE 0xA2 0xA3 0xA4 0xA5 0xA6 0xA7 0xC0 0xC1 0xC2 0xC3 0xC4 0xC5 0xC6 0xC7 0xFF 0xFF 0xAA 0x99 0x88 0x77 0x66 0x55 0x44 0x33 0x22 0x11 0x00 0x00被动接收并发送数据给主动模块的命令格式:①先接收数据0x86②发送数据|0x8e|16字节的数据|。

nfc 协议

nfc 协议

nfc 协议NFC协议。

NFC(Near Field Communication)是一种短距离无线通信技术,它可以让设备在彼此靠近时进行通信,通常的工作距离在4厘米之内。

NFC协议是指在NFC技术中用于数据交换和通信的规范和标准,它包括了NFC设备之间的通信方式、数据格式、安全性等内容。

首先,NFC协议主要分为三种工作模式,卡模式、点对点模式和读写模式。

在卡模式下,NFC设备可以模拟成一张智能卡,用于与读卡器进行通信,实现支付、门禁等功能。

在点对点模式下,两个NFC设备可以直接进行通信,实现数据传输、信息分享等功能。

在读写模式下,NFC设备可以读取或写入被动NFC标签上的数据,实现信息的获取和存储。

其次,NFC协议中的数据格式主要包括NDEF(NFC Data Exchange Format)格式和LLCP(Logical Link Control Protocol)格式。

NDEF格式是一种用于在NFC设备之间交换信息的标准格式,它可以包含文本、网址、图片等多种类型的数据,并且可以被各种NFC设备所支持。

LLCP格式则是在点对点模式下使用的一种数据交换格式,它可以实现NFC设备之间的双向通信和数据交换。

此外,NFC协议还包括了一系列的安全机制,用于保护NFC设备和数据的安全。

其中包括了数据加密、认证、访问控制等技术,以确保NFC通信过程中的数据安全和隐私保护。

总的来说,NFC协议是NFC技术的重要组成部分,它规范了NFC设备之间的通信方式、数据格式和安全性,为NFC技术的应用提供了重要的支持。

随着移动支付、智能门禁、智能标签等应用的不断发展,NFC技术和NFC协议将在未来发挥越来越重要的作用。

AndroidNFCM1卡读写芯片卡读写(CPU卡读写)(RFID读写)

AndroidNFCM1卡读写芯片卡读写(CPU卡读写)(RFID读写)

AndroidNFCM1卡读写芯⽚卡读写(CPU卡读写)(RFID读写)权限<uses-featureandroid:name="android.hardware.nfc"android:required="true"/><uses-permission android:name="android.permission.NFC"/>12345<activity android:name=".ReadTextActivity" android:launchMode="singleTop"><intent-filter><action android:name="android.nfc.action.TAG_DISCOVERED"/><action android:name="android.nfc.action.TECH_DISCOVERED" /><data android:mimeType="text/plain"/><category android:name="android.intent.category.DEFAULT"/></intent-filter></activity>12345678初始化在Activity#onCreate()注册,在Activity#onResume()开启前台调度系统,在Activity#onPause退出前台调度。

11 onCreate( initNFC() )private void initNFC() {// 获取nfc适配器,判断设备是否⽀持NFC功能nfcAdapter = NfcAdapter.getDefaultAdapter(this);if (nfcAdapter == null) {shotToast("当前设备不⽀持NFC功能");} else if (!nfcAdapter.isEnabled()) {shotToast("NFC功能未打开,请先开启后重试!");}pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);ndef.addCategory("*/*");// 允许扫描的标签类型mWriteTagFilters = new IntentFilter[]{ndef};mTechLists = new String[][]{new String[]{MifareClassic.class.getName()},new String[]{NfcA.class.getName()}};// 允许扫描的标签类型}1234567891011121314151617182 onResume( )@Overrideprotected void onResume() {super.onResume();//开启前台调度系统nfcAdapter.enableForegroundDispatch(this, pendingIntent, mWriteTagFilters, mTechLists);}1234563 onPause()@Overrideprotected void onPause() {super.onPause();nfcAdapter.disableForegroundDispatch(this);}123454 NFC设备刷卡时触发 onNewIntent(Intent)给伪代码,详细见下⾯3点分解1@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);//当该Activity接收到NFC标签时,运⾏该⽅法if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction()) ||NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);1,标签读写Ndef ndef = Ndef.get(tag);//如果ndef为空表⽰不⽀持该格式//可进⾏格式如果格式化失败则不能只能换个⽅式2,M1 扇区读写MifareClassic mfc = MifareClassic.get(tag);//CPU卡时 mfc将为空3,CPU卡读写NfcCpuUtilsnfc = new NfcCpuUtils(IsoDep.get(tag));}}1,标签读写/*** 写标签* @param ndef* @param tag* @param ndefMessage* @return* @throws IOException* @throws FormatException*/private boolean writeMsg(Ndef ndef, Tag tag, NdefMessage ndefMessage) throws IOException, FormatException { try {if (ndef == null) {shotToast("格式化数据开始");//Ndef格式类NdefFormatable format = NdefFormatable.get(tag);format.connect();format.format(ndefMessage);} else {shotToast("写⼊数据开始");//数据的写⼊过程⼀定要有连接操作ndef.connect();ndef.writeNdefMessage(ndefMessage);}return true;} catch (IOException e) {e.printStackTrace();shotToast("IO异常,读写失败");} catch (FormatException e) {e.printStackTrace();shotToast("格式化异常,读写失败");} catch (NullPointerException e) {shotToast("格NullPointerException异常,读写失败");}catch (IllegalStateException e){shotToast("Close other technology first!");}return false;}/*** 读取NFC标签⽂本数据*/private void readNfcTag(Intent intent) {if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())||NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);NdefMessage msgs[] = null;int contentSize = 0;if (rawMsgs != null) {msgs = new NdefMessage[rawMsgs.length];for (int i = 0; i < rawMsgs.length; i++) {msgs[i] = (NdefMessage) rawMsgs[i];contentSize += msgs[i].toByteArray().length;}}try {if (msgs != null) {print(msgs.length+" 长度");NdefRecord record = msgs[0].getRecords()[0];String textRecord = parseTextRecord(record);mTagText += textRecord + "\n\ntext\n" + contentSize + " bytes";print(mTagText);}} catch (Exception e) {}}}12,扇区读写M1扇区默认是没有密码的,但有部分⼈闲不住要把密码改了,因此认证过程要加密码,⼀般认证KeyA就⾏。

重大社2023《rfid原理及应用》教学课件04

重大社2023《rfid原理及应用》教学课件04
每天成长一点点
02
PN532帧格式: 前导码(Preamble):占用1个字节,就是00h。 起始码(start code):占用2个字节,为00h FFh。 包长度(len):占用1个字节,它包含了TF1和数据PD0-PDn。 长度校验和(lcs):占用1个字节,取低八位即可。计算方法就是LEN+LCS=00h。 帧标识(TFl):占用1个字节,这个字节的值决定数据传输的方向。如果是“D4h”就是系统控制器到 PN532的帧。如果是“D5h”就是PN532到系统控制器的帧。 数据(DATA):这个就是出传输的数据,第一个字节为命令代码。 数据校验和(DCS):占用1个字节,为所有数据的校验和,计算方法是 TFI+PD0+PD1+……+PNn+DCS=00h。 结束标识(POSTAMBLE):占用1个字节,就是00h。
每天成长一点点
04
PN532命令: 唤醒命令: PN532自带一个休眠功能,要使用PN532对NFC卡片进行读写的时候要激活一下(唤醒),需要在程序 的开头,调用一次即可。 -> 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00 唤醒命令要在原有的数据包之前加入唤醒头,其中D4h表示从主机向PN532写入数据,14h 01h表示选择 了普通模式(就是读卡器模式)。 应答(Response): 00 00 FF 02 FE D5 15 16 00
每天成长一点点
06
认证命令: 为了安全考虑,卡片需要进行外部认证,步骤是: 外部设备从卡片获取16字节随机数;外部设备使用“外部认证秘钥”对随机数使用SM4_ECB方式加密; 外部设备将加密结果送入卡片,卡片对其进行解密,并对比随机数与解密结果是否一致;卡片返回认证结 果。 认证A秘钥,主机发送: D4 40 01 60 03 FF FF FF FF FF FF 11 22 33 44 D4:为主机发送到PN532; 40: 表示认证交换数据命令; 01: 表示目标1; 60 :表示验证A密码,如果是61表示验证B密码; 03 :表示卡的地址; FF FF FF FF FF FF:表示秘钥A; 11 22 33 44: 表示的卡片的ID号。 响应(Response): 0xD5 0x41 0x00 0xD5 表示PN532到主机; 0x41 响应代码由40+1得到; 0x00 表示没有错误。

纯干货,教您利用PN532读卡器在小米手环5NFC版上添加加密门禁卡

纯干货,教您利用PN532读卡器在小米手环5NFC版上添加加密门禁卡

纯干货,教您利用PN532读卡器在小米手环5NFC版上添加加密门禁卡本内容来源于@什么值得买APP,观点仅代表作者本人|作者:LifeIsKillingMe上回说到,张大妈带我入坑在天猫购买了小米手环5 NFC版,188元的价格在当时还算比较实惠。

不过后来手环在PDD的价格呈跳水之势。

所以,东西买了就不要再看张大妈了,以防心态失衡。

同时呢,要想办法压榨所购商品的性能并发挥到极致,这才是极客的精神。

之前的原创文章分享了小米手环5NFC版初入手的基本感受,因为平时是老婆佩戴的,深度功能我也无从体验。

老婆刚开始戴手环还蛮开心的,特别是第一次用手环刷卡过闸机坐地铁,轻松了不少。

不过早上进公司打卡发觉APP中模拟门禁卡无法使用,下班手环刷闸机再无反应,对着小米雷军一顿怒骂。

我必须得解决啊,否则又要破费买Apple Watch 5了啊。

那个天猫店和小米旗舰店的客服都是一问三不知,只得自行研究。

交通卡的问题最终通过重置小米手环出厂配置得以解决,但是门禁卡的问题还是研究了好久,找了不少网上资料。

这里分享一下解决的详细流程,希望对众多跟风购入小米手环5NFC的值友有所帮助。

什么是NFC?简单科普一下,NFC是Near Field Communication缩写,即近距离无线通讯技术。

该模式就是将具有NFC功能的设备模拟成一张非接触卡,如门禁卡、银行卡等。

卡模拟模式主要用于商场、交通等非接触移动支付应用中,用户只要将手机靠近读卡器,并输入密码确认交易或者直接接收交易即可。

此种方式下,卡片通过非接触读卡器的RF域来供电,即便是NFC设备没电也可以工作。

在该应用模式中,NFC识读设备从具备TAG能力的NFC手机中采集数据,然后将数据传送到应用处理系统进行处理。

基于该模式的典型应用包括本地支付、门禁控制、电子票应用等等。

目前不少安卓手机及其穿戴设备都支持NFC,应用于各种现实场景。

遗憾的是,苹果设备的NFC只支持自己的Apple Pay,安装其上的各APP无权使用NFC。

【RFID】第16单元 NFC卡基本操作

【RFID】第16单元 NFC卡基本操作
术特征,可以用于各种不同的目的,其技术本身没有优劣差别。
实验原理
二、NFC技术 (4) NFC技术原理 NFC模块可以在主动或被动模式下交换数据。
NFC主动工作模式系统框图
NFC被动工作模式系统框图
实验原理
二、NFC技术 (5) NFC与RFID区别 1)NFC将非接触读卡器、非接触卡和点对点功能整合进一块单芯
任务一 实验内容 任务二 实验目的 任务三 实验原理 任务四 实验步骤 任务五 拓展任务
实验原理
一、NEWLab实训平台 二、NFC技术 三、NEWLab平台NFC模块
实验原理
一、NEWLab实训平台
NEWLab平台界面
实验原理
二、NFC技术 (1) NFC技术概论 NFC英文全称Near Field Communication,是由飞利浦和索尼联合开
(7)选择【读写操作】页面,选择数据块01, 点击【写入】 发送数据:FF 55 00 00 03 09 11 01 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 BA AF 接收数据:FF 55 00 00 83 09 01 00 41 0D
任务一 实验内容 任务二 实验目的 任务三 实验原理 任务四 实验步骤 任务五 拓展任务
任务一 实验内容 任务二 实验目的 任务三 实验原理 任务四 实验步骤 任务五 拓展任务
• NFC卡应用
实验内容
任务一 实验内容 任务二 实验目的 任务三 实验原理 任务四 实验步骤 任务五 拓展任务
实验目的
• 了解高频NFC卡概念 • 学习读取高频NFC卡信息操作 • 学习高频NFC读写操作 • 掌握NFC卡应用的方法和步骤 • 了解高频卡片的数据结构及通讯数据包结构 • 学习C#串口通信技术 • 掌握获取高频NFC卡信息的指令,能够读懂反馈信息

读取NfcA格式数据

读取NfcA格式数据

读取NfcA格式数据如何读取数据?Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);NfcA nfcA = NfcA.get(tag);nfcA.connect();byte[] SELECT = {(byte) 0x30, (byte) 0x05};//我读取的NFC卡⽚使⽤的是NTAG216的芯⽚,这⾥的指令参数是根据其datasheet的说明写的。

byte[] result = nfcA.transceive(SELECT);//这⾥会返回16个字节的数据,根据芯⽚不同会有差异该芯⽚的快速读写命令是0x3A,可以指定读取页数范围,在使⽤快速读写命令时,发现读取范围超过70字节android就会报错,所以使⽤了每次最多读取64字节的⽅式。

package com.yorkg.android.nfc;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.Arrays;import android.app.Activity;import android.app.AlertDialog;import android.app.PendingIntent;import android.content.DialogInterface;import android.content.Intent;import android.content.IntentFilter;import android.nfc.NfcAdapter;import android.nfc.Tag;import android.nfc.tech.MifareClassic;import android.nfc.tech.NfcA;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import com.yorkg.android.nfc.dataobject.mifare.MifareBlock;import com.yorkg.android.nfc.dataobject.mifare.MifareClassCard;import com.yorkg.android.nfc.dataobject.mifare.MifareSector;import com.yorkg.android.nfc.util.Converter;public class MyFirstNFCDemoActivity extends Activity {/** Called when the activity is first created. */private Button clearBtn = null;private EditText sealCompanyName = null;private EditText sealName = null;private EditText sealNumber = null;private EditText sealTaxId = null;private EditText sealCode = null;private EditText sealMaterial = null;private EditText sealSize = null;private EditText companyMadedName = null;private EditText companyMadedTime = null;private EditText companyCheckedName = null;private NfcAdapter mAdapter;private PendingIntent mPendingIntent;private IntentFilter[] mFilters;private String[][] mTechLists;private static final int AUTH = 1;private static final int EMPTY_BLOCK_0 = 2;private static final int EMPTY_BLOCK_1 = 3;private static final int NETWORK = 4;private static final int NFC_OFF = 5;private static final int NFC_TYPE_ERROR = 6;private static final String TAG = "NfcDemo";private static boolean READ_LOCK = false;private void initView(){sealCompanyName = (EditText) this.findViewById(R.id.edittext_seal_company_name);sealName = (EditText) this.findViewById(R.id.edittext_seal_name);sealNumber = (EditText) this.findViewById(R.id.edittext_seal_number);sealTaxId = (EditText) this.findViewById(R.id.edittext_tax_id);sealCode = (EditText) this.findViewById(R.id.edittext_code);sealMaterial = (EditText) this.findViewById(R.id.edittext_seal_material);sealSize = (EditText) this.findViewById(R.id.edittext_seal_size);companyMadedName = (EditText) this.findViewById(R.id.edittext_company_maded_name);companyMadedTime = (EditText) this.findViewById(R.id.edittext_company_maded_time);companyCheckedName = (EditText) this.findViewById(R.id.edittext_company_checked_name);clearBtn = (Button) this.findViewById(R.id.clear_btn);clearBtn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubcleanData();}});}//清除数据信息private void cleanData(){sealCompanyName.setText("");sealName.setText("");sealNumber.setText("");sealTaxId.setText("");sealCode.setText("");sealMaterial.setText("");sealSize.setText("");companyMadedName.setText("");companyMadedTime.setText("");companyCheckedName.setText("");}@Overridepublic void onCreate(Bundle savedState) {super.onCreate(savedState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(yout.main);initView();mAdapter = NfcAdapter.getDefaultAdapter(this);mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // Setup an intent filter for all MIME based dispatchesIntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);// try {// ndef.addDataType("*/*");// } catch (MalformedMimeTypeException e) {// throw new RuntimeException("fail", e);// }mFilters = new IntentFilter[] { ndef, };mTechLists = new String[][] { new String[] { MifareClassic.class.getName() } , new String[] {NfcA.class.getName()}};//得到是否检测到ACTION_TECH_DISCOVERED触发if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {//处理该intentresolveIntentNfcA(getIntent());}}@Overridepublic void onResume() {super.onResume();if (mAdapter!=null && (!mAdapter.isEnabled())) {showAlert(NFC_OFF, getString(R.string.error5));}if (mAdapter!=null) {mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters,mTechLists);}}@Overridepublic void onNewIntent(Intent intent) {resolveIntentNfcA(intent);}@Overridepublic void onPause() {super.onPause();if (mAdapter!=null){mAdapter.disableForegroundDispatch(this);}}void resolveIntentNfcA(Intent intent){if (READ_LOCK==false){READ_LOCK = true;Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())){Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); MyLog.i(TAG, Arrays.toString(tagFromIntent.getTechList()));try{NfcA nfcA = NfcA.get(tag);nfcA.connect();byte[] SELECT = {(byte) 0x30,(byte) 0x05,};byte[] result = nfcA.transceive(SELECT);int data_len = ((result[0]&0x0f)<<8)+((result[1]&0xff));MyLog.i(TAG, "是否已写⼊数据"+result[0]+",写⼊数据长度:"+data_len); byte[] buf_res = new byte[data_len/2+4];if (result[0]!=0 && data_len!=0){int count = data_len/2/64;int i = 0;for (i=0; i<count; i++){// //读取数据byte[] DATA_READ = {(byte) 0x3A,(byte) (0x06+i*(64/4)),(byte) (0x06+(i+1)*(64/4))// (byte) (5+data_len/8)};byte[] data_res = nfcA.transceive(DATA_READ);System.arraycopy(data_res, 0, buf_res, i*64, 64);MyLog.i(TAG, "读卡成功");}if (((data_len/2)%(64))!=0){byte[]DATA_READ = {(byte) 0x3A,(byte) (0x06+i*(64/4)),(byte) (((0x06+i*(64/4))+(data_len/2/4)%(64/4))-1)// (byte) (5+data_len/8)};byte[] data_res = nfcA.transceive(DATA_READ);System.arraycopy(data_res, 0, buf_res, i*64, (data_len/2)%64);MyLog.i(TAG, "读卡成功2");}String res = gb2312ToString(buf_res);MyLog.i(TAG, "stringBytes:"+res);showNFCInfo(res);}}catch(IOException e){e.printStackTrace();cleanData();MyLog.e(TAG, "读卡失败");}catch (Exception e) {// TODO: handle exceptione.printStackTrace();showAlert(NFC_TYPE_ERROR, getString(R.string.error6));}finally{}}READ_LOCK = false;}}//将数据转换为GB2312private String gb2312ToString(byte[] data) {String str = null;try {str = new String(data, "gb2312");//"utf-8"} catch (UnsupportedEncodingException e) {}return str;}//将字符串解析显⽰到页⾯private void showNFCInfo(String str){String[] contents_temp = str.split("\\|");String[] contents = new String[contents_temp.length];int i;for (i = 0; i < contents_temp.length; i++) {contents[i]=contents_temp[i];}//⽬前有10项,所以这⾥只初始化到第10项for (int j=i; j<10; j++){contents[j]="";}if (contents[0]!=null){sealCompanyName.setText(contents[0]);}if (contents[1]!=null){sealName.setText(contents[1]);}if (contents[2]!=null){sealNumber.setText(contents[2]);}if (contents[3]!=null){sealTaxId.setText(contents[3]);}if (contents[4]!=null){sealCode.setText(contents[4]);}if (contents[5]!=null){sealMaterial.setText(contents[5]);}if (contents[6]!=null){sealSize.setText(contents[6]);}if (contents[7]!=null){companyMadedName.setText(contents[7]);}if (contents[8]!=null){companyMadedTime.setText(contents[8]);}if (contents[9]!=null){companyCheckedName.setText(contents[9]);}}private void showAlert(int alertCase,String str) {// prepare the alert boxAlertDialog.Builder alertbox = new AlertDialog.Builder(this); switch (alertCase) {case AUTH:// Card Authentication Erroralertbox.setMessage(getString(R.string.error1));break;case EMPTY_BLOCK_0: // Block 0 Emptyalertbox.setMessage(getString(R.string.error2));break;case EMPTY_BLOCK_1:// Block 1 Emptyalertbox.setMessage(getString(R.string.error3));break;case NETWORK: // Communication Erroralertbox.setMessage(getString(R.string.error4));break;case NFC_OFF:alertbox.setMessage(getString(R.string.error5));break;case NFC_TYPE_ERROR:alertbox.setMessage(getString(R.string.error6));}// set a positive/yes button and create a listeneralertbox.setPositiveButton("OK", new DialogInterface.OnClickListener() { // Save the data from the UI to the database - already donepublic void onClick(DialogInterface arg0, int arg1) {clearFields();}});// display boxalertbox.show();}private void clearFields() {}}。

stm32——NFC芯片--PN532的使用

stm32——NFC芯片--PN532的使用

stm32——NFC芯片--PN532的使用一、NFC简介NFC(Near Field Communication)近场通信,是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。

其传输速度有106Kbit/秒、212Kbit/秒或者424Kbit/秒三种。

目前近场通信已通过成为ISO/IEC IS 18092国际标准、ECMA-340标准与ETSI TS 102 190标准。

NFC近场通信技术是由非接触式射频识别(RFID)及互联互通技术整合演变而来,在单一芯片上结合感应式读卡器、感应式卡片和点对点的功能,能在短距离内与兼容设备进行识别和数据交换。

工作频率为13.56MHz.但是使用这种手机支付方案的用户必须更换特制的手机。

目前这项技术在日韩被广泛应用。

手机用户凭着配置了支付功能的手机就可以行遍全国:他们的手机可以用作机场登机验证、大厦的门禁钥匙、交通一卡通、信用卡、支付卡等等。

二、PN532概述PN532是一个高度集成的非接触读写芯片,它包含80C51微控制器内核,集成了13.56MHz下的各种主动/被动式非接触通信方法和协议。

PN532传输模块支持6种不同的工作模式:读写器模式,支持ISO/IEC 14443A / MIFARE®机制读写器模式,支持FeliCa机制读写器模式,支持ISO/IEC 14443B机制卡操作模式,支持ISO 14443A / MIFARE®机制卡操作模式,FeliCa机制ISO/IEC18092,ECM340点对点支持主机接口:-SPI接口-I2C接口-串行UARTPN532的操作形式如下图所示:卡操作模式读写器模式三、PN532模块搭配ISO/IEC14443Type A-4卡片我使用的是PN532模块搭配ISO/IEC14443Type A-4卡,使用串口模式。

这个卡是使用APDU(Application Protocol Data Unit--应用协议数据单元)的指令形式操作的。

采用PN512的NFC驱动电路设计

采用PN512的NFC驱动电路设计

采用PN512的NFC驱动电路设计
NFC 技术原理
支持NFC 的设备可以在卡操作或读写器模式下交换数据。

在读写器模
式下,启动NFC 通信的设备,也称为NFC 发起设备(主设备),在整个通信过
程中提供射频场(RF-field)。

它可以选择106kbps、212kbps 或424kbps 其中一种传输速度,将数据发送到另一台设备。

另一台设备称为NFC 目标设备(从
设备),不必产生射频场,而使用负载调制(load modulation)技术,即可以相
同的速度将数据传回发起设备。

此通信机制与基于ISO14443A、MIFARE 和FeliCa 的非接触式智能卡兼容,因此,NFC 发起设备在读写器模式下,可以用
相同的连接和初始化过程检测非接触式智能卡或NFC 目标设备,并与之建立
联系。

PN512 电路主要特性
集成了RF 场检测器集成了数据模式检测器,支持S2C 接口,集成了
NFCIP-1 的RF 接口,传输速率高达424kbit/s
支持主机接口:
-SPI 接口,高达10Mbit/s
-I2C 接口,快速模式为400kbit/s,高速模式为3400kbit/s
-不同传输速率的串行UART,高达1228.8kbit/s,帧随RS232 接口而定,接口的电压电平取决于端口的电源
-8 位并行接口,带/不带地址锁存使能
典型电路
tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

windows平台修改libnfc1.7.0使其支持pn532_uart模块

windows平台修改libnfc1.7.0使其支持pn532_uart模块

windows平台修改libnfc1.7.0使其支持pn532_uart模块windows平台修改libnfc 1.7.0使其支持pn532_uart模块chenxupro 前几天写了一篇文章,详述了libnfc 1.7.0在windows下的编译过程,打开了对acr122u模块、pn53x_usb模块、pn532_uart模块等的支持,今天试了一下,发现在win下libnfc默认好像只扫描使用acr122_pcsc driver和pn53x_usb driver的模块,而我连接了pn532_uart 模块之后提示没有找到NFC设备。

Debug模式编译运行nfc-list.exe输出如下:unknown libnfc.general log_level is set to 3debug libnfc.general allow_autoscan is set to truedebug libnfc.general allow_intrusive_scan is set to falsedebug libnfc.general 0 device(s) defined by usernfc-list.exe uses libnfc 1.7.0debug libnfc.general 0 device(s) found using acr122_pcsc driverdebug libnfc.general 0 device(s) found using pn53x_usb driverNo NFC device found.于是,我开始查找支持pn532_uart的方法,通过查看源码发现libnfc使用两种方式获取nfc 设备:1.自动扫描autoscan2.用户自定义设备user_defined_devicelibnfc支持读取libnfc.conf配置文件的方式加载用户定义的设备。

最开始,我尝试了在cmake生成的config.h里增加#define CONFFILES,重新编译的时候报错:undefined reference to '_imp__regcomp'这是由于conf.c里面调用了regcomp等函数,这些函数属于regex正则解析库,但是我使用的MinGW64里面没有这个库。

加密门禁卡装入NFC手机

加密门禁卡装入NFC手机

加密门禁卡装入NFC手机在小区门禁被物业公司强制升级后,家里的3张门禁卡、手机复制的门禁卡、小米手环4复制的门禁卡,统统不能使用了。

以前方便地使用手机刷开门禁的方式不能使用了。

起初以为是物业公司只是更换了门禁控制机,要把门卡重新授权下而已。

当拿到物业公司给重新授权后的门禁卡后,再次使用小米手环4复制卡时提示加密卡片不能复制,而小米手机cc9虽然可以复制成功但是不能正常刷开门禁。

为了便于使用,特意研究了一番。

网购了pn532模块,受益于强大的科学技术、快捷的物流体系,只花了三十多块钱,3天时间就从深圳送到了郑州。

pn532模块有TTL接口,使用杜绑线连接USB转TTL模块,连接至电脑。

可由电脑自动安装相关驱动或者手动安装驱动文件,相关软件可向购买商家索取或网上搜索下载。

我这里使用MifareOneT ool这个软件进行分析IC卡片。

1. 点击'检测连接'等待识别完成pn532模块,识别完成后,如下图示:2. 将门禁卡片放到模块上,进行扫描卡片,识别出卡片,如下:3. 检查加密,可以看到扇区01未知的key,如下:由于扇区1加密,需要进行解密。

4. 点击'一键解原卡',软件进行解密,耐心等待解密完成。

当解卡完成后,将会出现以下完成提示,并根据提示保存dump 文件:由于经过验证我们小区门禁系统并未检查UID 卡号(0扇区卡号数据),其它扇区中只有扇区1有数据,所以主要关注扇区1数据即可。

使用16进制编辑软件打开刚导出的dump文件,如下图示:经过对比分析,扇区1的0块数据的4-6位为16进制的日期,如15 01 09,换算为十进制后的日期为21 01 09即21年1月9号。

图示上的keya 与 keyb 位置为第二扇区的密钥key a 与 key b。

主要将扇区1数据写入到手机NFC虚拟门卡或者其它卡实体门片即可。

(对于检验卡号的门禁系统,需要将卡号复制到NFC手机或者新卡片中,由于本小区门禁未检验卡号,遂未复制卡号。

海信手机NFC使用指南完整版

海信手机NFC使用指南完整版

海信手机NFC使用指南以A2T为例介绍目录海信手机NFC使用指南 (1)一 NFC简介 (2)二 NFC功能分类 (2)三 NFC打开方法 (2)3.1 NFC总开关打开方法 (2)3.2 NFC P2P开关打工方法 (3)四 NFC 读写功能(RW)使用方法 (4)4.1 读写功能的前提 (4)4.2 NFC读功能 (4)4.3 NFC写功能 (11)五 NFC传文件功能(P2P)使用方法 (17)5.1 使用手机通过NFC进行传文件 (17)5.2 NFC传文件有两种方式: (17)六 NFC支付功能(简称CE)使用方法 (22)6.1 基于NFC-SIM卡的支付功能 (22)6.2 基于HCE的支付功能(云闪付) (25)一 NFC简介NFC (Near Field Communication )是一种短距离的高频无线通讯技术,可以让装置进行非接触式点对点资料传输,也允许装置读取包含产品资讯的近距离无线通讯(NFC) 标签。

也可以使用此功能来付款或购买车票或活动门票,但须先下载所需的应用APK。

二 NFC功能分类NFC的功能可以分为三大类:I NFC读写功能(简称RW)II NFC传文件功能(简称P2P)III NFC支付功能(简称CE)三 NFC打开方法3.1 NFC总开关打开方法打开手机设置→进入NFC→打开/关闭NFC,如图所示3.2 NFC P2P开关打开关闭方法nfc传文件有单独的开关,默认P2P开关是随着NFC总开关进行变化,NFC总开关打开,则P2P开关打开、NFC开关关闭,P2P开关也会关闭。

但也可以在NFC打开的情况下,单独关闭P2P功能,打开P2P开关位置:打开手机设置--进入NFC--进入Android Beam打开/关闭NFC如图所示四 NFC 读写功能(RW)使用方法4.1 读写功能的前提打开NFC总开关,此时手机设备即处于可读写的状态。

点亮屏幕,解锁屏保,使手机处于亮屏解锁状态4.2 NFC读功能4.2.1 NFC读普通未加密NFC标签内容常见此类标签存储内容有:名片、链接、Wifi热点、电子邮件、电话号码、地理位置、纯文本、SMS等内容使用手机读取此类标签方法:a手机处于亮屏解锁状态b将标签慢慢靠近手机背部NFC天线位置c如果手机装有多个可以读的应用,会在屏幕弹出一个选择列表,让用户选择d用户选择相关应用查看即可4.2.1.1 使用海信A2T读取标签的例子:研发内部使用的可读写的NFC标签如下:标签的大小、形状都没有限制读取标签的步骤如下:a A2T手机处于亮屏解锁状态下b 将存储热点的标签慢慢靠近A2T背部天线位置(A2T天线位置位于背部屏幕中间偏上位置)c 手机屏幕读取到标签内容后会在主屏幕提示用户是否链接此热点,如果当前有此热点,点击即可连接d 换一个存储手机号码的标签,慢慢靠近A2T,手机主屏幕会显示出所有可以读此标签的应用,让用户选择e 用户选择使用“新标签已收集”应用,查看标签内容a b、cd e4.2.2 NFC读加密特殊NFC标签内容此类标签一般都是特殊基于特殊用途的标签,在此以使用“我的青岛”读取公交卡(琴岛通卡)和给公交卡充值为例进行介绍a 安装“我的青岛“b打开我的青岛c点击读余额d此时将琴岛通公交卡慢慢贴近A2T 手机天线位置,等待手机读取e余额读取成功,如图所示f继续点击余额右侧的“充值”g选择要充值的金额,点击付款h会出现支付宝付款界面,点击立即付款,付款成功后,将公交卡慢慢贴近A2T天线位置,等待充值即可。

pn532使用手册20110816 NFC

pn532使用手册20110816 NFC

PN532电路板使用手册PN532电路板使用手册 (1)一、电路板接线 (1)二、通信接口连接。

(2)三、libnfc使用 (3)四、SCRTester使用 (4)五、linux下面的使用 (6)六、p2p通信 (12)一、电路板接线芯片通信接口选择,pn532有3种通信方式,如下面的图所示,off是0,on是1.二、通信接口连接。

三、libnfc使用3.1、先查看是那个串口,在电脑设备管理那里查看。

3.2、运行cmd命令行,cd到libnfc目录,输入:nfc-list.exe --device PN532_UART:COM1:115200根据具体情况,或许是com2,com3等等,运行这个命令之前放一个mifare卡片到pn532天线的地方。

3.3、结果有放卡片的结果没有放卡片的结果四、SCRTester使用打开scrtester软件,关闭之前的所有窗口。

新建一个serial连接。

选择script – commands协议选择TAMA串口这里选择com3,根据具体的串口号来选择,同样是在电脑的设备管理那里查看串口号,波特率选择115200,no parity没有校验位,1 stop bit一个停止位,然后connect连接设备。

这个时候就可以通过软件来操作电路板了。

注意:由于这个时候pn532处于sleep状态,需要唤醒,唤醒的命令是:55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00用串口以16进制方式发送,这个时候串口软件也会收到回应。

或者用libnfc来唤醒,输入上面那个命令就可以唤醒pn532,然后接着用scrtester软件来操作。

五、linux下面的使用linux下面的libnfc + pn5322011-08-04 00:08linux下面libnfc+ pn532测试。

1、开发环境vmware,ubuntu,硬件是pn532电路板+ft232usb转串口小板。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
00 00 FF 03 FD D5 41 13 D7 00
析: 41 03 //错误
5、写卡
in: 00 00 ff 15 EB D4 40 01 A0 06 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F CD 00
析: 40 //命令
写操作: 00 00 FF 15 EB D4 40 01 A0 Addr BlockData 4F 00
解释:
Addr为要写入的地址,BlockData为要写的数据。
例:输入命令:00 00 FF 15 EB D4 40 01 A0 04 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 37 00
out: 00 00 FF 00 FF 00 //ACK
00 00 00 00 00 00 00 00 00 00 00 00 00 EA 00 //6块
析: 41 00 //正确
err: 00 00 FF 00 FF 00
解释:1、55 55 00 00 00 00 00 00 00 00 00 00 00 00唤醒命令比较特殊,仅有该命令有此部分,代表等待
2、命令 SAMConfiguration ,其中01表示配置为正常模式
例:返回信息00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00
02 F5 13 BE //UID
06 00 //DCS+POST
3、密钥验证
in: 00 00 fF 0F F1 D4 40 01 60 07 FF FF FF FF FF FF 02 F5 13 BE C2 00
析: 40 //命令
01 //卡1
60 //密钥验证命令
析:4a //命令
02 //卡数量,0--2
00 //波特率 106K
out:00 00 FF 00 FF 00
00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 02 F5 13 BE 06 00
析:00 00 FF 00 FF 00 //ACK
附件:
00 00 FF 00 FF 00
00 00 FF 0F F1 D5 4B 01 01
00 44 //44代表什么呢?
00 //不遵循ISO14443-4标准
07
04 8F D7 5A CF 20 80
60 00
二、P2P应用
1、初始化PN532到normal状态
解释:D5 33表示执行完毕,RF Field关闭
一、M1卡命令解析 (1号M1卡)
密钥验证:按照块号来验证,同一个扇区内只要验证其中一块,就可以操作同一个扇区内的4个块了。
操作另一个扇区时,还要重新验证。
1、初始化PN532到normal状态
00 00 FF 0C F4
D5 //PN532 到 MCU
4B //响应命令
01 //目标卡1
01 //目标卡数量,最大为0x02,最小为0
00 04 //atq
08 //卡容量 08=1K
04 //4个字节UID
传送操作: 00 00 FF 05 FB D4 40 01 B0 Addr DCS 00
存储操作: 00 00 FF 05 FB D4 40 01 C2 Addr DCS 00
关闭射频: 00 00 FF 04 FC D4 32 01 00 F9 00
PN532操作命令 PN532命令(S50)
说明:1、本文只针对pn532与S50卡的通信。
2、Pn532与PC通信方式为串口,波特率115200,数据位8,停止位1,奇偶校验none
3、除特别说明,所有发送和接收的信息都遵循普通帧格式
身份校验: 00 00 FF LEN LCS D4 40 01 60 Addr FF FF FF FF FF FF UID DCS 00
例:输入命令:00 00 FF 0F F1 D4 40 01 60 07 FF FF FF FF FF FF FB 0E E2 0B 94 00
解释:该命令为RFConfiguration,01表示RF field,00表示关闭射频
例:输入命令:00 00 FF 04 FC D4 32 01 00 F9 00
输出信息:00 00 FF 00 FF 00 00 00 FF 02 FE D5 33 F8 00
读操作: 00 00 FF 05 FB D4 40 01 30 Addr DCS 00
解释:
命令InDataExchange, 01表示目标卡数目,30表示读操作,Addr是要读取的block地址
例:输入命令:00 00 FF 05 FB D4 40 01 30 04 B7 00
01 //卡1
A0 //写卡命令
06 //块号
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F //16字节数据
out: 00 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 00 EA 00
out:00 00 FF 00 FF 00
00 00 FF 03 FD D5 51 01 D9 00 //超时
3、选择一个target 设定两个设备之间的通信速率为106k
in:00 00 ff 05 fb d4 4e 01 00 00 dd 00
out:00 00 FF 00 FF 00
2、激活1个target
in:00 00 ff 04 fc d4 50 01 00 db 00
out:00 00 FF 00 FF 00
00 00 FF 12 EE D5 51 00 AA 99 88 77 66 55 44 33 22 11 00 00 00 09 01 29 00 //正确响应
in: 00 00 ff 05 fb D4 40 01 30 07 B4 00 //读第7块
00 00 ff 05 fb D4 40 01 30 06 B5 00 //读第6块
00 00 ff 05 fb D4 40 01 30 08 B3 00 //读第8块
析: 40 //命令
1、扫描1个目标并初始化 212K
in: 00 00 ff 09 f7 D4 4A 01 02 00 FF FF 00 00 E1 00
out:00 00 FF 00 FF 00
00 00 FF 16 EA D5 4B 01 01 12 01 01 FE A2 A3 A4 A5 A6 A7 C0 C1 C2 C3 C4 C5 C6 C7 D5 00
07 //块号
ff ff ff ff ff ff //密钥
02 f5 13 be //UID
OUT: 00 00 FF 00 FF 00
00 00 FF 03 FD D5 41 00 EA 00
析: 41 00 //正确状态
4、读卡 //07是控制字节
解释:读该block的数据
输出信息:00 00 FF 00 FF 00 00 00 FF 13 ED D5 41 00 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 DA 00
解释:显然,读出的数据即写入的数据
in: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
out:00 00 FF 00 FF 00
00 00 FF 02 FE D5 15 16 00
/************NFC initial****************/
in: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00
out:00 00 FF 00 FF 00
00 00 FF 02 FE D5 15 16 00
2、寻卡
in:00 00 ff 04 fc d4 4a 02 00 e0 00
解释:对sector2中的block1全写01
输出信息:00 00 FF 00 FF 00 00 00 FF 03 FD D5 41 00 EA 00
解释:00表示写入成功
输入命令:00 00 FF 05 FB D4 40 01 30 04 B7 00
增操作: 00 00 FF 09 F7 D4 40 01 C1 Addr 01 00 00 00 DCS 00
减操作: 00 00 FF 09 F7 D4 40 01 C0 Addr 01 00 00 00 DCS 00
4、所有对EEPROM的操作必须首先经过身份验证
普通帧格式:(正常发送和接收的命令和数据遵循此格式)
ACK帧格式:
NACK帧格式:
扩展帧格式:
错误帧格式:(提示应用层错误,无法识别的命令或参数等错误)
命令集:
唤醒: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 03 FD D4 14 01 17 00
00 00 FF 03 FD D5 4F 00 DC 00 //正确
解释:
1、 ACK
2、 D5 15表示正确执行并完毕
获取UID: 00 00 FF 04 FC D4 4A 01 00 E1 00
2、 各波特率的值
相关文档
最新文档