




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#includeHmyim匸h*函数名:Wnte_MFRC5200*功能描述:向MFRC522的某一寄存器写一个字节数据*输入参数:addi-寄存器地址;val-要写入的值*返回值:无*/voidWiite_MFRC522(uchaiaddi;ucharval)GPIO_WnteLow(GPIOE,GPIO_PIN_5);地址格式:oxxxxxxoSPI_Wnte(addi1)&0 x7E);SPI_Wnte(val);GPIO_WiiteHigh(GPIOE,GPIO_PIN_5);*函数名:Read_MFRC522*功能描述:从MFRC522的某一寄存器读一个字节数据*输入参数:addi-
2、寄存器地址*返回值:返回读取到的一个字节数据*/ucharRead_NlFRC522(ucharaddi)ucharval;GPIO_WnLow(GPIOE,GPIO_PIN_5);地址格式:1XXXXXX0SPI_Write(addrl)&Ox7E)|0 x80);val=SPI_Read();GPIO_WnWHigh(GPIOE,GPIO_PIN_5);retuinval;*函数名:SetBitMask*功能描述:置RC522寄存器位*输入参数:“g-寄存器地址;mask-置位值*返回值:无*/voidSetBitMask(ucharreg.ucharmask)uchartmp;tmp=R
3、ead_MFRC522(reg);Wiite_MFRC522(reg,tmp|mask);/setbitmask*函数名:CleaiBitMask*功能描述:清RC522寄存器位*输入参数:reg-寄存器地址;mask-清位值*返回值:无*/voidCleaiBitMask(ucharreg,ucharmask)uchartmp;tmp=Read_MFRC522(reg);Wiite_MFRC522(ieg,tmp&(mask);/clearbitmask*函数名:AiitemiaOn*功能描述:开启大线,每次启动或关闭天险发射Z间应至少有1ms的间隔*输入参数:无*返回值:无*/voidAi
4、iteiuiaOn(void)uchartemp;temp=Read_NIFRC522(TxContiolReg);if(!(temp&0 x03)SetBitMask(TxControlReg,0 x03);*函数名:AiitemiaOff*功能描述:关闭大线,每次启动或关闭天险发射Z间应至少有1ms的间隔*输入参数:无*返回值:无*/voidAiiteimaOff(void)ClearBitMask(TxContiolReg,0 x03);*函数名:ResetMFRC522*功能描述:复位RC522*输入参数:无*返回值:无*/voidMFRC522_Reset(void)Wnte-MFR
5、C522(ConunandReg,PCD.RESETPHASE);voidMFRC522_Init(void)SetNRSTPD:zNlFRC522_Reset();/Timer:TPrescalei*TieloadVaV6.78MHz=24msWnte-MFRC522(TModeReg,0 x8D);/Tauto=1;f(Timer)=678MHzTPeScaleiWiite_MFRC522(TPiescaleiReg,0 x3E);/TModeReg3.0+TPrescaleiRegWnte-MFRC522(TReloadRegL,30);Wnte-MFRC522(TReloadRegH,
6、0);Wnte_MFRC522(TxAutoReg,0 x40);/100%ASKf/MFCiyptolOn=0/RxWait=RxSelReg5.0/RxGain=48dBWnte_MFRC522(ModeReg,0 x3D);/CRC初始值0 x6363?/CleaiBitMask(Status2Reg,0 x08);/Wnte_MFRC522(RxSelReg,0 x86);/Wnte_MFRC522(RFCfgReg,0 x7F);AiitemiaOn();打开天线*功能描述:RC522和ISO14443卡通讯*输入参数:command-MF522命令字,sendData-通过RC52
7、2发送到卡片的数据,sendLen-发送的数据长度backData-接收到的卡片返回数据,backLen-返回数据的位长度*返回值:成功返回MI_OK*/ucharMFRC522_ToCaid(ucharcommand,uchar*sendData,ucharsendLen,uchar*backData,umt*backLen)ucharstatus=MI_ERR;ucharuqEn=0 x00;ucharwaitIRq=0 x00;ucharlastBits;ucharn;umti;switch(command)casePCD_AUTHENT:认证卡密uqEn=0 x12;waitIRq=0
8、 x10;break;casePCD.TRANSCEIVE:发送FIFO中数据uqEn=0 x77;waitIRq=0 x30;break;default:break;Wiite_MFRC522(ConmilEiiReg,iiqEn|0 x80);/允许中断请求ClearBitMask(CommIrqReg,0 x80);/清除所有中断请求位SetBitMask(FIFOLevelReg,0 x80);/FlushBuffei-1,FIFO初始化Wnte_MFRC522(ConmiandReg.PCDJDDLE);/NOaction;取消当前命令?向FIFO中写入数据for(i=0;iMAX_
9、LEN)n=MAX_LEN;读取FIFO中接收到的数据for(i=0;in;i+)backDatai=Read_MFRC522(FIFODataReg);elsestatus=Nfl_ERR;/SetBitMask(ControlReg,0 x80);/timerstops/AVnte_MFRC522(CominandReg,PCDJDLE);retuinstatus;/*函数名:MFRC522_Request*功能描述:寻卡,读取卡类型号*输入参数:reqMode-寻卡方式,TagType-返回卡片类型0 x4400=Mifaie_UltiaLight0 x0400=Mifore_One(S
10、50)0 x0200=Mifare_One(S70)0 x0800=Mifore_Pro(X)0 x4403=Mifore.DESFire*返回值:成功返回2vn_OK*/ucharNIFRC522_Request(ucharreqMode,uchar*TagType)接收到的数据位数ucharstatus;umtbackBits;Wiite_MFRC522(BitFianiuigReg.0 x07);/TxLastBists=BitFranungReg2.O?TagType0=leqMode;status=MFRC522_ToCard(PCD_TRANSCEI7E,TagType,1,Tag
11、Type.&backBits);if(status!=MI_OK)|(backBits!=0 x10)istatus=MI_ERR;retuinstatus;*函数名:MFRC522_Anticoll*功能描述:防冲突检测,读取选中卡片的卡序列号*输入参数:seiNum-返回4字节卡序列号,第5字节为校验字节*返回值:成功返回2vn_OK*/ucharNIFRC522_Anticoll(uchar*seiNum)ucharstatus;uchari;ucharserNumCheck=0;umtunLen;/CleaiBitMask(Status2Reg50 x08);/TempSensclea
12、r/CleaiBitMask(CollReg,0 x80);/ValuesAfteiCollWiite_MFRC522(BitFianiuigReg.0 x00);/TxLastBists=BltFranungReg2.0seiNum0=PICC_ANTICOLL;seiNuml=0 x20;status=MFRC522_ToCard(PCD_TRANSCEI7E,serNum,2,serNum,&uiiLen);if(status=MI_OK)校验卡序列号for(1=0;i4;i+)serNumCheckJserNumi;if(serNumCheck!=seiNumi)status=MI_E
13、RR;/ValuesAfteiColl=1/SetBitMask(CollReg,0 x80);retuinstatus;*函数名:CalulateCRC*功能描述:用MF522计算CRC*输入参数:pindata-要读数CRC的数据,len数据长度,pOutData-计算的CRC结果*返回值:无*/voidCalulateCRC(uchai*plndata,ucharlen,uchar*pOntData)uchar1,n;ClearBitMask(DivkqReg,0 x04);/CRCkq=0SetBitMask(FIFOLevelReg,0 x80);清FIFO指针/Wnte_MFRC5
14、22(CoininandReg,PCDJDLE);向FIFO中写入数据for(i=0;Ken;i+)Wiite_MFRC522(FIFODataReg,*(plndata+i);Wiite_MFRC522(CominandReg,PCD_CALCCRC);等待CRC计算完成i=OxFF;don=Read_MFRC522(DivIiqReg);i-;while(i!=0)&!(n&0 x04);/CRCLq=1读取CRC计算结果pOutData0=Read_MFRC522(CRCResultRegL);pOutDatal=Read_MFRC522(CRCResultRegM);*函数名:MFRC
15、522_SelectTag*功能描述:选卡,读取卡存储器容鼠*输入参数:serNum传入卡序列号*返回值:成功返回卡容量*/ucharNIFRC522_SelectTag(uchar*seiNum)uchar1;ucharstatus;ucharsize;umtrecvBits;ucharbufferf刃;/CleaiBitMask(Status2Reg,0 x08);/MFCiypto1On=0buflfei0=PICC_SE1ECTTAG;buflfeifl=0 x70;for(i=0;i5;i+)ibuffeii+2=*(serNum+i);CalulateCRC(buffei7,刀);
16、/?status=MFRC522_ToCard(PCD_TRANSCEI7E,buffer.9,buffer,&recvBits);if(status=MI_OK)&(lecvBits=0 x18)isize=buffer0;size=0;returnsize;*函数名:NIFRC522_Auth*功能描述:验证卡片密码*输入参数:autliMode-密码验证模式0 x60=验证A密钥0 x61=验证B密钥BlockAddi块地址Sectoikev扇区密码serNum-卡片序列号,4字节*返回值:成功返回2vn_OK*/ucharNIFRC522_Auth(uchaiautliMode,uch
17、arBlockAddi;uchar函数名:NlFRC522_Read*功能描述:读块数据*输入参数:blockAdck-块地址工ecvData-读出的块数据Sectorkey,uchai*serNum)ucharstatus;umtrecvBits;uchari;ucharbuff12;验证指令+块地址+扇区密码+卡序列号buff0=autliMode;buffl=BlockAddi;for(i=0;i6;i+)buffi+2=*(Sectoikey+i);for(i=0;i4;i+)buffi+8=*(serNum+i);status=MFRC522_ToC如d(PCD_AUTHENT、bu
18、ff.12,buff.&recvBits);if(status!=MI_OK)|(Read_MFRC522(Status2Reg)&0 x08)status=MI_ERR;returnstatus;*返回值:成功返回MI_OK*/ucharNIFRC522_Read(ucharblockAddi;uchar*iecvData)ucharstatus;umtunLen;recvDataO=PICC_READ;recvDatal=blockAddi;CalulateCRC(recvData,2,&iecvData2);status=MFRC522_ToCard(PCD_TRANSCEI7E,recvData,4,recvData,&uiiLen);if(status!=MI_OK)(uiiLen!=0 x90)status=MI_ERR;retuinstatus;*函数名:MFRC522_Wnte*功能描述:写块数据*输入参数:blockAdck-块地址;writeData-向块写16字节数据*返回值:成功返回NH_OK*/ucharNIFRC522_Wiite(uchaiblockAddi;uchai*writeData)ucharstatus;umtrecvBits;uchari;ucharbuff18;b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山西机电职业技术学院《德国精神与文化》2023-2024学年第二学期期末试卷
- 宿州学院《生物资源保护与利用》2023-2024学年第二学期期末试卷
- 江苏省无锡市第一女子中学2025届高三下学期联合考试物理试题含解析
- 石家庄信息工程职业学院《地方教学名师课堂》2023-2024学年第二学期期末试卷
- 辽宁农业职业技术学院《数学方法论与解题研究》2023-2024学年第一学期期末试卷
- 莆田学院《土木工程施工技术课程设计》2023-2024学年第一学期期末试卷
- 天津外国语大学《病理形态学诊断技术》2023-2024学年第二学期期末试卷
- 山东省邹平市一中学2025届高三4月月考试生物试题含解析
- 公司股权转让居间协议书二零二五年
- 二零二五版个人宅基地转让的协议书
- 妊娠期母体变化讲解
- 2025年平顶山职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年度全国初中应用物理竞赛试题及答案
- 卫星网络管理与运维-深度研究
- 五星级酒店餐饮部管理制度大全
- 2025年紫金财产保险股份有限公司招聘笔试参考题库含答案解析
- 2025年高中作文素材积累:15个“小众又万能”的人物素材
- 2025年春新人教版语文一年级下册教学课件 11 浪花
- 《某小区深基坑支护设计》8100字(论文)
- 水利工程信息化项目划分表示例、单元工程质量标准、验收应提供的资料目录
- 2025年日历表含农历(2025年12个月日历-每月一张A4可打印)
评论
0/150
提交评论