RFID-RC522速成教程(基于msp430单片机的程序讲解)
<div class='showpostmsg'>学习一种模块,有很多种方法,其中一种方式是先去弄明白怎么使用这个模块,亲自体验了这个模块的大体功能之后,再回过头来了解该模块的工作原理,再去深层次的研究该模块。在这里,着重介绍怎么用程序实现RC522模块的一些功能,而RC522的结构,功能等便不再介绍。这个程序的讲解是基于MSP430F149/169单片机的。 模块使用的是SPI接口,与单片机接口如下: #define RF_LPCTL BIT3// P2.3 射频卡休眠控制------RST #define RF_SS BIT7// p2.7 射频卡从机选择(SS)---SDA#define RF_SCLK BIT6// p2.6 射频卡数据时钟输出(SCLK)#define RF_DATA_OUT BIT5// p2.5 射频卡数据输出(MOSI)#define RF_DATA_IN BIT1// p2.1 射频模块输入(MISO) 要想对模块内部的数据块进行读写,需要完成4个步骤:寻卡→防冲突→选卡→读/写卡;第一步:寻卡。 status2=PcdRequest(0x52,Temp);////寻卡 参数Temp为返回的卡类型if(status2== MI_OK){ tochar(Temp);tochar(Temp);//输出卡类型}其中0x52代表寻天线区内全部卡。卡类型(TagType):0x4400 =Mifare_UltraLight0x0400 =Mifare_One(S50)0x0200 =Mifare_One(S70)0x0800 =Mifare_Pro(X)0x4403 =Mifare_DESFire比如,当Temp=04,Temp=00时,卡类型为S50。 第二步:防冲突。 status2= PcdAnticoll(UID);//防冲撞处理,输出卡片序列号,4字节 if(status2==MI_OK) { PutString0("Card Id is:"); tochar(UID); tochar(UID); tochar(UID); tochar(UID); //输出卡片序列号}第三步:选卡。 status2= PcdSelect(UID); //选择卡片,输入卡片序列号,4字节第四步:在读写卡之前需要先进行认证。 status2= PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID);其中四个参数分别代表:验证A密钥+块地址+扇区密码+卡序列号。然后进行写操作:status2=PcdWrite(1,writeData);//写数据,将数组writeData中的数写入到卡中其中第一个参数1代表写入的地址为块1.或者进行读卡操作:status2 = PcdRead(1, str);//读卡其中第一个参数1代表读的地址为块1.读卡后得到的数据存放于数组str中。 至此,已将RC522的基本操作介绍了一遍,明白了以上这些函数,就可以对卡进行一些初步的操作,可以再结合程序研究一下。如果需要进一步了解RC522的工作原理,可以到网上搜资料,网上有很多的,也可以在下方留言,大家讨论讨论。hjl
</div><script> var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
}
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> {:1_124:}不错,谢谢分享! 学习一种模块,有很多种方法,其中一种方式是先去弄明白怎么使用这个模块,亲自体验了这个模块的大体功能之后,再回过头来了解该模块的工作原理,再去深层次的研究该模块。我非常赞同LZ的这个观点,与其说是学电子还不如说是玩电子。
学习一种模块,有很多种方法:loveliness: 这个必须顶。不错 :):):)不错 其实实现这些不难还有密钥的控制 计算 等需要深入 RFID在射频应用上用得很广,学习了! 看看,很多不会呀 <p>不错的文章</p><br/>
页:
[1]