ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:106.25KB ,
资源ID:8157765      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8157765.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MF RC522 射频识别参考程序注释new.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MF RC522 射频识别参考程序注释new.docx

1、MF RC522 射频识别参考程序注释newMF RC522 射频识别参考程序注释串口读取的数据/- ucAddr = (Address1)&0x7E)|0x80;/变化成有效的地址形式,最低位为0,最高位为1时候是,从MFRC522读出数据,参考39页/ 读SPI数据 /-unsigned char SPIReadByte(void) unsigned char data SPICount; / Counter used to clock out the data unsigned char data SPIData; SPIData = 0; for (SPICount = 0; SPIC

2、ount 8; SPICount+) / Prepare to clock in the data to be read SPIData =1; / Rotate the data CLR_SPI_CK; nop();nop(); / Raise the clock to clock the data out of the MAX7456 if(STU_SPI_MISO) SPIData|=0x01; SET_SPI_CK; nop();nop(); / Drop the clock ready for the next bit / and loop back return (SPIData)

3、; / Finally return the read data /-/ 写SPI数据 /-void SPIWriteByte(unsigned char data SPIData) unsigned char data SPICount; / Counter used to clock out the data for (SPICount = 0; SPICount 8; SPICount+) if (SPIData & 0x80) SET_SPI_MOSI; else CLR_SPI_MOSI; nop();nop(); CLR_SPI_CK;nop();nop(); SET_SPI_CK

4、;nop();nop(); SPIData = 1; /功 能:寻卡/参数说明: req_codeIN:寻卡方式/ 0x52 = 寻感应区内所有符合14443A标准的卡/ 0x26 = 寻未进入休眠状态的卡/ pTagTypeOUT:卡片类型代码/ 0x4400 = Mifare_UltraLight/ 0x0400 = Mifare_One(S50)/ 0x0200 = Mifare_One(S70)/ 0x0800 = Mifare_Pro(X)/ 0x4403 = Mifare_DESFire/返 回: 成功返回MI_OK/char PcdRequest(unsigned char da

5、ta req_code,unsigned char *pTagType) char data status; unsigned int data unLen; unsigned char data ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08);/清除MRCrypto1on,要用软件清零 WriteRawRC(BitFramingReg,0x07);/startsend=0,rxalign=0,在FIFO中存放的位置,TXlastbit=7 SetBitMask(TxControlReg,0x03);/TX2rfen=1,TX1RFen=

