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;
}
帮 你 u p 34480016 发表于 2015-10-30 23:18
帮 你 u p
非常谢谢! 我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff) ; // TX输出电导设置
WriteRawRC(CWGsPReg,0x3f) ;
WriteRawRC(ModGsPgReg,0x18) ;// 调制指数设置RegModGsp,, TYPEB ModConductance 0x1A
第一个我改为0XFF和0xf8没有什么影响,第二个没有改变
第三个我试了很多,从0x3f到0x00,小于0x08时就可以识别身份证了,
具体原因是每个人设计的天线不一样,所以要设置不同的参数,别人的只是参考而已,对于自己的电路还是要多调! th1993 发表于 2015-10-31 10:33
我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff) ; // T ...
正好弄这个,感谢楼主分享的经验。有不明白再请教。 学习学习 th1993 发表于 2015-10-31 10:33
我找到原因了,其他寄存器配置不变,主要调这三个
WriteRawRC(GsNReg,0xff) ; // T ...
前边的寄存器定义哪里有啊。。 记得好像身份证属于B卡 XUEPENGBIN 发表于 2015-12-7 17:11
前边的寄存器定义哪里有啊。。
看数据手册啊 二代身份证是Type B卡,RC523芯片支持不,查一下{:smile:} hankls0007 发表于 2015-12-17 13:43
二代身份证是Type B卡,RC523芯片支持不,查一下
支持,522不支持 感谢10楼分享的523的资料。不过身份证一直没做挂失处理我觉的很奇怪 问一下lz,那个writerawrc函数的库是从哪搞的? runapp 发表于 2015-12-25 22:31
问一下lz,那个writerawrc函数的库是从哪搞的?
直接522的就可以用! th1993 发表于 2015-12-27 12:14
直接522的就可以用!
522的又是哪搞的……? runapp 发表于 2015-12-27 22:49
522的又是哪搞的……?
网上一大堆{:sweat:} th1993 发表于 2015-12-29 16:46
网上一大堆
求关键字!先行谢过! RC522....................... 厉害呀打算用在智能家居上啊 问下这些提到的ATQB命令在哪里有介绍?还有身份证只能读到UID嘛 china97wan 发表于 2016-6-14 11:37
问下这些提到的ATQB命令在哪里有介绍?还有身份证只能读到UID嘛
看这个标准。 楼主还有RC523的程序代码哈?网上基本找不到 和522一样就是几个寄存器不一样啊 学习学习 学习学习
页:
[1]