th1993 发表于 2015-10-30 10:11:18

RC523可以读A卡读不了身份证序列号

使用523读取TYPEA卡成功,读身份证时寻卡都没有成功,网上找的资料说先发05 00 00,收到回应后发送0×1d 0×00 0×00 0×00 0×00 0×00 0×08 0×01 0×08 ,最后发送0×00 0×36 0×00 0×00 0×08我是这样做的,但是第一步就没有成功,所以想大家请教。

unsigned char RequestB={0X05,0X00,0X00,0x71,0xFF};
unsigned char Attrib={0X1d,0X00,0X00,0X00,0X00,0X00,0X08,0X01,0X08,0xF3,0x10};
unsigned char ReadUID={0x00,0x36,0x00,0x00,0x08,0x57,0x44};

寄存器配置如下:
    ClearBitMask(Status2Reg,0x08);
    WriteRawRC(TxASKReg, 0); // Force 100ASK = 0
    WriteRawRC(ControlReg,0x10)            ;
    WriteRawRC(TxModeReg,0x03)            ;
    WriteRawRC(RxModeReg,0x0B)            ;
    WriteRawRC(TypeBReg,0x03)            ;
    WriteRawRC(DemodReg,0x4D)            ;
    WriteRawRC(GsNReg,0xff)            ; // TX输出电导设置
    WriteRawRC(CWGsPReg,0x3f)            ;
    WriteRawRC(ModGsPgReg,0x18)          ;// 调制指数设置RegModGsp,, TYPEB ModConductance 0x1A
    WriteRawRC(RxThresholdReg, 0x4D);// 高四位->最小信号强度,低三位->冲突最小信号
    WriteRawRC(ModWidthReg,0x68)            ;
    ClearBitMask(RxSelReg,0x3F);                                     // TR0
    SetBitMask(RxSelReg, 0x08);
    ClearBitMask(TxModeReg, 0x80);                                 // 无CRC,无奇偶校验
    ClearBitMask(RxModeReg, 0x80);
    ClearBitMask(Status2Reg, 0x08);
寻卡函数:
char PcdRequestB(unsigned char *ucComMF522Buf)
{
char status                                        ;
unsigned intunLen                              ;

ClearBitMask(Status2Reg,0x08)                      ;
WriteRawRC(BitFramingReg,0x07)                     ;
SetBitMask(TxControlReg,0x03)                      ;


ucComMF522Buf =0x05                     ;
ucComMF522Buf =0;
ucComMF522Buf =0;
ucComMF522Buf =0x71;
ucComMF522Buf =0xFF;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,5,ucComMF522Buf,&unLen       );
return status                                    ;
}
选卡函数:
char PcdSelectB(unsigned char *pSnr)
{
    char status;
    unsigned char i;
    unsigned intunLen;
    unsigned char ucComMF522Buf;

    for (i=0; i<11; i++)
    {
            ucComMF522Buf = *(pSnr+i);
    }
    status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,11,ucComMF522Buf,&unLen);

    return status;
}
获得UID函数:
char PcdReadUID(unsigned char *pSnr,unsigned char *pTagType)
{
    char status;
    unsigned char i;
    unsigned intunLen;
    unsigned char ucComMF522Buf;

    for (i=0; i<7; i++)
    {
            ucComMF522Buf = *(pSnr+i);
    }
    status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,7,ucComMF522Buf,&unLen);
   
    if ((status == MI_OK) )
    {   
       for (i=0; i<10; i++)
      {
          *(pTagType+i)= ucComMF522Buf;
      }
      status = MI_OK;
    }
    else
    {   status = MI_ERR;    }

    return status;
}

34480016 发表于 2015-10-30 23:18:31

帮   你 u p

th1993 发表于 2015-10-31 09:47:43

34480016 发表于 2015-10-30 23:18
帮   你 u p

非常谢谢!

th1993 发表于 2015-10-31 10:33:52

我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff)              ; // TX输出电导设置
WriteRawRC(CWGsPReg,0x3f)            ;
WriteRawRC(ModGsPgReg,0x18)          ;// 调制指数设置RegModGsp,, TYPEB ModConductance 0x1A
第一个我改为0XFF和0xf8没有什么影响,第二个没有改变
第三个我试了很多,从0x3f到0x00,小于0x08时就可以识别身份证了,
具体原因是每个人设计的天线不一样,所以要设置不同的参数,别人的只是参考而已,对于自己的电路还是要多调!

34480016 发表于 2015-10-31 16:36:25

th1993 发表于 2015-10-31 10:33
我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff)              ; // T ...

正好弄这个,感谢楼主分享的经验。有不明白再请教。

sml009 发表于 2015-11-14 13:34:40

学习学习

XUEPENGBIN 发表于 2015-12-7 17:11:23

th1993 发表于 2015-10-31 10:33
我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff)              ; // T ...

前边的寄存器定义哪里有啊。。

LearningASM 发表于 2015-12-7 17:46:46

记得好像身份证属于B卡

th1993 发表于 2015-12-9 11:57:36

XUEPENGBIN 发表于 2015-12-7 17:11
前边的寄存器定义哪里有啊。。

看数据手册啊

XUEPENGBIN 发表于 2015-10-30 10:11:19

hankls0007 发表于 2015-12-17 13:43:34

二代身份证是Type B卡,RC523芯片支持不,查一下{:smile:}

th1993 发表于 2015-12-17 22:46:40

hankls0007 发表于 2015-12-17 13:43
二代身份证是Type B卡,RC523芯片支持不,查一下

支持,522不支持

tonyvg 发表于 2015-12-25 10:56:52

感谢10楼分享的523的资料。不过身份证一直没做挂失处理我觉的很奇怪

runapp 发表于 2015-12-25 22:31:48

问一下lz,那个writerawrc函数的库是从哪搞的?

th1993 发表于 2015-12-27 12:14:50

runapp 发表于 2015-12-25 22:31
问一下lz,那个writerawrc函数的库是从哪搞的?

直接522的就可以用!

runapp 发表于 2015-12-27 22:49:27

th1993 发表于 2015-12-27 12:14
直接522的就可以用!

522的又是哪搞的……?

th1993 发表于 2015-12-29 16:46:13

runapp 发表于 2015-12-27 22:49
522的又是哪搞的……?

网上一大堆{:sweat:}

runapp 发表于 2015-12-29 17:19:14

th1993 发表于 2015-12-29 16:46
网上一大堆

求关键字!先行谢过!

th1993 发表于 2015-12-29 17:27:03

RC522.......................

cvi670 发表于 2015-12-29 17:48:08

厉害呀打算用在智能家居上啊

china97wan 发表于 2016-6-14 11:37:06

问下这些提到的ATQB命令在哪里有介绍?还有身份证只能读到UID嘛

cqsrmxxzyx 发表于 2016-6-22 14:13:52

china97wan 发表于 2016-6-14 11:37
问下这些提到的ATQB命令在哪里有介绍?还有身份证只能读到UID嘛



看这个标准。

zjk 发表于 2017-4-24 17:12:56

楼主还有RC523的程序代码哈?网上基本找不到

th1993 发表于 2017-4-25 10:46:08

和522一样就是几个寄存器不一样啊

gbzwh_123 发表于 2022-4-10 12:50:45

学习学习

gbzwh_123 发表于 2022-4-10 12:51:32

学习学习
页: [1]
查看完整版本: RC523可以读A卡读不了身份证序列号