• 大小: 14KB
    文件类型: .7z
    金币: 1
    下载: 0 次
    发布日期: 2021-05-05
  • 语言: 其他
  • 标签: rc522  

资源简介

里面是之前写过的关于rc522的一点使用方法,也参考过一些文章等资料

资源截图

代码片段和文件信息

/*
 * RFID.cpp - Library to use ARDUINO RFID MODULE KIT 13.56 MHZ WITH TAGS SPI W AND R BY COOQROBOT.
 * based on code Dr.Leong   ( WWW.B2CQSHOP.COM )
 * Created by Miguel Balboa Jan 2012.
 * Released into the public domain.
 * 整理者:极客工坊bg1lsy (lsy@sogou.com)
 * 整理时间:2013.05.25
 */

/******************************************************************************
 * 包含文件
 ******************************************************************************/
#include 
#include 

/******************************************************************************
 * 构造 RFID
 * int chipSelectPin RFID /ENABLE pin
 ******************************************************************************/
RFID::RFID(int chipSelectPin int NRSTPD)
{
  _chipSelectPin = chipSelectPin;
  _NRSTPD = NRSTPD;

  pinMode(_chipSelectPinOUTPUT);     // 设置管脚_chipSelectPin为输出并连接到模块使能口
  digitalWrite(_chipSelectPin LOW);


  pinMode(_NRSTPDOUTPUT);            // 设置管脚NRSTPD为输出,非重置或掉电
  digitalWrite(_NRSTPD HIGH);
}

/******************************************************************************
 * 用户 API
 ******************************************************************************/

/******************************************************************************
 * 函 数 名:isCard
 * 功能描述:寻卡
 * 输入参数:无
 * 返 回 值:成功返回ture 失败返回false
 ******************************************************************************/
bool RFID::isCard()
{
  unsigned char status;
  unsigned char str[MAX_LEN];

  //寻天线区内未进入休眠状态
  status = MFRC522Request(PICC_REQIDL str);
  if (status == MI_OK)
    return true;
  else
    return false;
}

/******************************************************************************
 * 函 数 名:readCardSerial
 * 功能描述:返回卡的序列号 4字节
 * 输入参数:无
 * 返 回 值:成功返回ture 失败返回false
 ******************************************************************************/
bool RFID::readCardSerial(){

  unsigned char status;
  unsigned char str[MAX_LEN];
  
  // 防冲撞,返回卡的序列号 4字节,存入serNum中
  status = anticoll(str);
  memcpy(serNum str 5);
  
  if (status == MI_OK)
    return true;
  else
    return false;
}

/******************************************************************************
 * 函 数 名:init
 * 功能描述:初始化RC522
 * 输入参数:无
 * 返 回 值:无
 ******************************************************************************/
void RFID::init()
{
  digitalWrite(_NRSTPDHIGH);

  //复位RC522
  reset();

  //Timer: TPrescaler*TreloadVal/6.78MHz = 15ms
  writeMFRC522(TModeReg 0x8D);   //Tauto=1; f(Timer) = 6.78MHz/TPreScaler 10001101
  writeMFRC522(TPrescalerReg 0x3E);  //TModeReg[3..0] + TPrescalerReg 00111110
  writeMFRC522(TReloadRegL 30);
  writeMFRC522(TReloadRegH 0);
  
  writeMFRC522(TxAutoReg 0x40);    //100%ASK
  writeMFRC522(ModeReg 0x3D);    // CRC valor inicial de 0x6363  00 11 11 01

  //ClearBitMask(Status2Reg 0x08); //MFCrypto1On=0
  //writeMFRC522(RxSelReg 0x86);   //RxWait = RxSelReg[5..0]
  //writeMFRC522(RFCfgReg 0x7F);     //RxGain = 48dB

  antennaOn();    //打开天线
}

/**********

评论

共有 条评论