OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 34878|回复: 65

RFID_RC522例程分析+学习笔记

  [复制链接]

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
发表于 2018-5-2 21:40:05 | 显示全部楼层 |阅读模式
       RFID_RC522例程分析+学习笔记
在学习RFID_RC522时花了很长时间,期间搜集了很多的例程、资料和帖子,总感觉有点散,现今将其按照我的方式整理如下如有错误,还望指正。
1.首先先来说MF_RC522非接触式(最大通信速率13.56MHz)读写卡芯片。
MF_RC522能干什么?
MF_RC522的内部发送器部分可驱动读写器天线与ISO 14443A/MIFARE卡和应答机的通信。
ISO 14443A/MIFARE卡是什么?
即支持ISO 14443A通信协议的MIFARE卡(如RFID_RC522模块附带的M1卡)。
注释如下:
ISO是国际化标准组织。IEC是国际电工委员会。
ISO/IEC 14443协议是非接触式IC标准协议。这种协议又可分为TYPE ATYPE B两个标准,具体可以参考ISO/IEC 14443协议浅谈:TYPE ATYPE B
在这里ISO/IEC14443A==ISO14443A
换个方式说MF_RC522读写卡芯片符合ISO/IEC14443A 通信协议,ISO/IEC14443A协议支持MIFARE S50S70UltraLightMIFARE ProFM11RF08等兼容卡片。
说道这里再说一下非接触式IC卡的国际标准:
图片1.png
显然我们所用的M1卡就属于PICC,属于近耦合型的,作用距离在0~100mm(与读卡器有关),RC522读写器就是PCD
单片机怎样驱动MF_RC522
MF_RC522支持的主机接口类型有串行UARTI2CSPI,常见的RFID_RC522块都是SPI(串行外设接口)的,在使用时需要注意SPI接口的速率不能超过10bit/s
2.非接触式IC
在刚开始学习时看别人的例程或帖子时会看见Mifare_One卡、S50卡、M1_S50卡在这里我们统称为M1卡。M1卡的核心是飞利浦的下属子公司恩智浦出品的Mifare 1 IC S50系列微模块,毫无疑问它确定了卡片的特性以及卡片读写器的诸多性能。M1 IC S50内建有高速的CMOSEEPROMMCU等。卡片上除了IC微晶片及一副高效率的天线外,无任何其他元器件,卡片上无源(无任何电池),可以打开手电筒紧贴在卡的背面,观看卡的前面。
读写器怎么和无源的非接触式IC卡通信?
读写器(例如MF_RC522)向 M1 卡发一组固定频率的电磁波,卡片内有一个 LC 串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC 谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到 2V 时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。
例程分析:底层驱动代码是店家给的例程,经过了解后发现所有的RC522代码几乎一样。给的例程是用IO口模拟的,因为STM32自带有SPI外设,所以程序稍微改动就好。这里只对函数的调用进行分析,具体寄存器的操作,个人没有完全搞懂。
STM32F103ZET6SPI2工作在主模式下,波特率不大于10Mbps。因为SPI2挂载在APB1下所以输入时钟为36MHz,所以波特率预分频值不小于4MISOMOIS上传输字节时都是高位在前,空闲态时钟为低电平,在时钟上升沿同步接收和发送数据,在下降沿数据转换RST复位端低电平复位。
了解M1卡与读写器的通讯流程:
MF_RC522初始化—寻卡—防冲突—选卡—对要操作的块所在的扇区进行密码验证—操作卡(读、写、加值、减值、转移、恢复)。
图片2.png
如果想做一个简单的门禁控制读卡器,前三步就够了,能够实现对M1卡的UID读取和防冲突功能。再深入一点就是用于一卡通系统的读卡设备和发卡设备。实现对卡内EEPROM中的数据进行读、写、加值、减值、转移、恢复高层操作。
1.RC522初始化
    图片3.png
  对卡进行操作时,主要用到两类命令:
    图片4.png
    图片5.png
  PICC是接近式卡。PCD是接近式耦合设备。在通信过程中实际上是使用PCD命令控制RC522发出PICC命令与卡进行交互。
2.寻卡函数
    图片6.png
