加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于msp430的射頻RC522讀卡器參考例程+RC522教程

2015/12/11
14
服務支持:
技術交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術大咖們分享疑惑和經驗、收獲成長和認同、領取優(yōu)惠和紅包等。

虛擬商品不可退

當前內容為數字版權作品,購買后不支持退換且無法轉移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
相關方案
  • 方案介紹
  • 相關文件
  • 相關推薦
  • 電子產業(yè)圖譜
申請入駐 產業(yè)圖譜

學習一種模塊,有很多種方法,其中一種方式是先去弄明白怎么使用這個模塊,親自體驗了這個模塊的大體功能之后,再回過頭來了解該模塊的工作原理,再去深層次的研究該模塊。

在這里,著重介紹怎么用程序實現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[0]);

tochar(Temp[1]);//輸出卡類型

}

其中0x52代表尋天線區(qū)內全部卡。

卡類型(TagType):

0x4400 =Mifare_UltraLight

0x0400 =Mifare_One(S50)

0x0200 =Mifare_One(S70)

0x0800 =Mifare_Pro(X)

0x4403 =Mifare_DESFire

比如,當Temp[0]=04,Temp[1]=00時,卡類型為S50。

第二步:防沖突。

status2= PcdAnticoll(UID); //防沖撞處理,輸出卡片序列號,4字節(jié)

if(status2==MI_OK)

{

PutString0("Card Id is:");

tochar(UID[0]);

tochar(UID[1]);

tochar(UID[2]);

tochar(UID[3]); //輸出卡片序列號

}

第三步:選卡。

status2= PcdSelect(UID); //選擇卡片,輸入卡片序列號,4字節(jié)

第四步:在讀寫卡之前需要先進行認證。

status2= PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID);

其中四個參數分別代表:驗證A密鑰+塊地址+扇區(qū)密碼+卡序列號。

然后進行寫操作:

status2=PcdWrite(1,writeData);//寫數據,將數組writeData中的數寫入到卡中

其中第一個參數 1 代表寫入的地址為塊1.

或者進行讀卡操作:

status2 = PcdRead(1, str);//讀卡

其中第一個參數 1 代表讀的地址為塊1.

讀卡后得到的數據存放于數組str中。

至此,已將RC522的基本操作介紹了一遍,明白了以上這些函數,就可以對卡進行一些初步的操作,可以再結合程序研究一下。

如果需要進一步了解RC522的工作原理,可以到網上搜資料,網上有很多的。

相關參考設計資料鏈接:https://www.cirmall.com/circuit/2796

  • MSP430F149讀卡號參考例程.rar
    描述:RC522讀卡器參考例程
  • RC522速成教程.pdf
    描述:RC522速成教程

相關推薦

電子產業(yè)圖譜