搜索
bottom↓
回复: 18

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

[复制链接]

出0入0汤圆

发表于 2018-4-17 11:04:07 | 显示全部楼层 |阅读模式
本帖最后由 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[18] = {0};
    buf[0] = 0x05;
    buf[1] = 0x00;
    buf[2] = 0x00;
    buf[3] = 0x71;                                                         
    buf[4] = 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[18] = {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[10] = 0x10;
    //RC_CalulateCRC(buf, 9, &buf[9]);
    status = PcdComMF522(PCD_TRANSCEIVE, buf, 11, PSN, &len);               
    return status;
}

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

char  RC522_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;
}


出0入36汤圆

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

出0入0汤圆

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

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

出0入36汤圆

发表于 2018-4-18 16:51:59 | 显示全部楼层
andy93762 发表于 2018-4-17 19:41
我只要能读出身份证的UID就可以了啊。你的RC632和RC523程序兼容么?

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

出0入12汤圆

发表于 2018-4-18 17:36:27 | 显示全部楼层
看看硬件有没有问题,特别是蛋疼的天线,还有谐振电容

出0入0汤圆

发表于 2018-4-18 21:36:59 | 显示全部楼层
天线要调试好,B卡没A卡好弄的。

出0入168汤圆

发表于 2018-4-18 22:04:37 | 显示全部楼层
本帖最后由 eiglxl 于 2018-4-18 22:08 编辑

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

出0入0汤圆

 楼主| 发表于 2018-4-19 12:05:52 来自手机 | 显示全部楼层
throg 发表于 2018-4-18 21:36
天线要调试好,B卡没A卡好弄的。

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

出0入0汤圆

 楼主| 发表于 2018-4-19 12:06:14 来自手机 | 显示全部楼层
eiglxl 发表于 2018-4-18 22:04
天线很关键,A卡能读的天线,B卡不一定能读。

需要注意什么呢?

出0入0汤圆

 楼主| 发表于 2018-4-19 13:08:22 来自手机 | 显示全部楼层
eiglxl 发表于 2018-4-18 22:04
天线很关键,A卡能读的天线,B卡不一定能读。

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

出0入168汤圆

发表于 2018-4-19 13:08:35 | 显示全部楼层
andy93762 发表于 2018-4-19 12:06
需要注意什么呢?

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

出0入0汤圆

 楼主| 发表于 2018-4-19 15:07:04 来自手机 | 显示全部楼层
eiglxl 发表于 2018-4-19 13:08
在A卡下天线的匹配要调到最佳状态,读的距离最远时(>6cm)再读B卡。

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

出0入0汤圆

发表于 2018-4-19 15:14:16 | 显示全部楼层
andy93762 发表于 2018-4-19 15:07
要求这么高啊,那这个参数B卡能达到几米?

0.02米。

出0入168汤圆

发表于 2018-4-19 15:56:38 | 显示全部楼层
andy93762 发表于 2018-4-19 15:07
要求这么高啊,那这个参数B卡能达到几米?

距离起码减半。

出0入0汤圆

发表于 2018-4-19 16:13:44 | 显示全部楼层
印象中论坛里有人发过程序。

出0入0汤圆

 楼主| 发表于 2018-4-19 23:07:31 来自手机 | 显示全部楼层
mysky 发表于 2018-4-19 16:13
印象中论坛里有人发过程序。

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

出0入0汤圆

发表于 2018-4-19 23:53:42 | 显示全部楼层
andy93762 发表于 2018-4-19 12:05
用示波器可以调好天线么?

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

出0入0汤圆

发表于 2018-4-20 03:55:46 | 显示全部楼层
建议楼主多用几个身份证,记得以前调试过,不是所有的都能读出来。

出0入18汤圆

发表于 2023-9-8 14:41:05 | 显示全部楼层
XUEPENGBIN 发表于 2018-4-20 03:55
建议楼主多用几个身份证,记得以前调试过,不是所有的都能读出来。
(引用自18楼)

目前也有反馈有的身份证读不到UID,身边的身份证测试没有问题,请问哪里可以买到这种类型的卡片呢?方便测试,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 14:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表