需要输入寻卡方式和一个用于存放卡片类型代码的数组,寻卡成功后,函数返回MI_OK0)并将返回两字节的卡片类型数据放入数组。
即卡的类型=(pTagType[0]<<8)|pTagType[1];
寻卡的命令有两个分别是上图Mifare_One卡片命令字 (M1)的前两个。
3.防冲突函数
  如果有多张Mifare 1卡片处在读写器的天线的工作范围之内时,防冲功能启用时,读写器会根据卡片的序列号来选定一张卡片。被选中的卡片将直接与读写器进行数据交换,未被选择的卡片处于等待状态,准备与读写器进行通信。
       图片7.png
  调用此函数需要输入一个4字节的用来存放卡片序列号数组。成功后函数返回MI_OK,并将得到的序列号放进数组。
4.选卡函数
       图片8.png
调用此函数需要卡片的序列号,选卡成功后返回MI_OK。
  到此为止我们就将M1的卡片序列号(ID)读出来了。下面就是对卡片内部的EEPROM操作的函数了,在此之前先来了解卡片的存储器组织结构和读写控制
M1的主要指标:
  1容量为 8K EEPROM
  2分为 16 个扇区,每个扇区为4块,每块16个字节,以块为存取单位
  3每个扇区有独立的一组密码及访问控制
  4每张卡有唯一序列号,为32 位,没有重复的两张Mifare
  5具有防冲突机制,支持多卡操作
  6工作频率:13.56MHZ
  7通信速率:106KBPS
  8读写距离:10cm以内(与读写器有关)
M1卡中的EEPROM的存储结构与访问权限:
   M1卡中集成了1024个字节的EEPROM,这1024个字节分成了16个扇区,每个扇区有4个块,每个块都有16个字节。
  M1卡中的这64个块在访问的时候是按绝对地址(块0)来操作的,即块地址=扇区编号×4+扇区内的块编号,其中扇区编号是0~15,扇区内的块编号是0~3所有扇区的第3块都是控制块,第0个扇区中的第0块是存放产品代码的,这个块是64个块中唯一一个只能读不能写的块,存放的是固化在其中的32bit的世界唯一的卡片序列号。其余15个扇区的第0块到第2块都是数据块。
          图片9.png   
  控制块包含了存取数据所需要的KeyA(密码A)可选的KeyB(密码B)以及本扇区内四个块的存储条件,当不需要KeyB时,这个块的最后6个字节可以被当做数据字节来使用。
M1卡出厂控制块默认值(初始值)为下图所示:
         图片10.png
  每个扇区的密码和存取控制都是独立的,可以根据实际需求设定各自的密码以及存取控制。存取控制为四个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是有密码和存取控制共同决定的,中在存取控制的每个块都有相应的三个控制位,定义如下:
  块0C10 C20 C30  
  块1C11 C21 C31
  块2C12 C22 C32
  块3C13 C23 C33
  例如:C1(该块的第几个控制位)0(块),块0的三位控制位中的第1位。
  三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权。
  存取控制(4字节,其中字节9为备用字节)结构如下所示:
          图片11.png   
  从图上可以看出:0三位存取控制位分别为 C10 C20 C30=0 0 0。反码位C10_b C20_b C30_b=1 1 1将反码取反得到000,继续向下看。
          图片12.png
  由刚才得到的块03位存取控制位的值可以看出,知道KeyAKeyB验证成功后就可以对块0进行读、写、加值、减值、转移、恢复操作。在这里要说的是,对于一个新卡来说KeyAKeyB都是默认的(FF FF FF FF FF FF),并且所有的数据块的三位存取控制位都是000
  需要注意的是,这里的存取条件查询表只适合数据块,而控制块的存取条件如下图:
  如果keyB可以读取,那么KeyB的空间就会用于存储数据,不能用来进行验证(这个地方自己去体会,想用KEYB就要修改KEYB的存储控制位),因为此时所有的进一步的存储区存取操作都将失败。一张新卡也不能用KeyB来验证(厂家设置的存取条件为001)。此外还有一个需要注意的地方就是,所有的控制块都禁止加值、减值、转移、恢复操作。
             图片13.png
控制块的三位存取控制位的初始值为C13 C23 C33=0 0 1。结合上表可知
密码A:不可读,验证KeyAKeyB正确后,可写(更改)。
存取控制:验证KeyAKeyB正确后,可写可读。
密码B:验证KeyAKeyB正确后,可写可读。

   

