MF_RC522_射频识别参考程序注释new

上传人:小** 文档编号:139287943 上传时间:2022-08-22 格式:DOC 页数:16 大小:379.50KB
收藏 版权申诉 举报 下载
MF_RC522_射频识别参考程序注释new_第1页
第1页 / 共16页
MF_RC522_射频识别参考程序注释new_第2页
第2页 / 共16页
MF_RC522_射频识别参考程序注释new_第3页
第3页 / 共16页
资源描述:

《MF_RC522_射频识别参考程序注释new》由会员分享,可在线阅读,更多相关《MF_RC522_射频识别参考程序注释new(16页珍藏版)》请在装配图网上搜索。

1、/ucAddr=(Addressvvl)&0x7E)l0x80;变化成有效的地址形式,最低位为0,最高位为1时候时,从MFRC522读出数据,最低位为0,最高位为0时候时,往MFRC522写数据,参考39页/读SPI数据/unsignedcharSPIReadByte(void)/CounterusedtounsignedchardataSPICount;clockoutthedataunsignedchardataSPIData;SPIData=0;/Preparetoclockinthe/Rotatethedata/Raisethefor(SPICount=0;SPICount8;SPIC

2、ount+)datatobereadSPIDatavv=l;CLR_SPI_CK;nop();nop();clocktoclockthedataoutoftheMAX7456if(STU_SPI_MISO)SPIDatal=0x01;22程序读书笔记详细注释22程序读书笔记详细注释/andloopbackreturn(SPIData);/Counterusedto曲耘T_SPI_CK;nop();nop();Droptheclockreadyforthenextbit/Finallyreturnthereaddata/写SPI数据/voidSPIWriteByte(unsignedcharda

3、taSPIData)unsignedchardataSPICount;clockoutthedatafor(SPICount=0;SPICount8;SPICount+)if(SPIData&0x80)SET_SPI_MOSI;elseCLR_SPI_MOSI;nop();nop();CLR_SPI_CK;nop();nop();SET_SPI_CK;nop();nop();SPIData=1;/功能:寻卡参数说明:req_codeIN:寻卡方式/0x52=寻感应区内所有符合14443A标准的卡/0x26=寻未进入休眠状态的卡/pTagTypeOUT:卡片类型代码/0x4400=Mifare_

4、UltraLight/0x0400=Mifare_One(S50)/0x0200=Mifare_One(S70)/0x0800=Mifare_Pro(X)/0x4403=Mifare_DESFire/返回:成功返回MI_OK/charPcdRequest(unsignedchardatareq_code,unsignedchar*pTagType)如妙2社序以书毛记详细y王释W-chardatastatus;unsignedintdataunLen;unsignedchardataucComMF522BufMAXRLEN;ClearBitMask(Status2Reg,0x08);清除MRCr

5、yptolon,要用软件清零WriteRawRC(BitFramingReg,0x07);/startsend=0,rxalign=0,在FIFO中存放的位置,TXlastbit=7SetBitMask(TxControlReg,0x03);/TX2rfen=1,TX1RFen=1,传递调制的13.56MHZ的载波信号ucComMF522Buf0=req_code;status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLeif(status=MI_OK)&(unLen=0x10)*pTagType=ucComMF5

6、22Buf0;*(pTagType+1)=ucComMF522Buf1;elsestatus=MI_ERR;returnstatus;/功能:防冲撞参数说明:pSnrOUT:卡片序列号,4字节/返回:成功返回MI_OK/charPcdAnticoll(unsignedchar*pSnr)chardatastatus;unsignedchardatai,snr_check=0;unsignedintdataunLen;unsignedchardataucComMF522BufMAXRLEN;ClearBitMask(Status2Reg,0x08);清除MRCrypto1on,要用软件清零Wri

7、teRawRC(BitFramingReg,0x00);表示最后一个字节所有位都发送ClearBitMask(CollReg,0x80);/CollRegCollReg0冲突结束后冲突位被置零status=PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);if(status=MI_OK)for(i=0;i4;i+)*(pSnr+i)=ucComMF522Bufi;snr_checkA=ucComMF522Bufi;/if(snr_check!=ucComMF522Bufi)status=MI_ERR;SetBitM

