77范文网 - 专业文章范例文档资料分享平台

RDID射频识别读写器 - 图文(9)

来源:网络收集 时间:2020-05-18 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

unsigned char data i,n;

ClearBitMask(DivIrqReg,0x04); WriteRawRC(CommandReg,PCD_IDLE); SetBitMask(FIFOLevelReg,0x80); for (i=0; i

{ WriteRawRC(FIFODataReg, *(pIndata+i)); } WriteRawRC(CommandReg, PCD_CALCCRC); i = 0xFF; do {

n = ReadRawRC(DivIrqReg); i--; }

while ((i!=0) && !(n&0x04));

pOutData[0] = ReadRawRC(CRCResultRegL); pOutData[1] = ReadRawRC(CRCResultRegM); }

///////////////////////////////////////////////////////////////////// //功 能:复位RC522 //返 回: 成功返回MI_OK

///////////////////////////////////////////////////////////////////// char PcdReset(void) {

//PORTD|=(1<

//PORTD&=~(1<

//PORTD|=(1<

WriteRawRC(CommandReg,PCD_RESETPHASE); delay_ns(10);

WriteRawRC(ModeReg,0x3D); //和Mifare卡通讯,CRC初始值0x6363 WriteRawRC(TReloadRegL,30); WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D);

WriteRawRC(TPrescalerReg,0x3E);

WriteRawRC(TxAutoReg,0x40);//必须要

32

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

return MI_OK; }

////////////////////////////////////////////////////////////////////// //设置RC632的工作方式

////////////////////////////////////////////////////////////////////// char M500PcdConfigISOType(unsigned char data type) {

if (type == 'A') //ISO14443_A {

ClearBitMask(Status2Reg,0x08); WriteRawRC(ModeReg,0x3D);//3F WriteRawRC(RxSelReg,0x86);//84 WriteRawRC(RFCfgReg,0x7F); //4F

WriteRawRC(TReloadRegL,30);//tmoLength);// TReloadVal = 'h6a =tmoLength(dec) WriteRawRC(TReloadRegH,0); WriteRawRC(TModeReg,0x8D);

WriteRawRC(TPrescalerReg,0x3E); delay_ns(1000); PcdAntennaOn(); }

else{ return -1; }

return MI_OK; }

///////////////////////////////////////////////////////////////////// //功 能:读RC632寄存器

//参数说明:Address[IN]:寄存器地址 //返 回:读出的值

///////////////////////////////////////////////////////////////////// unsigned char ReadRawRC(unsigned char data Address) {

unsigned char data ucAddr; unsigned char data ucResult=0; CLR_SPI_CS;

ucAddr = ((Address<<1)&0x7E)|0x80;

SPIWriteByte(ucAddr); ucResult=SPIReadByte(); SET_SPI_CS; return ucResult; }

///////////////////////////////////////////////////////////////////// //功 能:写RC632寄存器

33

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

//参数说明:Address[IN]:寄存器地址 // value[IN]:写入的值

///////////////////////////////////////////////////////////////////// void WriteRawRC(unsigned char data Address, unsigned char data value) {

unsigned char data ucAddr;

CLR_SPI_CS;

ucAddr = ((Address<<1)&0x7E);

SPIWriteByte(ucAddr); SPIWriteByte(value); SET_SPI_CS; }

///////////////////////////////////////////////////////////////////// //功 能:置RC522寄存器位 //参数说明:reg[IN]:寄存器地址 // mask[IN]:置位值

///////////////////////////////////////////////////////////////////// void SetBitMask(unsigned char data reg,unsigned char data mask) {

char data tmp = 0x0; tmp = ReadRawRC(reg);

WriteRawRC(reg,tmp | mask); // set bit mask }

///////////////////////////////////////////////////////////////////// //功 能:清RC522寄存器位 //参数说明:reg[IN]:寄存器地址 // mask[IN]:清位值

///////////////////////////////////////////////////////////////////// void ClearBitMask(unsigned char data reg,unsigned char data mask) {

char data tmp = 0x0; tmp = ReadRawRC(reg);

WriteRawRC(reg, tmp & ~mask); // clear bit mask }

///////////////////////////////////////////////////////////////////// //功 能:通过RC522和ISO14443卡通讯 //参数说明:Command[IN]:RC522命令字

// pInData[IN]:通过RC522发送到卡片的数据 // InLenByte[IN]:发送数据的字节长度 // pOutData[OUT]:接收到的卡片返回数据

34

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

// *pOutLenBit[OUT]:返回数据的位长度

///////////////////////////////////////////////////////////////////// char PcdComMF522(unsigned char data Command, unsigned char *pInData,

unsigned char data InLenByte, unsigned char *pOutData, unsigned int *pOutLenBit) {

char data status = MI_ERR;

unsigned char data irqEn = 0x00; unsigned char data waitFor = 0x00; unsigned char data lastBits; unsigned char data n; unsigned int data i; switch (Command) {

case PCD_AUTHENT: irqEn = 0x12; waitFor = 0x10; break;

case PCD_TRANSCEIVE: irqEn = 0x77; waitFor = 0x30; break; default: break; }

WriteRawRC(ComIEnReg,irqEn|0x80); ClearBitMask(ComIrqReg,0x80); WriteRawRC(CommandReg,PCD_IDLE); SetBitMask(FIFOLevelReg,0x80);

for (i=0; i

{ WriteRawRC(FIFODataReg, pInData[i]); } WriteRawRC(CommandReg, Command);

if (Command == PCD_TRANSCEIVE)

{ SetBitMask(BitFramingReg,0x80); }

//i = 600;//根据时钟频率调整,操作M1卡最大等待时间25ms i = 2000; do

35

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

{

n = ReadRawRC(ComIrqReg); i--; }

while ((i!=0) && !(n&0x01) && !(n&waitFor)); ClearBitMask(BitFramingReg,0x80);

if (i!=0) {

if(!(ReadRawRC(ErrorReg)&0x1B)) {

status = MI_OK;

if (n & irqEn & 0x01)

{ status = MI_NOTAGERR; } if (Command == PCD_TRANSCEIVE) {

n = ReadRawRC(FIFOLevelReg);

lastBits = ReadRawRC(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

{ pOutData[i] = ReadRawRC(FIFODataReg); } } } else

{ status = MI_ERR; } }

SetBitMask(ControlReg,0x80); // stop timer now WriteRawRC(CommandReg,PCD_IDLE); return status; }

///////////////////////////////////////////////////////////////////// //开启天线

//每次启动或关闭天线发射之间应至少有1ms的间隔

36

广西科技大学(筹) 基于单片机的RFID读写器的软件设计

///////////////////////////////////////////////////////////////////// void PcdAntennaOn(void) {

unsigned char data i;

i = ReadRawRC(TxControlReg); if (!(i & 0x03)) {

SetBitMask(TxControlReg, 0x03); } }

///////////////////////////////////////////////////////////////////// //关闭天线

///////////////////////////////////////////////////////////////////// void PcdAntennaOff(void) {

ClearBitMask(TxControlReg, 0x03); }

37

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库RDID射频识别读写器 - 图文(9)在线全文阅读。

RDID射频识别读写器 - 图文(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/1053098.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: