射频卡的使用

60 篇文章 12 订阅

操作程序主要包括:初始化函数,寻卡,防冲突,选卡,转换密钥,传送密钥,验证密钥简称三轮认证,关闭打开天线,钱包冲值等函数。

RFID(radio frequency identification)是利用无线电波进行通信的一种自动识别技术。基本原理是通过读头和黏附在物体上的标签之间的电磁耦合或电感耦合进行数据通信,以达到对标签物品的自动识别。自动识别是指应用一定的识别装置,通过被识别物品和识别装置之间的接近活动,自动获取被识别物品的相关信息,并提供给后台计算机处理系统来完成相关后续处理的一种技术。

NFC是Near Field Communication缩写,即近距离无线通讯技术。由飞利浦和索尼公司共同开发的NFC是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC和智能控件工具间进行近距离无线通信。NFC提供了一种简单、触控式的解决方案,可以让消费者简单直观地交换信息、访问内容与服务。

NFC从本质上与RFID没有太大区别,都是基于地理位置相近的两个物体之间的信号传输。

复位RC522--关闭天线--开启天线--设置RC632的工作方式 --

1、C522共有3中通信方式,分别是UART、I2C和SPI,测试代码用的SPI

SDA(数据接口)
SCK(时钟接口)
MOSI(SPI 接口主出从入)
MISO(SPI 接口主入从出)
NC(悬空)
GND(地)
RST(复位信号)
3.3V(电源)

通讯步骤

寻卡。寻卡成功,返回卡的类型。
选卡。选卡成功,返回卡的序列号。
认证。
增减值。该步骤在将IC卡用做电子钱包时才会使用,比如门禁卡就不会使用。

 

 

 

 

RC522 接口STM32F429 接口                      
SDA(数据接口)P2.7
SCK(时钟接口)P2.6
MOSI(SPI 接口主出从入)P2.5
MISO(SPI 接口主入从出)P2.1
NC(悬空)
GND(地)GND
RST(复位信号)P2.3
3.3V(电源)3.3V

寄存器定义

