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 ...
随机推荐
- lodop 代码注释
LODOP.SET_PRINT_PAGESIZE(1,1000,1500,""); /*1,纵向输出;1000,宽度;1500,高度*:单位为0.1毫米/LODOP.ADD_PR ...
- Oracle获取session的trace
1. 使用参数SQL_TRACE 下面是官网对此参数的说明 SQL_TRACE Property Description Parameter type Boolean Default value fa ...
- 单机安装hive和presto
问题: 公司最近在搞presto,主要是分析一下presto和hive的查询大数据量的性能对比: 我先把我的对比图拿出来(50条数据左右)针对同一条sql(select * from employee ...
- 软工读书笔记 week 8 —— 《疯狂的程序员》
这次接着上一次的进度继续阅读,并将其中感悟较深的几点记录如下. 程序员是一个幕后工作者 书中绝影给医院写软件,而医生(用户)只是评价这个软件好不好用,而不会去评价写这个软件的程序员优不优秀. ...
- Oracle EBS PO 接收事务处理查不到对应的数据
1. 有一种情况是采购订单的借记账户不对 不匹配OU 2. 有可能是因为接口表卡住了 PENDING状态的把对应的数据删除掉即可 3. 接收时发生异常那个,丢失了接收头,rcv_shipment_h ...
- I/O复用及epoll基础知识
IO multiplexing IO multiplexing这个词可能有点陌生,但是如果我说select,epoll,大概就都能明白了.有些地方也称这种IO方式为event driven IO.我们 ...
- C#.net XML的序列化与反序列化
/// <summary> /// 将一个对象序列化为XML字符串 /// </summary> /// <param name="o">要序列 ...
- 封装CoreGraphics的API简化绘图操作
封装CoreGraphics的API简化绘图操作 效果 说明 1. 将CoreGraphics的API接口抽象为对象,让绘图变得简单易懂 2. 简化常用的绘制操作 3. 源码长期更新 源码 https ...
- zabbix 监控iptables
参看的文章链接忘了...... yum -y install iptstate 1.脚本位置和内容 [root@web1 scripts]# pwd /etc/zabbix/scripts [root ...
- PAT 1001A+B Format
Github 1001 题目速览 1.解题的思路过程 认真读题,题目为A+BFormat,简单的计算a+b问题,特殊在于输出的形式. 输入形式为每个输入文件包含一个测试样例,每个测试样例仅包含一对整型 ...