RC522 射頻讀卡器模塊(MINI型)


一、硬件:

二、[主芯片介紹]
MF RC522是應用於13.56MHz非接觸式通信中高集成度的讀寫卡芯片,是NXP公司針對“三表”應用推出的一款低電壓、低成本、體積小的非接觸式讀寫卡芯片,是智能儀表和便攜式手持設備研發的較好選擇。 MF RC522利用了先進的調制和解調概念,完全集成了在13.56MHz下所有類型的被動非接觸式通信方式和協議。支持14443A兼容應答器信號。數字部分處理ISO14443A幀和錯誤檢測。此外,還支持快速CRYPTO1加密算法,用語驗證MIFARE系列產品。MFRC522支持MIFARE系列更高速的非接觸式通信,雙向數據傳輸速率高達424kbit/s。 作為13.56MHz高集成度讀寫卡系列芯片家族的新成員,MF RC522與MF RC500和MF RC530有不少相似之處,同時也具備許多特點和差異。它與主機間通信采用連線較少的串行通信,且可根據不同的用戶需求,選取SPI、IIC或串行UART模式之一,有利於減少連線,縮小PCB板體積,降低成本。


三、[WMFRC522模塊介紹]
WMFRC522模塊采用Philips MFRC522原裝芯片設計讀卡電路,使用方便,成本低廉,適用於設備開發、讀卡器開發等高級應用的用戶、需要進行射頻卡終端設計/生產的用戶。本模塊可直接裝入各種讀卡器模具。模塊采用電壓為3.3V,通過SPI接口簡單的幾條線就可以直接與用戶任何CPU主板相連接通信,可以保證模塊穩定可靠的工作、讀卡距離遠;
注:模塊接口座可以按客戶需求更改:

目前提供UART TTL、RX232和RS485三種接口

1、RC522接口芯片電路

1

 

2、通信電路

image

 

 

3、PCB效果

image

 

4、焊接完后的效果圖:

PCB

PCB6

 

PCB2

 PCB3

PCB4

PCB5

 

4、固件:

/********************************************************************************
  * @Brief  : 測試522讀寫M1卡, 完成操作后PC6的LED閃爍一下,並打印到USART2上
  * @Param  : None
  * @Retval : None
  */
u8 MFRC522Test(void)
{
    u8 i;
    static u8 WriteFlag;
    u8 CardType[2], CardSN[4];
                          //0   1    2    3    4    5    6    7    8    9    10   11  12   13   14    15
    u8 DefaultData[16] = {0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x01,0xFE,0x01,0xFE};
    u8 DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 
    u8 DataD[4]  = {0,0,0,0x01};
    u8 BlockData[16];

  LED0_OFF();
  BEEP_OFF();
    if(MI_OK != PcdRequest(PICC_REQALL, CardType))   //掃描卡
    {
        printf("IC Card Type: %x\n", *((u16 *)CardType));
        return 1;
    }
    if(MI_OK != PcdAnticoll(CardSN))                 //防沖撞
    {
        printf(" IC Card SN: %x\n", *((u32 *)CardSN));
        return 2;
    }

    if(MI_OK != PcdSelect(CardSN))                    //選定卡片
        return 3;
     if(MI_OK != PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, CardSN))//驗證卡片密碼
    return 4;   
    if(MI_OK != PcdRead(1, BlockData))               //讀塊
    return 5;
    for(i = 0; i < 4; i++)  
        printf("%x", BlockData[i]);
    if(!WriteFlag)
    {
        if(MI_OK != PcdWrite(1, DefaultData))         //寫塊
         return 6;
        WriteFlag = 1;
        printf("First Write Value\n");
    }   
    if(MI_OK != PcdValue(PICC_DECREMENT, 1, DataD))  //扣款
    return 7;   
    if(MI_OK != PcdRead(1, BlockData))               //讀塊
    return 8;
    printf("IC Card Type: %x\n", *((u16 *)CardType));
    printf(" IC Card SN: %x\n", *((u32 *)CardSN));
    printf("Select Card!\n");
    printf("Check Pass Word Ok!\n");
    printf("Data Value decrease!\n");

    for(i = 0; i < 4; i++)  
        printf("%x", BlockData[i]);
    printf("\n");
    LED0_ON();                   
    BEEP_ON();                   

    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM