MS522低功耗寻卡
方案:单片机处于低功耗模式,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低功耗寻卡的更多相关文章
- 13.56mhz自动寻卡功能业界最低功耗:SI522
随着智能门锁的不断火爆,很多智能门锁产商为了让产品的功耗下降下来,都在不断寻找能自动寻卡的13.56mhz.今天我就为大家推荐一款13.56mhz芯片自动寻卡业界最低功耗,不仅是业界最低另外还完全PI ...
- 抗干扰性极强非接触式读卡13.56mhz芯片:SI522
由于智能门锁产品不断地火爆,市场上的不断出现破解的方法.对此中科微联合深圳市动能世纪科技有限公司不断满足市场需求,推出一款抗干扰性极强的13.56mhz芯片. 该芯片出了抗干扰性强以外还直接PIN2P ...
- OBU设备非接触式读卡方案:SI522
传统收费站将成历史!全部转为ETC系统 当高速人工收费已经成为我们驾驶出行的习惯后,我们发现,高速人工收费带来低效率.长等待以及落后性等缺点逐渐给人们出行带来不便.伴随着我国汽车保有量的逐年递增,高速 ...
- 功耗极低非接触 13.56mhz读卡芯片:SI522
众所周知13.56mhz是高频,一般用于防伪,做到成品非常薄.在智能门锁以及RFID读卡器是非常多人采用的,不管是在读卡距离.读卡灵敏度都是非常好的.现在智能门锁的竞争性很大,大多厂商及方案商都慢慢往 ...
- 关于 MFRC522引脚功能图
MFRC522是属于13.56mhz芯片.另外SI522也是13.56mhz芯片,SI522 PIN对PIN完全兼容MFRC522,并且软硬件兼容,且引脚功能图都是一样的,功能方面比MFRC522多A ...
- 13.56Mhz SI522兼容MFRC522的资料以及对比性能
(13.56Mhz芯片) SI522是一颗专门替代MFRC522/FM17522,PIN对PIN 完全软硬件兼容.相对于MFRC522,SI522完全替换,不需要做任何更改,同时接受模式下功耗低10m ...
- 非接触式读卡器13.56MHZ芯片:SI522
对于现在的智能锁市场需求竞争极大,中小型厂家月销量更是在慢慢增长.刷卡功能更是智能锁的标配功能,当然13.56Mhz芯片现在讲究的就是超低功耗,为满足市场需求专注于物联网多年的中科微强力推出了13.5 ...
- ETC系列产品非接触式读卡器方案:SI522
随着科技的不断发展,出行上高速这是非常寻常的事.但是在很多节假日高峰时期,在高速路口塞车缴费给很多车主造成很大的烦心.为了解决这一系列的问题,科技发明了ETC这种便捷式缴费技术,让车主们顺畅通过高速路 ...
- 关于SI522替代FM17522和MFRC522的资料对比
以下是SI522与FM17522.MFRC522的对比参数: SI522是完全PIN对PIN软硬件兼容MFRC522.CV520.FM17522,另外我们可提供一对一技术支持解决客户所遇到的问题: 1 ...
随机推荐
- Eclipse 校验取消
eclipse Multiple annotations found at this line错误,eclipse开发过程中,一些XML配置文件会报错,但是这些其实不是错,飘红的原因是因为eclips ...
- MYSQL数据类型 表基本操作 表记录增删改 单表查询
一.数据类型 常用的数据类型如下: 整数:int,bit 小数:decimal 字符串:varchar,char 日期时间: date, time, datetime 枚举类型(enum) 特别说明的 ...
- AWS CSAA -- 03 Identity Access Management IAM
009 IAM 101 012 IAM Summary 问题汇总: Lab1:对root account进行加固 Lab 2:利用CloudWatch设置BillingAlarm
- Leetcode题解之Container With Most Water
1.题目描述 2.题目分析 首先,这个题可以使用暴力解法,时间复杂度是O(n^2),这个显然是最容易的做法,但是效率不够高,题目提供了一种解法,使用两个指针,一个从头向尾部,另外一个从尾部向头部,每一 ...
- C# .Net动态调用webService
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Ne ...
- IIS6与IIS7中的w3wp工作进程
在IIS6中,每一个网站都有对应的应用程序池,在应用程序池有运行着网站的Application,在默认情况下,所有的网站的应用程序都会分配到默认的应用程序池当中, 当然,我们可以新建一个应用程序池 ...
- Scala编程之访问修饰符
private ,protected,public,在不加前两者声明时为public为公共式访问: private为私有式访问:protected为家族式访问,与Java一致. object Oute ...
- 使用sqoop过程
With Sqoop, you can import data from a relational database system or a mainframe(主机) into HDFS. The ...
- vmvare安装系统提示vmci.sys 版本不正确解决方法
无法获取vmci驱动程序版本:参数不正确解决 无法获取vmci驱动程序版本:参数不正确. 驱动程序vmci.sys版本不正确. 解决办法: 1,创建好虚拟机之后,别打开电源,然后到建好的虚拟机文件夹里 ...
- Ubuntu下查看自己的GPU型号
1.在命令行中输入:lspci 即可看到当前显卡型号. 2.Ubuntu 14.04 安装 Nvidia 私有驱动 sudo apt-get install nvidia-331 3.进行双显卡切换n ...