完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我读身份证id第一步就不能通过,
寄存器配置如下: ClearBitMask(Status2Reg, 0x08); //write_reg(ControlReg, 0x10); write_reg(ModeReg, 0x3F); //0x3f // For 0xFFFF crc write_reg(TReloadRegL, 30); write_reg(TReloadRegH, 0); write_reg(TModeReg, 0x8D); write_reg(TPrescalerReg, 0x3E); write_reg(TxASKReg, 0); // Force 100ASK = 0 // ------------------------- 发送部分设置 ------------------------------ write_reg(GsNReg, 0xF8); // TX输出电导设置 write_reg(CWGsCfgReg, 0x3F); write_reg(ModGsCfgReg, 0x08); //0x0F // 调制指数设置RegModGsp,, TYPEB ModConductance 0x1A write_reg(TxModeReg, 0x03); // 编码器设置,106kbps,14443B write_reg(BitFramingReg, 0x00); // 调制脉宽,0x13->2.95us RegTypeBFraming ,,TYPEB write_reg(AutoTestReg, 0x00); // ------------------------- 接收部分设置 ------------------------------ // 低二位为接收增益, // 00,10,20,30,40,50,60,70 // 18,23,18,23,33,38,43,48dB write_reg(RFCfgReg, 0x70); //0x73 // 0x59 RegRxControl1//73, write_reg(RxModeReg, 0x03); // 解码器设置,,106kbps,14443B write_reg(RxThresholdReg, 0x75); //0x75 // 高四位->最小信号强度,低三位->冲突最小信号强度,最大0xF7 // ------------------------- TYPEB特征参数设定 ------------------------- ClearBitMask(RxSelReg,0x3F); // TR0 SetBitMask(RxSelReg, 0x08); ClearBitMask(TxModeReg, 0x80); // 无CRC,无奇偶校验 ClearBitMask(RxModeReg, 0x80); ClearBitMask(Status2Reg, 0x08); // MFCrypto1On =0 // ------------------------- 天线开关设置 ------------------------------ Antenna(RC_ANTENNA_OFF); Delay(10); Antenna(RC_ANTENNA_ON); 寻卡过程如下: buf[0] = 0x05; buf[1] = 0x00; buf[2] = 0x00; buf[3] = 0x71; // crc buf[4] = 0xFF; // CalulateCRC(buf, 3, &buf[3]); status = PcdComMF522(PCD_TRANSCEIVE, buf, 5, buf, &len); //******************************************************************/ //功 能:通过RC522和ISO14443卡通讯 //参数说明:Command[IN]:RC522命令字 // pInData[IN]:通过RC522发送到卡片的数据 // InLenByte[IN]:发送数据的字节长度 // pOutData[OUT]:接收到的卡片返回数据 // *pOutLenBit[OUT]:返回数据的位长度 //******************************************************************/ char PcdComMF522(unsigned char Command ,unsigned char *pInData , unsigned char InLenByte,unsigned char *pOutData, unsigned int *pOutLenBit ) { char status = MI_ERR ; unsigned char irqEn = 0x00 ; unsigned char waitFor = 0x00 ; unsigned char lastBits ; unsigned char n ; unsigned int i ; u8 errreg=0; switch (Command) { case PCD_AUTHENT: irqEn = 0x12 ; waitFor = 0x10 ; break ; case PCD_TRANSCEIVE: irqEn = 0x77 ; waitFor = 0x30 ; break ; default: break ; } write_reg(ComIEnReg,irqEn|0x80) ; // ClearBitMask(ComIrqReg,0x80) ; write_reg(CommandReg,PCD_IDLE) ; SetBitMask(FIFOLevelReg,0x80) ; // 清空FIFO for(i=0; i write_reg(CommandReg, Command) ; // 命令写入命令寄存器 if(Command == PCD_TRANSCEIVE) SetBitMask(BitFramingReg,0x80) ; // 开始发送 i = 6000 ; //根据时钟频率调整,操作M1卡最大等待时间25ms do { n = read_reg(ComIrqReg) ; i-- ; } while((i!=0)&&!(n&0x01)&&!(n&waitFor)) ; ClearBitMask(BitFramingReg,0x80) ; if(i!=0) { errreg = read_reg(ErrorReg); printf("read_reg(ErrorReg):0x%xrn",errreg); if(!(errreg&0x1B)) { status = MI_OK ; if (n&irqEn&0x01) status = MI_NOTAGERR ; if(Command==PCD_TRANSCEIVE) { n = read_reg(FIFOLevelReg) ; lastBits = read_reg(ControlReg)&0x07 ; if(lastBits) *pOutLenBit = (n-1)*8 + lastBits ; else *pOutLenBit = n*8 ; if(n==0) n = 1 ; if(n>MAXRLEN) n = MAXRLEN ; for (i=0; i } } else status = MI_ERR ; } SetBitMask(ControlReg,0x80) ;// stop timer now write_reg(CommandReg,PCD_IDLE) ; return status; } 一直无法识别身份证,有没有哪位大神可以指导下,谢谢 |
|
相关推荐
2个回答
|
|
读s50卡倒是没问题
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 21:27 , Processed in 0.530826 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号