图片14.png
图片15.png
图片16.png
图片17.png
图片18.png
图片19.png
图片20.png
图片21.png
图片22.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-5-2 21:51:04 | 显示全部楼层
5.对要操作的块所在的扇区进行密码验证函数
&#160; &#160; 图片14 &#160; &#160; &#160;&#160;&#160;
&#160; &#160;密码验证模式有两种:
&#160; &#160; 图片15 &#160; &#160;&#160;&#160;&#160;
&#160; &#160;新卡的话每个扇区的控制块都是初始值,密码A和密码B都是6个0xFF&#160;。如果是被人用过的卡那可能个别扇区被修改了密码,不过16个扇区一般也不会都用。至于那几个扇区没有用,就需要自己用初始密码去试。
&#160; &#160;调用该函数需要选择密码验证是KEYA还是KEYB,然后输入你要操作的块地址,存放密码数组和存放卡片序列号的数组。验证成功后就可以对该块所在的扇区内所有的块进行操作了(读、写、加值、减值、转移、恢复)。
6.读/写函数
&#160; &#160;图片16 、17&#160; &#160; &#160;&#160;&#160; &#160;
&#160; &#160;这两个函数非常简单,输入要读/写的块地址和用来存放或写入数据的16个字节的数组。读/写成功后返回MI_OK。
&#160; &#160;在这里要注意:
&#160; 控制块的存取控制的那4个字节中规定了KEYA不能被读取,所以当你用KEYA6个0xFF读控制块的时候,读出KEYA是6个0x00。
&#160; 读/取都是按块(16个Byte)操作的。
&#160; 先读后写,防止把其他不需要改动的位给修改了。当用写函数修改密码A的时候注意记住修改后的密码。
&#160; 块0是不可写的。

数据块的两种应用:
&#160; A用作读/写快:只能用来读取和写入普通的16个Byte的数据。
&#160; B用作数值块:用于电子钱包功能(读、写、加值、减值、转移和恢复)。
&#160;&#160;当用M1卡作为电子钱包时,要将某个块按规定初始化为数值块。
&#160;&#160;如下图所示,0~3字节为数值(可以理解为多少钱),0字节是数值的最低字节。4~7字节是数值的取反值,8~9字节还是数值,12字节为地址,13字节地址反值,14、15就不说了。
&#160; &#160; &#160; 图片18
初始数值块是用写命令把数据写到块的,例如我把第1块初始化为值块,数值为0,用写块命令写入
0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x01,0xfe,0x01,0xfe。
然后可以用DECREMENT(减值)、&#160;INCREMENT(加值)、TRANSFER(转移)、&#160;RESTORE(恢复)命令对数值块进行操作了。
需要注意的是在执行加值/减值前面要将数值读出,计算加减后是否超处理数据有效范围,如小于0等。超出直接return;
6.扣款(减值)/充值(加值)函数
&#160; &#160; &#160;图片19&#160;、20
&#160;该函数可以对已将初始化好的数值块进行减值和加值操作,例如我们要对刚才初始成数值块的块1进行加值(加1)操作。我们第一个参数选择PICC_INCREMENT,地址输入0x01,加1的话即为0x00000001,我们新建一个4Byte的数组,使其最低字节为0x01。然后传入该数组,成功后返回MI_OK,然后我们再读块1后数据就会变成
&#160;0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x01,0xfe,0x01,0xfe。
&#160;有了此功能我们在用M1卡作为电子钱包时会方便很多。不用再自己去读、改、写等麻烦的操作了。
7.M1卡备份钱包函数
   &#160; &#160;图片20、21
&#160; 该函数里面使用了TRANSFER(转移)、RESTORE(恢复)命令字。
调用该函数可以将数值块备份到同一扇区内的另一个块,被备份的必须是数值块,普通数据块不可以备份。例如将数值块1备份数据块2,数据块就可以。
到此结束。&#160;烟台汽车工程职业学院&#160;王承飞&#160;QQ858777845
最后在这里我列出我学习和整理资料时参考的链接:
https://blog.csdn.net/a827415225/article/details/51898897
//CSDN MFRC522应用详解
http://www.docin.com/p-906980594.html
//豆丁网基于非接触式IC卡的读卡器的设计与开发
https://wenku.baidu.com/view/4d5b2ceb680203d8cf2f241b.html
//MFRC522中文资料 周立功
https://blog.csdn.net/u012246376/article/details/53843946
//RFID MFRC522综述
https://blog.csdn.net/smilestone_322/article/details/49721903
//Mifare&#160;卡之电子钱包
回复 支持 2 反对 0

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-7-5 08:17:19 | 显示全部楼层
RFID整理

