hjl240 发表于 2014-2-11 15:21

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>

maylove 发表于 2014-2-11 15:30

{:1_124:}不错,谢谢分享!

眼大5子 发表于 2014-2-13 13:05

学习一种模块,有很多种方法,其中一种方式是先去弄明白怎么使用这个模块,亲自体验了这个模块的大体功能之后,再回过头来了解该模块的工作原理,再去深层次的研究该模块。我非常赞同LZ的这个观点,与其说是学电子还不如说是玩电子。

kxz 发表于 2014-2-14 16:18

学习一种模块,有很多种方法:loveliness:

youluo 发表于 2014-2-15 19:43

这个必须顶。不错

shanyx2010 发表于 2014-2-16 11:55

:):):)不错

yushan 发表于 2014-2-20 12:33

其实实现这些不难还有密钥的控制 计算 等需要深入

Hugo801122 发表于 2014-2-21 10:41

RFID在射频应用上用得很广,学习了!

jxsjl168 发表于 2014-4-7 19:55

看看,很多不会呀

jingfei520 发表于 2024-4-27 02:40

<p>不错的文章</p><br/>
页: [1]
查看完整版本: RFID-RC522速成教程(基于msp430单片机的程序讲解)