6、1,传递调制的13.56MHZ的载波信号 ucComMF522Buf0 = req_code; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);/*8 if (status = MI_OK) & (unLen = 0x10) *pTagType = ucComMF522Buf0; *(pTagType+1) = ucComMF522Buf1; else status = MI_ERR; return status;/功 能:防冲撞/参数说明: pSnrOUT:卡片序列号,4字节/返 回: 成功返

7、回MI_OK/ char PcdAnticoll(unsigned char *pSnr) char data status; unsigned char data i,snr_check=0; unsigned int data unLen; unsigned char data ucComMF522BufMAXRLEN; ClearBitMask(Status2Reg,0x08); /清除MRCrypto1on,要用软件清零 WriteRawRC(BitFramingReg,0x00); /表示最后一个字节所有位都发送 ClearBitMask(CollReg,0x80); /CollRe

8、gCollReg 0冲突结束后冲突位被置零 ucComMF522Buf0 = PICC_ANTICOLL1; ucComMF522Buf1 = 0x20; status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen); if (status = MI_OK) for (i=0; i4; i+) *(pSnr+i) = ucComMF522Bufi;/? snr_check = ucComMF522Bufi; /? if (snr_check != ucComMF522Bufi) status = MI_ERR

9、; SetBitMask(CollReg,0x80); /CollRegCollReg 在106kbps良好的防冲突情况下该位置1 return status;/功 能:选定卡片/参数说明: pSnrIN:卡片序列号,4字节/返 回: 成功返回MI_OK/char PcdSelect(unsigned char *pSnr) char data status; unsigned char data i; unsigned int data unLen; unsigned char data ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_ANTICOLL

10、1; ucComMF522Buf1 = 0x70; ucComMF522Buf6 = 0; for (i=0; i4; i+) ucComMF522Bufi+2 = *(pSnr+i); ucComMF522Buf6 = *(pSnr+i); CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf7); /# ClearBitMask(Status2Reg,0x08);/清零MFcryon status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen); if (status =

11、MI_OK) & (unLen = 0x18) status = MI_OK; else status = MI_ERR; return status;/功 能:验证卡片密码/参数说明: auth_modeIN: 密码验证模式/ 0x60 = 验证A密钥/ 0x61 = 验证B密钥 / addrIN:块地址/ pKeyIN:密码/ pSnrIN:卡片序列号,4字节/返 回: 成功返回MI_OK/ char PcdAuthState(unsigned char data auth_mode,unsigned char data addr,unsigned char *pKey,unsigned

12、char *pSnr) char data status; unsigned int data unLen; unsigned char data i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = 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);

13、/ memcpy(&ucComMF522Buf8, pSnr, 4); status = PcdComMF522(PCD_AUTHENT,ucComMF522Buf,12,ucComMF522Buf,&unLen); if (status != MI_OK) | (!(ReadRawRC(Status2Reg) & 0x08) status = MI_ERR; return status;/功 能:读取M1卡一块数据/参数说明: addrIN:块地址/ pDataOUT:读出的数据,16字节/返 回: 成功返回MI_OK/ char PcdRead(unsigned char data add

14、r,unsigned char *pData) char data status; unsigned int data unLen; unsigned char data i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_READ; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status = MI_OK

15、) & (unLen = 0x90) / memcpy(pData, ucComMF522Buf, 16); for (i=0; i16; i+) *(pData+i) = ucComMF522Bufi; else status = MI_ERR; return status;/功 能:写数据到M1卡一块/参数说明: addrIN:块地址/ pDataIN:写入的数据,16字节/返 回: 成功返回MI_OK/ char PcdWrite(unsigned char data addr,unsigned char *pData) char data status; unsigned int da

16、ta unLen; unsigned char data i,ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_WRITE; ucComMF522Buf1 = addr; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 & 0x0F) != 0x0A) sta

17、tus = MI_ERR; if (status = MI_OK) /memcpy(ucComMF522Buf, pData, 16); for (i=0; i16; i+) ucComMF522Bufi = *(pData+i); CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf16); status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen); if (status != MI_OK) | (unLen != 4) | (ucComMF522Buf0 & 0x0

18、F) != 0x0A) status = MI_ERR; return status;/功 能:命令卡片进入休眠状态/返 回: 成功返回MI_OK/char PcdHalt(void) char data status; unsigned int data unLen; unsigned char data ucComMF522BufMAXRLEN; ucComMF522Buf0 = PICC_HALT; ucComMF522Buf1 = 0; CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf2); status = PcdComMF522(PCD_TRAN

19、SCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen); return MI_OK;/用MF522计算CRC16函数/void CalulateCRC(unsigned char *pIndata,unsigned char data len,unsigned char *pOutData) unsigned char data i,n; ClearBitMask(DivIrqReg,0x04); WriteRawRC(CommandReg,PCD_IDLE); /取消当前命令 SetBitMask(FIFOLevelReg,0x80); /FlushBuff

20、er 清除ErrReg 的标志位 for (i=0; ilen; i+) WriteRawRC(FIFODataReg, *(pIndata+i); WriteRawRC(CommandReg, PCD_CALCCRC); i = 0xFF; do n = ReadRawRC(DivIrqReg); i-; while (i!=0) & !(n&0x04); /当CRCIRq 所有数据被处理完毕该位置位 pOutData0 = ReadRawRC(CRCResultRegL); /显示计算出来的CRC值 pOutData1 = ReadRawRC(CRCResultRegM);/功 能:复位R

21、C522/返 回: 成功返回MI_OK/char PcdReset(void) /PORTD|=(1RC522RST); SET_RC522RST; delay_ns(10); /PORTD&=(1RC522RST); CLR_RC522RST; delay_ns(10); /PORTD|=(1RC522RST); SET_RC522RST; delay_ns(10); WriteRawRC(CommandReg,PCD_RESETPHASE);/#define PCD_RESETPHASE 0x0F /复位 delay_ns(10); WriteRawRC(ModeReg,0x3D); /和

22、Mifare卡通讯,CRC初始值0x6363 WriteRawRC(TReloadRegL,30); /定时器的低8位数据, WriteRawRC(TReloadRegH,0); /定时器的高8位数据, WriteRawRC(TModeReg,0x8D); /定时器模式寄存器,定时器减值计数 WriteRawRC(TPrescalerReg,0x3E); /实际值是OXD3E 这部分主要是设置定时器寄存器,# WriteRawRC(TxAutoReg,0x40);/必须要 ,设置逻辑1,强制100%ASK调制 return MI_OK;/设置RC522的工作方式 /char M500PcdCo

23、nfigISOType(unsigned char data type) if (type = A) /ISO14443_A ClearBitMask(Status2Reg,0x08); /状态2寄存器 WriteRawRC(ModeReg,0x3D);/3F /和Mifare卡通讯,CRC初始值0x6363 WriteRawRC(RxSelReg,0x86);/84 选择内部接收器设置,内部模拟部分调制信号,发送数据后,延迟6个位时钟,接收 WriteRawRC(RFCfgReg,0x7F); /4F 配置接收器 48dB最大增益 WriteRawRC(TReloadRegL,30);/tmoLength);/ TReloadVal = h6a =tmoLength(dec) WriteRawRC(TReloadRegH,0); /实际值是OXD3E 这部分主要是设置定时器寄存器,# WriteRawRC(TModeReg,0x8D); WriteRawRC(TPrescalerReg,0x3E); delay_ns(1000); PcdAntennaOn(); else return -1; return MI_OK;/功 能:读RC522寄存器/参数说明:AddressIN:寄存器地址

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1