// PAGE 0 // 命令和状态
#define RFU00 0x00
#define CommandReg 0x01 // 启动和停止命令的执行
#define ComIEnReg 0x02 // 中断请求传递的使能和禁能控制位
#define DivlEnReg 0x03 // 中断请求传递的使能和禁能控制位
#define ComIrqReg 0x04 // 包含中断请求标志
#define DivIrqReg 0x05 // 包含中断请求标志
#define ErrorReg 0x06 // 错误标志,指示执行的上个命令的错误状态
#define Status1Reg 0x07 // 包含通信的状态标志
#define Status2Reg 0x08 // 包含接收器和发送器的状态标志
#define FIFODataReg 0x09 // 64字节FIFO缓冲区的输入和输出
#define FIFOLevelReg 0x0A // 指示FIFO中存储的字节数
#define WaterLevelReg 0x0B // 定义FIFO下溢和上溢报警的FIFO深度
#define ControlReg 0x0C // 不同的控制寄存器
#define BitFramingReg 0x0D // 面向位的帧的调节
#define CollReg 0x0E // RF接口上检测到的第一个位冲突的位的位置
#define RFU0F 0x0F
// PAGE 1
#define RFU10 0x10
#define ModeReg 0x11 // 定义发送和接收的常用模式
#define TxModeReg 0x12 // 定义发送过程的数据传输速率
#define RxModeReg 0x13 // 定义接收过程中的数据传输速率
#define TxControlReg 0x14 // 控制天线驱动器管脚TX1和TX2的逻辑特性
#define TxAutoReg 0x15 // 控制天线驱动器的设置
#define TxSelReg 0x16 // 选择天线驱动器的内部源
#define RxSelReg 0x17 // 选择内部的接收器设置
#define RxThresholdReg 0x18 // 选择位译码器的阈值
#define DemodReg 0x19 // 定义解调器的设置
#define RFU1A 0x1A
#define RFU1B 0x1B
#define MifareReg 0x1C // 控制ISO 14443/MIFARE模式中106kbit/s的通信
#define RFU1D 0x1D
#define RFU1E 0x1E
#define SerialSpeedReg 0x1F // 选择串行UART接口的速率
// PAGE 2
#define RFU20 0x20
#define CRCResultRegM 0x21 // 显示CRC计算的实际MSB和LSB值
#define CRCResultRegL 0x22
#define RFU23 0x23
#define ModWidthReg 0x24 // 控制ModWidth的设置
#define RFU25 0x25
#define RFCfgReg 0x26 // 配置接收器增益
#define GsNReg 0x27 // 选择天线驱动器管脚TX1和TX2的调制电导
#define CWGsCfgReg 0x28 // 选择天线驱动器管脚TX1和TX2的调制电导
#define ModGsCfgReg 0x29 // 选择天线驱动器管脚TX1和TX2的调制电导
#define TModeReg 0x2A // 定义内部定时器的设置
#define TPrescalerReg 0x2B // 定义内部定时器的设置
#define TReloadRegH 0x2C // 描述16位长的定时器重装值
#define TReloadRegL 0x2D // 描述16位长的定时器重装值
#define TCounterValueRegH 0x2E // 显示16位长的实际定时器值
#define TCounterValueRegL 0x2F // 显示16位长的实际定时器值
// PAGE 3
#define RFU30 0x30
#define TestSel1Reg 0x31 // 常用测试信号的配置
#define TestSel2Reg 0x32 // 常用测试信号的配置和PRBS控制
#define TestPinEnReg 0x33 // 输出驱动器的使能管脚(注:仅用于串行接口)
#define TestPinValueReg 0x34 // 定义D1-D7用作I/O总线时的值
#define TestBusReg 0x35 // 显示内部测试总线的状态
#define AutoTestReg 0x36 // 控制数字自测试
#define VersionReg 0x37 // 显示版本
#define AnalogTestReg 0x38 // 控制管脚AUX1和AUX2
#define TestDAC1Reg 0x39 // 定义TestDAC1的测试值
#define TestDAC2Reg 0x3A // 定义TestDAC2的测试值
#define TestADCReg 0x3B // 显示ADC I和Q通道的实际值#define RFU3C 0x3C
#define RFU3D 0x3D
#define RFU3E 0x3E
#define RFU3F 0x3F

 

S50非接触式IC卡性能简介(M1)
一、    主要指标
    容量为8K位EEPROM
    分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
    每个扇区有独立的一组密码及访问控制
    每张卡有唯一序列号,为32位
    具有防冲突机制,支持多卡操作
    无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
    数据保存期为10年,可改写10万次,读无限次
    工作温度:-20℃~50℃(湿度为90%)
    工作频率:13.56MHZ
    通信速率:106 KBPS
    读写距离:10 cm以内(与读写器有关)

三、    工作原理
卡片的电气部分只由一个天线和ASIC组成。
天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。
ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个 8K位EEPROM组成。
工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。


四、    M1射频卡与读写器的通讯

复位应答(Answer to request)
M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。

防冲突机制 (Anticollision Loop)
当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。

选择卡片(Select Tag)
选择被选中的卡的序列号,并同时返回卡的容量代码。

三次互相确认(3 Pass Authentication)
选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)