RFRD整理.zip

4.44 MB, 下载次数: 15917

回复 支持 3 反对 0

使用道具 举报

15

主题

115

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2013-7-12
在线时间
64 小时
发表于 2020-2-26 23:55:47 | 显示全部楼层
这几天在研究M1卡,看见楼主的帖子,首先感谢楼主的无私奉献精神。
我看程序里面都是用KeyA去认证新卡,但是通过楼主的两张表,看着KeyB照样可以认证,并且可以操作其他数据块。
我就用KeyB读取了下数据块和控制块,结果不行。

后台看了一个官方的文档,发现上面楼主贴的2张表,有一点错误,其实空白卡,在默认访问模式下,KeyB是不被用来做认证的,
这里贴图出来供更多人绕过这个坑
无标题.png
提供工业物联网整体解决方案!
https://shop469761648.taobao.com/?spm=2013.1.0.0.3e0568ccstLyMK
回复 支持 2 反对 0

使用道具 举报

2

主题

42

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2013-10-10
在线时间
1 小时
发表于 2019-5-12 16:58:32 | 显示全部楼层
非常精进,赞一个!
你以为我在工作,其实我在玩;你以为我在玩,其实我在工作。
回复 支持 1 反对 0

使用道具 举报

2

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2017-9-13
在线时间
165 小时
发表于 2018-5-24 10:08:50 | 显示全部楼层
分析的很详细,
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-5-24 22:33:44 | 显示全部楼层
gugou 发表于 2018-5-24 10:08
分析的很详细,

谢谢。弄得详细点,以后用的时候更方便点。
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2015-4-19
在线时间
365 小时
发表于 2018-6-23 18:26:35 | 显示全部楼层

钱包前四个字节表示钱包数据,那是不是最大的值就是,0xFF FF FF FF ,即最大的数是:4294967295,是这样吗,还是说是自己按照实际的应用,自定义了,谢谢!
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2015-4-19
在线时间
365 小时
发表于 2018-6-23 18:27:10 | 显示全部楼层
轱辘t309065 发表于 2018-5-2 21:51
5.对要操作的块所在的扇区进行密码验证函数
&#160; &#160; 图片14 &#160; &#160; &#160;&#160;&#160;
&#1 ...



钱包前四个字节表示钱包数据,那是不是最大的值就是,0xFF FF FF FF ,即最大的数是:4294967295,是这样吗,还是说是自己按照实际的应用,自定义了,谢谢!
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2015-4-19
在线时间
365 小时
发表于 2018-6-23 18:28:07 | 显示全部楼层
比如要刷卡0.5元?
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-6-28 15:36:14 | 显示全部楼层
jinniuxing 发表于 2018-6-23 18:28
比如要刷卡0.5元?

最大值为0xFF FF FF FF,扣钱这一块你可以自己定义,如果卡里为0x00 00 00 FF(255),刷一次,变成0x00 00 00 FE,如果你把这扣掉的一个单位对应为5毛的话,那么余额为254*0.5元。
回复 支持 反对

使用道具 举报

1

主题

232

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2015-4-19
在线时间
365 小时
发表于 2018-6-29 22:51:56 | 显示全部楼层
轱辘t309065 发表于 2018-6-28 15:36
最大值为0xFF FF FF FF,扣钱这一块你可以自己定义,如果卡里为0x00 00 00 FF(255),刷一次,变成0x00  ...

哦,,明白了,谢谢!
回复 支持 反对

使用道具 举报

6

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
金钱
207
注册时间
2018-4-18
在线时间
10 小时
发表于 2018-7-3 16:00:30 | 显示全部楼层
很厉害 坚持下去
回复 支持 反对

使用道具 举报

24

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-10-9
在线时间
273 小时
发表于 2018-7-4 20:17:57 | 显示全部楼层
楼主方便把工程文件贴出来吗  多谢
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-7-5 08:20:58 | 显示全部楼层
一个人生活好多天 发表于 2018-7-4 20:17
楼主方便把工程文件贴出来吗  多谢

OK,我的也是参考的例程,主要是RC522.h和RC522.c,最好还是按照自己理解的去调用一些函数去试一试。
回复 支持 反对

使用道具 举报

