方案:单片机处于低功耗模式,MS522处于软掉电模式。单片机用RTC定时(比如每隔1s)唤醒,单片机唤醒后唤醒MS522寻卡。寻到卡则做进一步处理,否则MS522继续进入软掉电模式,单片机进入低功耗模式。

if ( == flag_rtc_wakeup)
{
flag_rtc_wakeup = ; pcd_soft_powerup(); if (pcd_fast_detect() == true)
{
//todo
} pcd_soft_powerdown();
}
void pcd_soft_powerdown(void)
{
write_rawrc(CommandReg, PCD_NOCMDCHANGE | ( << ));
} void pcd_soft_powerup(void)
{
uint8_t count = ; write_rawrc(CommandReg, PCD_NOCMDCHANGE & (~( << )));
do
{
// Wait for the PowerDown bit in CommandReg to be cleared (max 3x10us)
delay_10us();
} while ((read_rawrc(CommandReg) & ( << )) && (++count) < );
}

手册相关内容

//快速寻卡函数
bool pcd_fast_detect(void)
{
uint8_t valid_bits = ;
uint8_t command = PICC_REQIDL;
uint8_t wait_irq = 0x30; // RxIRq and IdleIRq
uint8_t n;
uint16_t i; clear_bit_mask(CollReg, 0x80); // valuesAfterColl=1 => Bits received after collision are cleared. // write_rawrc(CommandReg, PCD_IDLE); // Stop any active command.
write_rawrc(ComIrqReg, 0x7F); // Clear all seven interrupt request bits
set_bit_mask(FIFOLevelReg, 0x80); // FlushBuffer = 1, FIFO initialization
write_rawrc(FIFODataReg, command); // Write sendData to the FIFO
write_rawrc(BitFramingReg, valid_bits); // Bit adjustments
write_rawrc(CommandReg, PCD_TRANSCEIVE); // Execute the command
set_bit_mask(BitFramingReg, 0x80); // StartSend=1, transmission of data starts i = ; //根据时钟频率修改
while ()
{
n = read_rawrc(ComIrqReg); // ComIrqReg[7..0] bits are: Set1 TxIRq RxIRq IdleIRq HiAlertIRq LoAlertIRq ErrIRq TimerIRq
if (n & wait_irq)
{ // One of the interrupts that signal success has been set.
//debug("t\r\n");
break;
}
if (n & 0x01)
{ // Timer interrupt - nothing received in time
//debug("f\r\n");
return false;
}
if (--i == )
{ // The emergency break. If all other conditions fail we will eventually terminate on this one. Communication with the MFRC522 might be down.
//debug("i\r\n");
return false;
}
} return true;
}
void pcd_reset(void)
{
RC522_RST_ON;
write_rawrc(CommandReg, PCD_RESETPHASE);
uint8_t count = ;
do
{
// Wait for the PowerDown bit in CommandReg to be cleared (max 3x40us)
delay_10us();
} while ((read_rawrc(CommandReg) & ( << )) && (++count) < );
// TAuto=1; timer starts automatically at the end of the transmission in all communication modes at all speeds.10us
write_rawrc(TModeReg, 0x80);
write_rawrc(TPrescalerReg, 0x43); // 10μs
// Reload timer with 0x1e = 30, ie 0.3ms before timeout.
write_rawrc(TReloadRegH, 0x00);
write_rawrc(TReloadRegL, 0x1e); write_rawrc(TxAutoReg, 0x40);
write_rawrc(ModeReg, 0x3d); //和Mifare卡通讯,CRC初始值0x6363 pcd_antenna_on();
}

参考资料:

MS522手册:https://wenku.baidu.com/view/6f5bcabcbcd126fff6050b77

关于软掉电模式的讨论:https://github.com/miguelbalboa/rfid/issues/269

软掉电模式DEMO:https://github.com/akellai/rfid-music/blob/master/RFID_ProMini/RFID_ProMini.ino

MS522低功耗寻卡的更多相关文章

  1. 13.56mhz自动寻卡功能业界最低功耗:SI522

    随着智能门锁的不断火爆,很多智能门锁产商为了让产品的功耗下降下来,都在不断寻找能自动寻卡的13.56mhz.今天我就为大家推荐一款13.56mhz芯片自动寻卡业界最低功耗,不仅是业界最低另外还完全PI ...

  2. 抗干扰性极强非接触式读卡13.56mhz芯片:SI522

    由于智能门锁产品不断地火爆,市场上的不断出现破解的方法.对此中科微联合深圳市动能世纪科技有限公司不断满足市场需求,推出一款抗干扰性极强的13.56mhz芯片. 该芯片出了抗干扰性强以外还直接PIN2P ...

  3. OBU设备非接触式读卡方案:SI522

    传统收费站将成历史!全部转为ETC系统 当高速人工收费已经成为我们驾驶出行的习惯后,我们发现,高速人工收费带来低效率.长等待以及落后性等缺点逐渐给人们出行带来不便.伴随着我国汽车保有量的逐年递增,高速 ...

  4. 功耗极低非接触 13.56mhz读卡芯片:SI522

    众所周知13.56mhz是高频,一般用于防伪,做到成品非常薄.在智能门锁以及RFID读卡器是非常多人采用的,不管是在读卡距离.读卡灵敏度都是非常好的.现在智能门锁的竞争性很大,大多厂商及方案商都慢慢往 ...

  5. 关于 MFRC522引脚功能图

    MFRC522是属于13.56mhz芯片.另外SI522也是13.56mhz芯片,SI522 PIN对PIN完全兼容MFRC522,并且软硬件兼容,且引脚功能图都是一样的,功能方面比MFRC522多A ...

  6. 13.56Mhz SI522兼容MFRC522的资料以及对比性能

    (13.56Mhz芯片) SI522是一颗专门替代MFRC522/FM17522,PIN对PIN 完全软硬件兼容.相对于MFRC522,SI522完全替换,不需要做任何更改,同时接受模式下功耗低10m ...

  7. 非接触式读卡器13.56MHZ芯片:SI522

    对于现在的智能锁市场需求竞争极大,中小型厂家月销量更是在慢慢增长.刷卡功能更是智能锁的标配功能,当然13.56Mhz芯片现在讲究的就是超低功耗,为满足市场需求专注于物联网多年的中科微强力推出了13.5 ...

  8. ETC系列产品非接触式读卡器方案:SI522

    随着科技的不断发展,出行上高速这是非常寻常的事.但是在很多节假日高峰时期,在高速路口塞车缴费给很多车主造成很大的烦心.为了解决这一系列的问题,科技发明了ETC这种便捷式缴费技术,让车主们顺畅通过高速路 ...

  9. 关于SI522替代FM17522和MFRC522的资料对比

    以下是SI522与FM17522.MFRC522的对比参数: SI522是完全PIN对PIN软硬件兼容MFRC522.CV520.FM17522,另外我们可提供一对一技术支持解决客户所遇到的问题: 1 ...

随机推荐

  1. Django Redis验证码 密码 session 实例

    1.settings CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCach ...

  2. Java对于表达式中的自动类型提升

    1 表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如: short s1 = 1; s1 = ...

  3. Jmeter入门--Badboy使用教程(转)

    一.Badboy下载安装 感谢smxwn分享,转载地址:http://blog.csdn.net/wn_68/article/details/45872269 下载地址:http://www.badb ...

  4. javascript中return的作用

    这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数 ...

  5. Python学习---ModelForm拾遗180325

    ModelForm适用于前台验证和后台直接操作数据库的前后台未做分离,可以一次执行验证和保存数据的场景. 注意:  1.  ModelForm里面没有删除方法,需要手动删除内容 2. ModelFor ...

  6. Composer 的简介、安装及使用

    Composer的简介 简单说,Composer 就是一个安装包管理工具,服务于 PHP 生态系统.它包括了两个部分:Composer 和 Packagist. Composer Composer 是 ...

  7. linux中ftp提示--553 Could not create file

    今天在阿里云的linux上搭建ftp服务的时候,搭建成功之后,上传文件时总提示553 Could not create file,找了半天原因,终于解决了 ftp主目录为/home/myftp /ho ...

  8. PHP常用符号和函数

    (转)最近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号,三个小于符号,eot,eod,echo示例,print示例等,突然间 发现用这么久的PHP了,竟然连PHP的基本符号都没有认 ...

  9. debian 7 linux 安装jdk出现Error occurred during initialization of VM java/lang/NoClassDefFoun

    debian 7 linux 安装jdk出现Error occurred during initialization of VM java/lang/NoClassDefFoun 这两天一直研究lin ...

  10. Android 高级UI设计笔记24:Android 夜间模式之 WebView 实现白天 / 夜间阅读模式 (使用JavaScript)

    1. 问题引入: 前面我们是使用方法 降低屏幕亮度(不常用) 和 替换theme,两者都是针对Activity的背景进行白天.夜间模式的交换,但是如果我们显示的是Html的内容,这个时候改怎么办? 分 ...