8、ask(CollReg,0x80);/CollRegCollReg在106kbps良好的防冲突情况下该位置1returnstatus;/功能:选定卡片参数说明:pSnrIN:卡片序列号,4字节/返回:成功返回MI_OK/charPcdSelect(unsignedchar*pSnr)chardatastatus;unsignedchardatai;unsignedintdataunLen;unsignedchardataucComMF522BufMAXRLEN;ucComMF522Buf0=PICC_ANTICOLL1;ucComMF522Buf1=0x70;ucComMF522Buf=0;f

9、or(i=0;i4;i+)ucComMF522Bufi+2=*(pSnr+i);ucComMF522Buf6a=*(pSnr+i);CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf7);/#22程序读书笔记详细注释一arBitMask(Status2Reg,0x08);清零MFcryonstatusPcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);if(status=MI_OK)&(unLen=0x18)status=MI_OK;elsestatus=MI_ERR;returns

10、tatus;/功能:验证卡片密码参数说明:auth_modeIN:密码验证模式/0x60=验证A密钥/0x61=验证B密钥/addrIN:块地址/pKeyIN:密码/pSnrIN:卡片序列号,4字节/返回:成功返回MI_OK/charPcdAuthState(unsignedchardataauth_mode,unsignedchardataaddr,unsignedchar*pKey,unsignedchar*pSnr)chardatastatus;unsignedintdataunLen;unsignedchardatai,ucComMF522BufMAXRLEN;ucComMF522Bu

11、f0=auth_mode;验证A密钥ucComMF522Buf1=addr;/addrIN:块地址for(i=0;i6;i+)ucComMF522Bufi+2=*(pKey+i);for(i=0;i6;i+)ucComMF522Bufi+8=*(pSnr+i);/memcpy(&ucComMF522Buf2,pKey,6);/memcpy(&ucComMF522Buf8,pSnr,4);status=PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen);if(status!=MI_OK)II(!(ReadRawRC(Sta

12、tus2Reg)&0x08)status=MI_ERR;一22程序读书笔记详细注释如妙2社序以书毛记详细y王释restatus;一22程序读书笔记详细注释一22程序读书笔记详细注释/功能:读取Ml卡一块数据参数说明:addrIN:块地址/pDataOUT:读出的数据,16字节/返回:成功返回MI_OK/charPcdRead(unsignedchardataaddr,unsignedchar*pData)chardatastatus;unsignedintdataunLen;unsignedchardatai,ucComMF522BufMAXRLEN;ucComMF522Buf0=PICC_R

13、EAD;ucComMF522Buf1=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2);statusPcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);if(status=MI_OK)&(unLen=0x90)/memcpy(pData,ucComMF522Buf,16);for(i=0;i16;i+)*(pData+i)=ucComMF522Bufi;elsestatus=MI_ERR;returnstatus;/功能:写数据到M1卡一块参数说明:addrIN:块地

14、址/pDataIN:写入的数据,16字节/返回:成功返回MI_OK/charPcdWrite(unsignedchardataaddr,unsignedchar*pData)chardatastatus;unsignedintdataunLen;unsignedchardatai,ucComMF522BufMAXRLEN;曲盡ComMF522Buf0=PICC_WRITE;ucComMF522Bufl=addr;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2);statusPcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,

15、4,ucComMF522Buf,&unLen);if(status!=MI_OK)II(unLen!=4)II(ucComMF522Buf0&OxOF)!=OxOA)status=MI_ERR;if(status=MI_OK)memcpy(ucComMF522Buf,pData,16);for(i=0;i16;i+)ucComMF522Bufi=*(pData+i);CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf16);statusPcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unL

16、en);if(status!=MI_OK)|(unLen!=4)|(ucComMF522Buf0&0x0F)!=0x0A)status=MI_ERR;returnstatus;/功能:命令卡片进入休眠状态/返回:成功返回MI_OK/charPcdHalt(void)chardatastatus;unsignedintdataunLen;unsignedchardataucComMF522BufMAXRLEN;ucComMF522Buf0=PICC_HALT;ucComMF522Buf1=0;CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2);status2