24

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-10-9
在线时间
273 小时
发表于 2018-7-5 08:55:25 | 显示全部楼层
轱辘t309065 发表于 2018-7-5 08:20
OK,我的也是参考的例程,主要是RC522.h和RC522.c,最好还是按照自己理解的去调用一些函数去试一试。

OK xiexie
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-26
在线时间
13 小时
发表于 2018-7-6 22:37:32 | 显示全部楼层
本帖最后由 大家跟我一起数 于 2018-7-6 22:39 编辑

老哥  遇到一个问题 C:\Users\Pei\Desktop 进去就一直死在检测接收DR为空  怎么回事
111.png
2222.png
回复 支持 反对

使用道具 举报

24

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
850
金钱
850
注册时间
2015-10-9
在线时间
273 小时
发表于 2018-7-7 19:15:55 | 显示全部楼层
我用寻卡函数来寻卡,怎么只能成功寻一次,然后就没反应了
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-7-8 10:53:58 | 显示全部楼层
一个人生活好多天 发表于 2018-7-7 19:15
我用寻卡函数来寻卡,怎么只能成功寻一次,然后就没反应了

换一种寻卡方式试一试
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-26
在线时间
13 小时
发表于 2018-7-9 21:25:47 | 显示全部楼层
大家跟我一起数 发表于 2018-7-6 22:37
老哥  遇到一个问题  进去就一直死在检测接收DR为空  怎么回事

大神们  解释一哈子啊
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2018-8-1
在线时间
11 小时
发表于 2018-8-7 10:09:11 | 显示全部楼层
顶顶顶 优秀
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-8-28 14:47:25 | 显示全部楼层
想问问楼主,连线,因为我不清楚NSS是模块的那个脚
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-8-28 15:26:31 | 显示全部楼层
momo最可爱 发表于 2018-8-28 14:47
想问问楼主,连线,因为我不清楚NSS是模块的那个脚

你的模块没有原理图吗?正常的板子上都有标注的啊
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-8-28 15:42:19 | 显示全部楼层
轱辘t309065 发表于 2018-8-28 15:26
你的模块没有原理图吗?正常的板子上都有标注的啊

标了几个  3.3   RST    GND    IRQ   MISO  MOSI  SCK  SDA
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-8-28 17:39:17 | 显示全部楼层
momo最可爱 发表于 2018-8-28 15:42
标了几个  3.3   RST    GND    IRQ   MISO  MOSI  SCK  SDA

你的板子预留了IIC和SPI两种接口,那你看一下你的原理图中RC522的NSS引脚是否被电阻拉低或者拉高了。
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-8-29 08:20:05 | 显示全部楼层
[img]&#8234;C:\Users\Administrator\Desktop\TZ9%5B%5DRJH]6[)SX5XMQ2W2UY.png[/img]  你看看
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-8-29 08:20:54 | 显示全部楼层
可以聊QQ吗 似乎这个不方便发图 1285973921
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-8-29 08:24:07 | 显示全部楼层
轱辘t309065 发表于 2018-8-28 17:39
你的板子预留了IIC和SPI两种接口,那你看一下你的原理图中RC522的NSS引脚是否被电阻拉低或者拉高了。

不知道哪个是NSS
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2115
金钱
2115
注册时间
2011-9-3
在线时间
121 小时
发表于 2018-9-17 17:43:26 | 显示全部楼层
你好。看了你分享的RFID学习笔记,总结的真不错。现在我碰到一个问题,请请教一下:就是在对数据块加值,减值时,总是返回不正确的数值,返回值为98,导致加值,减值不成功。
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2018-5-10
在线时间
20 小时
发表于 2018-11-24 18:01:35 | 显示全部楼层
楼主麻烦问一下,为什么每张卡读出来的卡号都是一样的536870914??、是要对卡进行什么操作吗??
我是直接寻卡、防冲撞、选卡然后输出卡号的,可是每次卡号都一样呀这是串口调试助手输出的
PcdRequest_MI_OK
PcdAnticoll_MI_OK
PcdSelect_MI_OK
PcdAuthState_MI_OK
536870914
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-11-26 08:23:12 | 显示全部楼层
sd4555 发表于 2018-11-24 18:01
楼主麻烦问一下,为什么每张卡读出来的卡号都是一样的536870914??、是要对卡进行什么操作吗??
我是直 ...

读的是第0扇区的第0块的数据吗?
回复 支持 反对

使用道具 举报

0

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-3-21
在线时间
45 小时
发表于 2018-11-30 15:58:50 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

7

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
496
金钱
496
注册时间
2017-12-11
在线时间
63 小时
 楼主| 发表于 2018-12-6 22:59:40 | 显示全部楼层
补充两个链接:
https://blog.csdn.net/yxtxiaotian/article/details/62217926
//射频识别技术漫谈(14)——Mifare S50与S70的存取控制
https://blog.csdn.net/robinson_911/article/details/12783897
//关于S50卡密钥A和密钥B
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-12-14 17:34:18 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

46

主题

199

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1117
金钱
1117
注册时间
2016-3-25
在线时间
363 小时
发表于 2019-2-3 23:45:30 | 显示全部楼层
楼主新年好。我想咨询你一个问题。问题描述如下:
我用的是STM32F103C8T6+FM17550 ,现在能只能读写0扇区的1,2块的数据,1~16扇区的数据块都不能读写,卡是一张白卡,请问问题出现在哪里,请不吝赐教,谢谢!
代写STM32各类驱动,DEMO程序
回复 支持 反对

使用道具 举报

21

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
807
金钱
807
注册时间
2017-6-30
在线时间
171 小时
发表于 2019-5-28 16:35:23 | 显示全部楼层
本帖最后由 哔哩吧啦 于 2019-5-28 16:38 编辑

酷,照着做实现了增值减值和备份。刚好需要。非常感谢。随便问下有时间读CPU卡的吗
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-5-2
在线时间
12 小时
发表于 2019-6-17 19:53:27 | 显示全部楼层
发出完整。辛苦了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2019-7-22
在线时间
1 小时
发表于 2019-7-22 10:09:38 | 显示全部楼层
请问可以把你的驱动给我吗
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-10-29
在线时间
10 小时
发表于 2019-11-4 08:48:29 | 显示全部楼层
楼主你好 我用了你的程序 我自己改动了一下 帮我看看 为什么会寻卡会成功失败交替
搜狗截图20191101172736.png

STM32103C8 - SPI1 - RC522 - 20191101 - 1.rar

3.25 MB, 下载次数: 194

回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-10-29
在线时间
10 小时
发表于 2019-11-4 09:02:48 | 显示全部楼层
楼主的程序很好用
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-10-29
在线时间
10 小时
发表于 2019-11-4 09:04:25 | 显示全部楼层
楼主看看我这个寻卡是失败成功交替是怎么回事
搜狗截图20191101172736.png

STM32103C8 - SPI1 - RC522 - 20191101 - 1.rar

3.25 MB, 下载次数: 74

回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2019-4-24
在线时间
20 小时
发表于 2019-11-23 15:53:48 | 显示全部楼层
请问选卡失败是什么问题导致
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2018-9-26
在线时间
19 小时
发表于 2019-12-13 09:34:31 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

1

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
310
金钱
310
注册时间
2016-7-29
在线时间
58 小时
发表于 2019-12-23 18:07:48 | 显示全部楼层
多谢。。。分析得很到位。。。
回复 支持 反对

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2019-6-17
在线时间
29 小时
发表于 2019-12-24 10:02:12 | 显示全部楼层
哈哈,总算看到用stm32搞智能卡的人。我现在就是做这方面的。你分析的都是M1卡,现在很少用的,因为不安全,现在有关于扣费的卡大多数都是用CPU卡了。
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-18
在线时间
3 小时
发表于 2020-2-2 15:55:07 | 显示全部楼层
stm32笔记、资料、手册
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2019-5-18
在线时间
3 小时
发表于 2020-2-2 18:36:32 | 显示全部楼层
能不能说一下CPU卡读写程序啊
回复 支持 反对

使用道具 举报

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-9-16
在线时间
28 小时
发表于 2020-2-26 10:29:45 | 显示全部楼层
谢谢你的资料,但我是个新手,看的一脸懵,我想问,这个做门禁,是如何一个射频模块,多张卡能开门的,
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2060
金钱
2060
注册时间
2020-2-16
在线时间
34 小时
发表于 2020-3-7 13:11:14 | 显示全部楼层
非常感谢,很有帮助
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-6-28
在线时间
7 小时
发表于 2020-3-12 20:54:14 | 显示全部楼层
非常感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-19 02:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表