RC522 射频读卡器模块(MINI型)

RC522 射频读卡器模块(MINI型)一、硬件:二、[主芯片介绍]MFRC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表

大家好,又见面了,我是你们的朋友全栈君。

一、硬件:

二、[主芯片介绍]
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,0×01};
    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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154561.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • arthas 案例: 动态更新应用Logger Level

    来源: case-ognl-update-logger-level案例: 动态更新应用Logger Level在这个案例里,动态修改应用的Logger Level。查找UserController的ClassLoadersc -d com.example.demo.arthas.user.UserController | grep classLoaderHash$ sc -d com.example.demo.arthas.user.UserController | grep classLo

    2022年3月1日
    42
  • osi七层模型各层功能简述(简述osi七层模型各层功能)

    读完本篇文章将会了解以下问题1.OSI的基本概念及原则2.OSI七层模型各层功能概述3.OSI七层模型举例4.OSI七层模型总结—————————————————————————————————————————…

    2022年4月10日
    64
  • jdk 8 stream_stream流是什么

    jdk 8 stream_stream流是什么Java8新特性:Stream流详解本文章转载自头条网,只是觉得好用很详细,所以自己收集做下笔记,不做任何商业用途,不收任何费用,不喜勿喷。本文是转载,希望不要涉及到文章版权,只是自己做笔记。_________这个是最重要的。致敬头条@程序猿的内心独白1.Stream初体验我们先来看看Java里面是怎么定义Stream的:Asequenceofele…

    2022年10月6日
    2
  • 不止一个背包的背包问题_超级背包怎么使用方法

    不止一个背包的背包问题_超级背包怎么使用方法有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N

    2022年8月9日
    6
  • Kali 2.0 使用 Reaver 的注意事项[通俗易懂]

    Kali 2.0 使用 Reaver 的注意事项[通俗易懂]1、刚一开始使用这条命令airmon-ngstartwlan0就可以开始了,需要注意的是,在Kali2.0里开启的不再是mon0了,而是wlan0mon,所以不要和Kali1.X的版本代码混淆2、Kali1.X的命令无效在Kali2.0中必须自己手动开启网卡的监听模式,所以在执行完上面之后,需要自己手动开启监听模式ifconfigwlan0mondowniwconfig

    2022年5月9日
    155
  • [LeetCode] Insertion Sort List 链表插入排序「建议收藏」

    [LeetCode] Insertion Sort List 链表插入排序

    2022年3月12日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号