POSTAMBLE:帧尾 一般为 00。

2、读写示例分析

使用的是pn532为主控芯片的NFC串口模块,来读写M1卡,注意所有数字为16进制形式。用usb转串口模块将pn532与电脑连接,串口助手发送选择hex。

波特率默认:115200 ,数据位:8 ,校验位:无,  停止位:1 ,流控:无。

硬件连接正常后开始操作,详细步骤分析:

(1)唤醒PN532:

[mw_shl_code=arduino,true]PC->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

PN532->PC: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00[/mw_shl_code]

其中第一条不符合普通的发送格式,比较特殊。如果没有正常返回,检查硬件连接和波特率。

(2)获取卡UID,也就是卡的唯一ID号,全球就这一个(理论上):

[mw_shl_code=arduino,true]PC->PN532: 00 00 FF 04 FC D4 4A 02 00 E0 00[/mw_shl_code]

04 //代表有四个数据分别是 D4 4A 02 00;

FC //这是04的补码 ;

4a //命令;

02 //卡数量,0--2;

00 //波特率 106K;

E0 //校验位  D4+4A+02+00=0x0120  取后两位20的补码为E0。

[mw_shl_code=arduino,true]PN532->PC:  00 00 FF 00 FF 00

00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 A1 9F F5 5E 3B 00

[/mw_shl_code]

00 00 FF 00 FF 00  //ACK;

00 00 FF 0C F4 D5 //PN532 到 MCU;

4B //响应命令;

01 //目标卡1;

01 //目标卡数量,最大为0x02,最小为0;

00 04 //atq;

08    //卡容量 08=1K;

04    //4个字节UID;

02 F5 13 BE //UID;

06 00 //DCS+POST;

到这一步,可以发送完命令在再刷卡,也可以把卡一直放上。

(3)密钥验证

注意验证完秘钥,卡不能离开,需要一直放在上面,才能顺利的完成下面读写操作,还有注意替换步骤(2)的UID,最后需要根据自己的UID计算校验位即倒数第二位。

[mw_shl_code=arduino,true]PC->PN532:  00 00 fF 0F F1 D4 40 01 60 07 FF FF FF FF FF FFA1 9F F5 5E C2 00[/mw_shl_code]

40 //命令;

01 //卡1;

60 //密钥验证命令;

07 //块号;

ff ff ff ff ff ff //密钥;

A1 9F F5 5E //UID 替换为步骤2得到的UID ;

C2 //检验位,根据替换的UID计算,计算方法跟步骤2一样。

[mw_shl_code=arduino,true]PN532->PC: 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 00 EA 00[/mw_shl_code]

41 00 //正确状态。

(4)读卡

[mw_shl_code=arduino,true]PC->PN532: 00 00 ff 05 fb D4 40 01 30 07 B4 00 //读第7块

PC->PN532: 00 00 ff 05 fb D4 40 01 30 06 B5 00 //读第6块

PC->PN532: 00 00 ff 05 fb D4 40 01 30 08 B3 00 //读第8块[/mw_shl_code]

M1卡有16个扇区,每个扇区4个块。

40 //命令;01 //卡1;30 //读卡命令;07 //快号。

[mw_shl_code=arduino,true]PN532->PC: 00 00 FF 00 FF 00 //ACK

00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF 01 00  //7块

PN532->PC: 00 00 FF 00 FF 00 //ACK

00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EA 00 //6块

[/mw_shl_code]

41 00 //正确,错误会返回: 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 13 D7 00  ;

41 03 //错误。

(5)写卡

[mw_shl_code=arduino,true]PC->PN532: 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

[/mw_shl_code]

40 //命令; 01 //卡1; A0 //写卡命令; 06 //块号;

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F  //16字节数据;

CD//校验和,如果更改其他的数需重新计算。

[mw_shl_code=arduino,true]PN532->PC: 00 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 00 EA 00

[/mw_shl_code]

41 00 //正确。

二、使用上位机方式进行操作

下面使用上位机软件进行读写测试:我们使用一个USB转串口模块连接到PN532模块。

PN532 模块:

模块图.jpg (116.16 KB, 下载次数: 12)

2019-6-3 15:19 上传

接线如下:

接线图.png (99.72 KB, 下载次数: 9)

2019-6-3 15:15 上传

我们使用模块的串口接口,因此在上面的配置模式中我们选的是HSU这个,即1、2两个开关都在左边(基于上图)。

线路连接好后,我们打开上位机软件,如下图:

上位机.png (4.42 KB, 下载次数: 19)

2019-6-3 15:21 上传

如果我们线路连接没有问题,接口选择也正确,就会显示“发现NFC设备”标识,如果没有连接好,则会出现“未发现NFC设备”。

上一步成功后,我们就可以使用PN532来进行读写NFC卡片了。

我们把门禁卡放在PN532模块上方,如下图所示:

读卡.jpg (186.5 KB, 下载次数: 8)

2019-6-3 15:23 上传

然后点击上位机中的【读取卡:读取卡片内容】,就可以读取到卡片的内容了:

结果.png (20.98 KB, 下载次数: 7)

2019-6-3 15:24 上传

更多详细资料可到零知实验室官网免费获取。

arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片相关推荐

  1. android arduino wifi模块,零知开源分享-ESP8266wifi模块的使用

    本帖最后由 零知实验室-roc 于 2019-5-14 14:01 编辑 1.说明 MCU:零知开源开发板-标准板 wifi模块:ESP-12F WiFi模块.png (85.41 KB, 下载次数: ...

  2. 零知开源分享-L298N模块使用 电机驱动 TT马达

    电机驱动模块在电子制作中会经常使用到,下面以L298N型号的模块为例介绍其使用方法. 模块引脚说明如下: 值得注意的是,它已经内置5V供电,所以不必从外面再接5V输入. 1.实验材料 直流减速电机TT ...

  3. arduino并口屏_零知开源软件库使用-ILI9341并口显示屏

    对于ILI9341的240x320屏幕,零知开源平台已经可以支持该显示屏的常用操作了,一个示例如下: /** *    文件: ili9341-并口显示.ino      by 零知实验室 *    ...

  4. 零知开发板和红外人体感应模块使用

    本文讲解如何使用人体感应模块HC SR505模块,我们使用一个LED来指示是否感应到人走进传感器,人走进时候LED指示灯亮,人离开范围内时候,LED熄灭.根据文档,该模块感应范围为3米,延迟时间是8s ...

  5. python 异常处理模块_我的python学习之路-异常处理和模块导入

    本节摘要 一.模块导入 二.导入包 三.异常处理 一.模块导入 文件就是一个模块,文件夹就是一个包 文件夹里面可以有很多文件,就相当于包中有好多的模块. 1.import 引入 模块不会被重复导入,引 ...

  6. 万兆单模模块_万兆(10G SFP+)单模光模块的介绍及应用

    原标题:万兆(10G SFP+)单模光模块的介绍及应用 10G万兆单模光模块通常与OS2单模光纤搭配使用,最高速率为10.3Gb/s,目前主流采用SFP+封装类型. 万兆单模光模块双纤波长为1310n ...

  7. linux 光功率 模块_基于国产芯片的千兆皮秒脉冲激光器模块研制

    本文内容转载自<激光技术>2019年12月,版权归<激光技术>编辑部所有. 刘云,吴敏,朱向冰,王宝慧,李风雨,马伟,徐焕银 安徽师范大学物理与电子信息学院,安徽问天量子科技股 ...

  8. python3语音识别模块_零基础教你玩转语音控制,学习语音控制技术,打造智能生活很简单...

    大家好,我是阿乐,今天给大家讲解一下LD3320语音识别模块. 先来看看模块实物,它是长这个样子的: LD3320语音识别模块实物 我现在用来给大家做讲解的这个模块是已经集成了单片机在上面,这样子开发 ...

  9. python画图的模块_用python和pygame游戏编程入门-画图模块

    在设计一个游戏时,有些时候你可以不加载任何图片,只是绘制一些图形来制作一个游戏. pygame.draw这个模块的作用是在屏幕上绘制各种图形. 函数 作用 rect 绘制矩形 polygon 绘制多边 ...

最新文章

  1. WPF INotifyPropertyChanged 通过特性减少代码量
  2. 多个硬件体验如一,华为终端分布式技术会重构IoT生态吗?
  3. BugkuCTF-Misc:白哥的鸽子
  4. 微信支付 - 构建商户订单
  5. java Concurrent包学习笔记(一):ExecutorService
  6. python蟒蛇绘制实例分析_011 实例2-Python蟒蛇绘制
  7. linux 读取文件夹命令,Linux系统编程_1_文件夹读取(实现简单ls命令)
  8. SpringCloud 基于OAth2.0 搭建认证授权中心_02
  9. 【POJ 1151】Atlantis
  10. 设计模式 C++单例模式
  11. ajaxpro.2.dll使用【转帖】
  12. 文件服务器 重复文件,ftp服务器校验重复文件
  13. nsa php版本,mnsa网络
  14. PPT双屏抽奖,大气,能Hold住全场!与其它PPT内容可融为一体,实现无缝切换!
  15. WF4.0 RC 对比 Beta2 的变化
  16. (博主可帮找错)Servlet.service() for servlet [dispatcherServlet] path [] threw exception feign.Feig,可截图私聊博主
  17. 《上海悠悠接口自动化平台》-1.新增API 与 各参数的描述
  18. 【超图+CESIUM】【基础API使用示例】18、超图|CESIUM - 标绘点位:Cesium.DrawHandler绘制点位Cesium.DrawMode.Point
  19. python操作cad的模块_Process Autocad by python
  20. html英雄联盟网页,Html+Css+JQuery实现简易英雄联盟官网

热门文章

  1. 电商领域用户的留存分析
  2. 上班被监控屏幕和摄像头,拒绝就直接开除,员工起诉公司获赔52万元
  3. 华为2021实验室招聘自动驾驶等相关方向工程师 / 博士后
  4. Tomcat启动成功访问404:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。
  5. 部署Kubernetes kube-apiserver启动失败
  6. 错误:All elements are null
  7. IRAP 的安装以及运行的实例 主要就是瞎调让程序能跑,,,
  8. 面向对象(文字格斗进阶版)
  9. 浅谈单片机低功耗处理
  10. 使用VMWare虚拟机创建CentOS版本的Linux学习环境(每一步都有截图与说明)