首页资源分类嵌入式处理器51内核 > RC522学习计划

RC522学习计划

已有 445025个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:RC522

    分    享:

    文档简介

    这是RC522学习资料。。。。。。。。。。。。

    文档预览

    RC522学习计划(V1.0) 时间:2013年3月12号 18:22 Step1:了解RC522的接口(SPI) 开始:18:28 RCC的接口与配置模式: RC522的SPI总线接口有其自身的时序要求。它只能工作于从模式,最高传输速率为 10 Mbps,数据与时钟相位关系满足“空闲态时钟为低电平,在时钟上升沿同步接收和发送数据,在下降沿数据转换”的约束关系。 本文中配置 STM32工作于SPI主模式下,时钟小于10Mbps,接收和发送数据都在时钟上升沿发生。 对于SPI接口,RC522的相关引脚必须按照图2所示的连接关系配置。 除了通用的4条SPI信号线(时钟线SCK、输入数据线MOSI、输出数据线MOSO和选通线NSS)以外,RC522要求额外的2个引脚I2C和 EA分别固定接低电平和高电平。这2个引脚不参与SPI总线传输,只起设定RC522数字界面采用SPI接口的作用。另外,片选信号必须保证在写入数据流期问为低电平,而在无数据流写入时则为高电平, 能一直将NSS置为低电平。 Step2:了解RC522的接收和发送数据的流程(工作过程) 相对于PHILIPS公司生产的其他14443基站芯片(如RC500、RC530等),RC522简化了内部系统结构,去掉了片内E2PROM。从而大大缩减了芯片命令集。另外,对载波调制电路,发送电路和解调、解码电路的控制也相应简化,去掉了校准接收电路I时钟、Q时钟、校准发送与接收时钟相位等繁琐的操作。一般而言,单片机与RC522的通信流程如图3所示。 工作过程: 对卡的操作分成四步:寻卡→防冲突→选卡→读/写卡; MFRC522发送与接收卡数据暂存于FIFO中; (1) 寻卡 向FIFO中写入PICC_REQIDL命令,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,此时若有卡在天线作用范围内,将识别命令,并返回卡类型; 卡类型(TagType): 0x4400 = Mifare_UltraLight 0x0400 = Mifare_One(S50) 0x0200 = Mifare_One(S70) 0x0800 = Mifare_Pro(X) 0x4403 = Mifare_DESFire 关于下面两条命令的区别: 第一条命令读取完卡后还会再次读取; 第二条命令读取完卡后会等待卡离开开线作用范围,直到再次进入。 (2) 防冲突 向FIFO中写入PICC_ANTICOLL+0x20,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,卡返回卡序列号(共5字节,第5字节是卡序列号校验码); 由于是非接触式的,同一时间天线作用范围内可能不只一张卡时,即有多于一张的MIFARE 1卡发回了卡序列号应答,则发生了冲突。此时,由于每张卡的卡序列号各不相同,MCM接收到的信息(即卡序列号)至少有1位既是0又是1(即该位的前、后半部都有副载波调制),MCM找到第1个冲突位将其置1(排除该位为0的卡),然后查第2个,依次排除,最后不再有冲突的SN即为被选中的卡。 (3) 选卡 向FIFO中写入PICC_SElECTTAG+0x70+卡序列号,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去,卡返回卡容量(对于MIFARE 1卡来说,可能为88H或08H); (4) 对卡EEPROM读写之前要进行认证 status = MFRC522_Auth(PICC_AUTHENT1A, blockAddr, sectorKeyA[blockAddr/4], serNum); //认证 向FIFO中写入PICC_AUTHENT1A/PICC_AUTHENT1B+块地址+扇区密码+卡序列号,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去, MIFARE 1 卡的密码认证方式: 三次相互认证的令牌原理框图 (A) 环:由MIFARE 1卡片向读写器发送一个随机数据RB。 (B) 环:由读写器收到RB后向MIFARE 1卡片发送一个令牌数据TOKEN AB,其中包含了用读写器中存放的密码加密后的RB及读写器发出的一个随机数据RA。 (C) 环:MIFARE 1卡片收到 TOKEN AB 后,用卡中的密码对TOKEN AB的加密的部分进行解密得到RB',并校验第一次由(A)环中MIFARE 1卡片发出去的随机数RB是否与(B)环中接收到的TOKEN AB中的RB'相一致;若读写器与卡中的密码及加密/解密算法一致,将会有RB=RB',校验正确,否则将无法通过校验。 (D) 环:如果(C)环校验是正确的,则MIFARE 1卡片用卡中存放的密码对RA加密后发送令牌TOKEN BA给读写器。 (E) 环:读写器收到令牌TOKEN BA后,用读写器中存放的密码对令牌TOKEN BA中的RA(随机数)进行解密得到RA';并校验第一次由(B)环中读写器发出去的随机数RA是否与(D)环中接收到的TOKEN BA中的RA' 相一致;同样,若读写器与卡中的密码及加密/解密算法一致,将会有RA=RA',校验正确,否则将无法通过校验。 如果上述的每一个环都为“真”,且都能正确通过验证,则整个的认证过程将成功。读写器将允许对刚刚认证通过的卡片上的这个扇区进入下一步的操作(读/写等操作)。 (5) 写数据 向FIFO中写入PICC_WRITE+块地址,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去。 要注意写块3数据,因为块3包含了所在扇区在密钥及访问条件,如果操作不当,将导致扇区无法正常使用。 (6) 读数据 向FIFO中写入PICC_READ+块地址,通过PCD_TRANSCEIVE命令将FIFO中数据通过天线发送出去。 Step3:参考例程,改写程序(例程) Step4:先在STM32MINi上运行 Step5:然后移植到AVRmega16 Step6:优化代码,添加注释,编写技术文档

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。