17、2程序读书笔记详细注释returnMI_OK;/用MF522计算CRC16函数/voidCalulateCRC(unsignedchar*pIndata,unsignedchardatalen,unsignedchar*pOutData)unsignedchardatai,n;ClearBitMask(DivIrqReg,0x04);WriteRawRC(CommandReg,PCD_IDLE);取消当前命令SetBitMask(FIFOLevelReg,0x80);/FlushBuffer清除ErrReg的标志位for(i=0;ivlen;i+)WriteRawRC(FIFODataReg,

18、*(pIndata+i);WriteRawRC(CommandReg,PCD_CALCCRC);i=0xFF;don=ReadRawRC(DivIrqReg);i-;while(i!=0)&!(n&0x04);当CRCIRq所有数据被处理完毕该位置位pOutData0=ReadRawRC(CRCResultRegL);显示计算出来的CRC值pOutData1=ReadRawRC(CRCResultRegM);/功能:复位RC522/返回:成功返回MI_OK/charPcdReset(void)/PORTDI=(1vvRC522RST);SET_RC522RST;delay_ns(10);/PO

19、RTD&=(1vvRC522RST);CLR_RC522RST;delay_ns(10);/PORTDI=(1vvRC522RST);SET_RC522RST;delay_ns(10);PCD_RESETPHASEWriteRawRC(CommandReg,PCD_RESETPHASE);/#define如妙2社序以书毛记详细y王释22程序读书笔记详细注释0A如妙2社序以书毛记详细y王释如妙2社序以书毛记详细y王释xOF复尙eiay_ns(10);WriteRawRC(ModeReg,0x3D);WriteRawRC(TReloadRegL,30);WriteRawRC(TReloadRegH

20、,0);WriteRawRC(TModeReg,0x8D);WriteRawRC(TPrescalerReg,0x3E);器寄存器,#和Mifare卡通讯,CRC初始值0x6363定时器的低8位数据,定时器的高8位数据,定时器模式寄存器,定时器减值计数实际值是OXD3E这部分主要是设置定时WriteRawRC(TxAutoReg,0x40);必须要,设置逻辑1,强制1OO%ASK调制如妙2社序以书毛记详细y王释如妙2社序以书毛记详细y王释returnMI_OK;/设置RC522的工作方式/charM500PcdConfigISOType(unsignedchardatatype)if(type

21、=A)/ISO14443_AClearBitMask(Status2Reg,0x08);状态2寄存器WriteRawRC(ModeReg,0x3D);/3F/和Mifare卡通讯,CRC初始值0x6363WriteRawRC(RxSelReg,0x86);/84选择内部接收器设置,内部模拟部分调制信号,发送数据后,延迟6个位时钟,接收WriteRawRC(RFCfgReg,0x7F);/4F配置接收器48dB最大增益WriteRawRC(TReloadRegL,30);/tmoLength);TReloadVal=h6a=tmoLength(dec)WriteRawRC(TReloadRegH

22、,0);实际值是OXD3E这部分主要是设置定时器寄存器,#WriteRawRC(TModeReg,0x8D);WriteRawRC(TPrescalerReg,0x3E);delay_ns(1000);PcdAntennaOn();elsereturn-1;returnMI_OK;/功能:读RC522寄存器参数说明:AddressIN:寄存器地址返回:读出的值/unsignedcharReadRawRC(unsignedchardataAddress)W-unsignedchardataucAddr;unsignedchardataucResult=O;CLR_SPI_CS;ucAddr=(A

23、ddressvvl)&0x7E)l0x80;变化成有效的地址形式,最低位为0,最高位为1时候是,从MFRC522读出数据,参考39页SPIWriteByte(ucAddr);ucResult=SPIReadByte();SET_SPI_CS;returnucResult;/功能:写RC632寄存器参数说明:AddressIN:寄存器地址/valueIN:写入的值/voidWriteRawRC(unsignedchardataAddress,unsignedchardatavalue)unsignedchardataucAddr;CLR_SPI_CS;ucAddr=(AddressMAXRLEN

24、)n=MAXRLEN;for(i=0;ivn;i+)i=ReadRawRC(FIFODataReg);elsestatus=MI_ERR;SetBitMask(ControlReg,0x80);/stoptimernowWriteRawRC(CommandReg,PCD_IDLE);returnstatus;/开启天线每次启动或关闭天险发射之间应至少有1ms的间隔/voidPcdAntennaOn(void)unsignedchardatai;i=ReadRawRC(TxControlReg);if(!(i&0x03)SetBitMask(TxControlReg,0x03);txl2RFEN=ll;,打开发射管脚/关闭天线/voidPcdAntennaOff(void)ClearBitMask(TxControlReg,0x03);/tx12RFEN=00;,禁止发射管脚

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!