教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 基础教育 >

射频 rc500代码完全注释(7)

来源:网络收集 时间:2026-07-01
导读: 802.SerBuffer[6]=SerBuffer[2]^SerBuffer[3]^SerBuffer[4]^SerBuffer[5];/*序号中四字节按位异或得到crc校 验字节*/ 803.MInfo.nBytesToSend=7;/*给rc500的相关信息?与指令相配合?须发送的字节数*/ 804.//////////

802.SerBuffer[6]=SerBuffer[2]^SerBuffer[3]^SerBuffer[4]^SerBuffer[5];/*序号中四字节按位异或得到crc校 验字节*/

803.MInfo.nBytesToSend=7;/*给rc500的相关信息?与指令相配合?须发送的字节数*/

804.//////////////////////////////////////////////////////////////////////////////////////////////////////////////

805.status=M500PcdCmd(PCD_TRANSCEIVE,SerBuffer,&MInfo);/*执行命令函数m500pcdcmd()?返回STATUS*/ 806.

807.*sak=0;/*sak选卡回应值先置0*/

808.if(status==MI_OK)/*返回值为执行成功标志MI_OK*/ 809.{

810.if(MInfo.nBitsReceived!=8)/*如果接收到的不是一个字节*/ 811.{

812.status=MI_BITCOUNTERR;/*则置标志位为MI_BITCOUNTERR*/ 813.}

814.else/*如果接收到的是一个字节*/ 815.{

816.*sak=SerBuffer[0];/*则将该值存于SAK中*/ 817.} 818.}

819.returnstatus;/*返回状态值*/ 820.} 821.

822.///////////////////////////////////////////////////////////////////////

823.//KeyloadingintotheMFRC500'sEEPROM

824.//将RC500的EEROM中的密钥载入密钥缓冲区,校验卡密码(E2)

825.///////////////////////////////////////////////////////////////////////

826.charM500PiccAuthE2(unsignedcharauth_mode,unsignedchar*snr, 827.unsignedcharkeynr,unsignedcharblock)

828./*入口参数?AUTH_MODE:A/B卡型号?SNR:卡序列号?KEYNR:密钥所在扇区数?BLOCK:密钥所在数据块*/ 829.{

830.charidatastatus=MI_OK;

831.unsignedinte2addr=0x80+keynr*0x18;/*得出密钥在EEROM中的位置*/ 832.//unsignedchar*e2addrbuf=(unsignedchar*)&e2addr; 833.unsignedchar*e2addrbuf; 834.

835.e2addrbuf=(unsignedchar*)&e2addr;

836.if(auth_mode==PICC_AUTHENT1B)/*如果是B类卡*/ 837.{

838.e2addr+=12;/*密钥地址加12*/ 839.}

840.FlushFIFO();

841.ResetInfo(MInfo); 842.

843.memcpy(SerBuffer,e2addrbuf,2);/*从E2ADDRBUF中取出存密钥的EEROM地址?两个字节?*/

844.SerBuffer[2]=SerBuffer[0]; 845.SerBuffer[0]=SerBuffer[1]; 846.SerBuffer[1]=SerBuffer[2]; 847.MInfo.nBytesToSend=2;

848.if((status=M500PcdCmd(PCD_LOADKEYE2,SerBuffer,&MInfo))==MI_OK) 849.{/*下载密钥成功*/

850.status=M500PiccAuthState(auth_mode,snr,block); 851.}/*三轮认证*/

852.returnstatus;/*返回状态值*/ 853.} 854.

855.///////////////////////////////////////////////////////////////////////

856.//Authenticationkeycoding 857./*将密钥换成标准密钥形式*/

858.///////////////////////////////////////////////////////////////////////

859.charM500HostCodeKey(unsignedchar*uncoded,unsignedchar*coded) 860.{

861.charidatastatus=MI_OK; 862.unsignedcharidatacnt=0; 863.unsignedcharidataln=0; 864.unsignedcharidatahn=0;

865.for(cnt=0;cnt6;cnt++)/*密钥由6字节转成12字节*/ 866.{

867.ln=uncoded[cnt]&0x0F;/*密钥一字节的低四位*/ 868.hn=uncoded[cnt]>>4;/*密钥一字节的高四位*/ 869.coded[cnt*2+1]=(~ln<4)|ln; 870.coded[cnt*2]=(~hn<4)|hn; 871.}

872.returnMI_OK; 873.} 874.

875.///////////////////////////////////////////////////////////////////

876.//AuthenticationwithdirectkeyloadingfromtheuC

877./*直接校验从单片机载入的密码?针对卡中的某一块数据来说?16块?每

块64字节?*/

878.//////////////////////////////////////////////////////////////////

879.charM500PiccAuthKey(unsignedcharauth_mode, 880.unsignedchar*snr, 881.unsignedchar*keys, 882.unsignedcharblock) 883.{

884.charidatastatus=MI_OK; 885.//PcdSetTmo(2); 886.FlushFIFO();

887.ResetInfo(MInfo);

888.memcpy(SerBuffer,keys,12); 889.MInfo.nBytesToSend=12;

890.if((status=M500PcdCmd(PCD_LOADKEY,SerBuffer,&MInfo))==MI_OK) 891.{/*直接从单片机载入密码到FIFO,然后再载入密钥缓冲区*/ 892.status=M500PiccAuthState(auth_mode,snr,block); 893.}/*三轮认证*/ 894.returnstatus; 895.}/*返回状态值*/ 896.

897.///////////////////////////////////////////////////////////////////////

898./*三轮认证函数*/

899.///////////////////////////////////////////////////////////////////////

900.charM500PiccAuthState(unsignedcharauth_mode,unsignedchar*snr,unsignedcharblock)

901.{/*入口参数?AUTH_MODE:A/B卡型号?SNR:卡序列号?BLOCK:要访问所在数据块*/

902.charidatastatus=MI_OK; 903.unsignedcharidatai=0; 904.

905.status=ReadIO(RegErrorFlag);/*读RC500中的错误标志寄存器*/ 906.if(status!=MI_OK)/*载入密钥不成功*/ 907.{ …… 此处隐藏:1392字,全部文档内容请下载后查看。喜欢就下载吧 ……

射频 rc500代码完全注释(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/564818.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)