zoukankan      html  css  js  c++  java
  • 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 ", *((u16 *)CardType));
            return 1;
        }
        if(MI_OK != PcdAnticoll(CardSN))                 //防冲撞
        {
            printf(" IC Card SN: %x ", *((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 ");
        }   
        if(MI_OK != PcdValue(PICC_DECREMENT, 1, DataD))  //扣款
        return 7;   
        if(MI_OK != PcdRead(1, BlockData))               //读块
        return 8;
        printf("IC Card Type: %x ", *((u16 *)CardType));
        printf(" IC Card SN: %x ", *((u32 *)CardSN));
        printf("Select Card! ");
        printf("Check Pass Word Ok! ");
        printf("Data Value decrease! ");

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

        return 0;
    }

  • 相关阅读:
    Redisson 实现分布式锁原理分析
    redis如何避免释放锁时把别人的锁释放掉
    记一次org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only异常
    1.编译chromium
    Win10更新后wireshark无法获取网络接口
    ASIO库使用注意事项
    使用gdb添加断点的几种方式
    select、poll、epoll的比较
    CMakeLists.txt编写常用命令
    Ubuntu下使用linuxdeployqt打包Qt程序
  • 原文地址:https://www.cnblogs.com/worldsing/p/3248924.html
Copyright © 2011-2022 走看看