andy93762 发表于 2018-4-17 11:04:07

有做过RC523芯片读取二代身份证卡号的朋友么?

本帖最后由 andy93762 于 2018-4-17 11:05 编辑

最近这个项目需要读取二代身份证卡号,一般用RC523或者FM17550芯片都可以实现,因为同时支持TYPEB和TYPEA协议。
TYPEA协议的IC卡很简单,一下子就调试通了,但是身份证就是死活没法识别出来,应该哪里没有配置好。第一步寻卡函数RCRequestTypeB就没法返回成功状态
有做过的朋友麻烦帮忙下,万分感谢。

初始化配置如下:
            ClearBitMask(Status2Reg, 0x08);
            WriteRawRC(ModeReg, 0x3F);                                       // For 0xFFFF crc
            WriteRawRC(TReloadRegL, 30);
            WriteRawRC(TReloadRegH, 0);
            WriteRawRC(TModeReg, 0x8D);
            WriteRawRC(TPrescalerReg, 0x3E);
            WriteRawRC(TxAutoReg, 0);      // Force 100ASK = 0
            WriteRawRC(GsNReg, 0xFa);   
            WriteRawRC(CWGsPReg, 0x3F);
            WriteRawRC(ModGsPReg, 0x2a);
            //WriteReg(ModGsPReg, 0x1A);
            WriteRawRC(TxModeReg, 0x83);      
            WriteRawRC(BitFramingReg, 0x00);
            WriteRawRC(AutoTestReg, 0x00);
            WriteRawRC(TypeBReg, 0xc0);
            WriteRawRC(ModWidthReg,0x68);
            WriteRawRC(DemodReg, 0x5D);
            WriteRawRC(RFCfgReg, 0x70);// 0x59 RegRxControl1//73,
            WriteRawRC(RxModeReg, 0x83);      
            WriteRawRC(RxThresholdReg, 0x65);//0x75);
            ClearBitMask(RxSelReg,0x3F);      // TR0
            SetBitMask(RxSelReg, 0x08);
            ClearBitMask(TxModeReg, 0x80);       // ?CRC
            ClearBitMask(RxModeReg, 0x80);
            ClearBitMask(Status2Reg, 0x08);      // MFCrypto1On =0
            PcdAntennaOn();


uint8_t RCRequestTypeB(void)//寻卡
{
    uint8_t status;
    unsigned int len;
    uint8_t buf = {0};
    buf = 0x05;
    buf = 0x00;
    buf = 0x00;
    buf = 0x71;                                                         
    buf = 0xFF;
    status = PcdComMF522(PCD_TRANSCEIVE, buf, 5, buf, &len);                  
    return status;
}

uint8_t RCATTRIBTypeB(u8 *PSN)
{
    uint8_t status;
    unsigned int len;
    uint8_t buf = {0};
    buf[ 0] = 0x1D;                                                             // 1d 00 00 00 00 00 08 01 08
    buf[ 1] = 0x00;                                                             // PUPI
    buf[ 2] = 0x00;
    buf[ 3] = 0x00;
    buf[ 4] = 0x00;
    buf[ 5] = 0x00;
    buf[ 6] = 0x08;
    buf[ 7] = 0x01;
    buf[ 8] = 0x08;
    buf[ 9] = 0xF3;                                                             // crc
    buf = 0x10;
    //RC_CalulateCRC(buf, 9, &buf);
    status = PcdComMF522(PCD_TRANSCEIVE, buf, 11, PSN, &len);               
    return status;
}

uint8_t RCGetUIDTypeB(u8 *pUID)
{
    uint8_t status;
    unsigned int len;
    uint8_t buf = {0};
    buf = 0x00;
    buf = 0x36;
    buf = 0x00;
    buf = 0x00;
    buf = 0x08;
    buf = 0x57;                                                            // crc
    buf = 0x44;
    //RC_CalulateCRC(buf, 5, &buf);
    status = PcdComMF522(PCD_TRANSCEIVE, buf, 7, buf, &len);                      // ??????????UID "....9000"
    if (status == 0)
    {
      //memcpy(pUID, buf, 10);
    }
    return status;
}

charRC522_ReadID_B(unsigned char *PSN) //读写二代身份证函数
{
   char i,status;
   status = RCRequestTypeB();
   if (status == MI_OK)
   {
         status = RCATTRIBTypeB(PSN);       
         if (status == MI_OK)
         {
               status = RCGetUIDTypeB(PSN);
               if (status == MI_OK)
               {
                           i++;
               }                                                       
         }
   }
   return status;
}


redworlf007 发表于 2018-4-17 18:54:39

读身份证的话,没有公安部那个蓝盒子,只能读出来身份证的UID号码吧?
我现在手里的RC632的模块,就只能读出来UID号码。

andy93762 发表于 2018-4-17 19:41:17

redworlf007 发表于 2018-4-17 18:54
读身份证的话,没有公安部那个蓝盒子,只能读出来身份证的UID号码吧?
我现在手里的RC632的模块,就只能读 ...

我只要能读出身份证的UID就可以了啊。你的RC632和RC523程序兼容么?

redworlf007 发表于 2018-4-18 16:51:59

andy93762 发表于 2018-4-17 19:41
我只要能读出身份证的UID就可以了啊。你的RC632和RC523程序兼容么?

我是买的模块,用别人的模块,我没自己搞。

skynet 发表于 2018-4-18 17:36:27

看看硬件有没有问题,特别是蛋疼的天线,还有谐振电容

throg 发表于 2018-4-18 21:36:59

天线要调试好,B卡没A卡好弄的。

eiglxl 发表于 2018-4-18 22:04:37

本帖最后由 eiglxl 于 2018-4-18 22:08 编辑

天线很关键,A卡能读的天线,B卡不一定能读。

andy93762 发表于 2018-4-19 12:05:52

throg 发表于 2018-4-18 21:36
天线要调试好,B卡没A卡好弄的。

用示波器可以调好天线么?

andy93762 发表于 2018-4-19 12:06:14

eiglxl 发表于 2018-4-18 22:04
天线很关键,A卡能读的天线,B卡不一定能读。

需要注意什么呢?

andy93762 发表于 2018-4-19 13:08:22

eiglxl 发表于 2018-4-18 22:04
天线很关键,A卡能读的天线,B卡不一定能读。

硬件可以一样的吧?主要软件设置不同的参数

eiglxl 发表于 2018-4-19 13:08:35

andy93762 发表于 2018-4-19 12:06
需要注意什么呢?

在A卡下天线的匹配要调到最佳状态,读的距离最远时(>6cm)再读B卡。

andy93762 发表于 2018-4-19 15:07:04

eiglxl 发表于 2018-4-19 13:08
在A卡下天线的匹配要调到最佳状态,读的距离最远时(>6cm)再读B卡。

要求这么高啊,那这个参数B卡能达到几米?

censtar 发表于 2018-4-19 15:14:16

andy93762 发表于 2018-4-19 15:07
要求这么高啊,那这个参数B卡能达到几米?

0.02米。{:titter:}

eiglxl 发表于 2018-4-19 15:56:38

andy93762 发表于 2018-4-19 15:07
要求这么高啊,那这个参数B卡能达到几米?

距离起码减半。

mysky 发表于 2018-4-19 16:13:44

印象中论坛里有人发过程序。

andy93762 发表于 2018-4-19 23:07:31

mysky 发表于 2018-4-19 16:13
印象中论坛里有人发过程序。

是的,但是别人的程序拿过来也用不了

hanbing4147 发表于 2018-4-19 23:53:42

andy93762 发表于 2018-4-19 12:05
用示波器可以调好天线么?

示波器不好调吧,有频谱仪会好调点吧,我调遥控器的时候是用频谱仪看发射强度的。

XUEPENGBIN 发表于 2018-4-20 03:55:46

建议楼主多用几个身份证,记得以前调试过,不是所有的都能读出来。

tang_qianfeng 发表于 2023-9-8 14:41:05

XUEPENGBIN 发表于 2018-4-20 03:55
建议楼主多用几个身份证,记得以前调试过,不是所有的都能读出来。
(引用自18楼)

目前也有反馈有的身份证读不到UID,身边的身份证测试没有问题,请问哪里可以买到这种类型的卡片呢?方便测试,谢谢
页: [1]
查看完整版本: 有做过RC523芯片读取二代身份证卡号的朋友么?