对数据块的操作 
读 (Read):读一个块;
写 (Write):写一个块;
加(Increment):对数值块进行加值;
减(Decrement):对数值块进行减值;
存储(Restore):将块中的内容存到数据寄存器中;
传输(Transfer):将数据寄存器中的内容写入块中;
中止(Halt):将卡置于暂停工作状态;

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: M1射频卡是一种智能卡片,可以用于存储和传输数据,并在安全认证、身份验证等领域发挥作用。串口编程是一种通过串口与其他设备进行数据通信的编程技术。 在M1射频卡的串口编程中,首先需要了解M1射频卡的串口通信协议。这个协议规定了如何通过串口与M1射频卡进行通信、传输数据和控制操作。常见的M1射频卡串口协议包括ISO14443、ISO15693等。 其次,要进行M1射频卡的串口编程,需要选择合适的编程语言和开发工具。常用的编程语言包括C、C++、Java等,而常见的开发工具有Keil、IAR、Eclipse等。开发工具可以提供M1射频卡串口通信的相关库函数和示例代码,方便开发人员进行编程。 在进行M1射频卡串口编程时,开发人员可以通过串口发送指令给M1射频卡,控制其进行读写操作。通过读取M1射频卡返回的数据,可以获取卡片存储的信息,并进行相应的处理。在编程过程中,需要注意串口的波特率、数据位、停止位等参数的设置,以确保与M1射频卡的通信正常进行。 总结来说,M1射频卡串口编程是一种通过串口与M1射频卡进行数据通信和控制的编程技术。在进行编程时,需要了解M1射频卡的串口通信协议,选择适合的编程语言和开发工具,并通过串口发送指令与卡片进行通信。这样可以实现对M1射频卡的读写操作,进而使用其提供的数据和功能。 ### 回答2: M1射频卡是一种近场通讯技术卡片,可以用于进行非接触式的数据交换。它使用13.56MHz的高频信号进行通信,内部集成了射频芯片和存储芯片,具有较高的安全性和稳定性。 M1射频卡与串口编程结合可以实现与计算机之间的数据交互。串口是一种数据通信接口,可以通过串口与M1射频卡进行通信。串口编程是通过计算机的串口接口发送和接收数据,实现与外部设备通信的一种编程方式。 在M1射频卡与串口编程中,首先需要选择合适的串口通信协议,如UART、RS232等。然后,通过串口通信协议将数据发送给M1射频卡,或者从M1射频卡接收数据。 对于发送数据,可以使用特定的指令或命令来控制M1射频卡的读写操作。通过串口发送指令给M1射频卡,可以实现读取卡片中的数据、写入数据到卡片等操作。 对于接收数据,可以通过串口接收M1射频卡发送的数据,并进行处理或显示。通过串口接收M1射频卡的响应数据,可以获取卡片的状态信息或读取到卡片中存储的数据。 需要注意的是,M1射频卡与串口通信的数据格式和协议需要一致,以确保正常的数据交流。在进行M1射频卡与串口编程时,需要根据具体应用场景和需求,选择合适的编程语言和串口通信库进行开发。 总结起来,M1射频卡与串口编程可以实现与计算机之间的数据交互,通过串口发送和接收指令实现读写卡片的操作。这种编程方式可以用于门禁、车辆管理、人员考勤等多种应用领域。 ### 回答3: M1射频卡是一种常见的射频卡片,广泛应用于门禁系统、公交卡等领域。而串口编程是指通过串口与计算机或其他设备进行数据交互的一种编程方法。 使用M1射频卡进行串口编程,首先需要通过串口连接M1射频卡与计算机或其他设备。通过串口,计算机可以向M1射频卡发送指令,读取或写入卡片的数据,实现与卡片的数据交互。 在进行M1射频卡串口编程时,可以借助一些开发工具或编程语言进行操作。例如,可以使用C语言、Java等编程语言编写相应的代码,通过调用串口接口函数来实现与M1射频卡的通信。 在编程过程中,需要了解M1射频卡的通信协议和具体指令集。不同厂家的M1射频卡有可能存在一些差异,因此需要参考相关的技术文档进行开发。一般而言,通过串口发送的指令可以包括读取卡片信息、写入数据、卡片认证等操作。 通过M1射频卡串口编程,可以实现对卡片中存储的数据进行读取和写入,以及对卡片进行认证和控制。这对于门禁系统的权限管理、公交卡的刷卡支付等场景都十分重要。 总而言之,M1射频卡串口编程是一种通过串口与M1射频卡进行数据交互的编程方法,可以通过指令来控制卡片的读写和操作,广泛应用于各种射频卡相关的应用领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值