这两天项目在收尾阶段,工作比较轻松,闲暇时间也比较多。所谓活到老学到老(事太少了),打算学点与生活密切相关的,就决定做个RC522的门禁系统。但学习源码时发现个问题,找遍全网都没答案。最后自己仔细看了下手册勉强明白了,所以发出来分享一下,有错的地方欢迎指正:
如图是RC522复位函数的一部分,函数的第一个参数是寄存器地址命令的宏定义,第二个参数是写到寄存器的值。查看RC522数据手册后了解了TReloadRegL,TReloadRegH是写定时器的高低位,TModeReg寄存器的低四位与TPrescalerReg是分频系数。搜一下网上这部分内容,没有人解释一下为什么向定时器写30,分频系数写0xD3E(3390)。
预分频寄存器写0xD3E(3390),3390/6.78MHz=0.5ms。
计数寄存器写30,30x0.5ms=15ms;
但是为什么是15ms我还是搞不清,根据手册可能是复位后需要的一个启动时间。
但是15ms与振荡器启动时间相去甚远,搞不懂为什么这么大。有朋友愿意讨论一下的话就再好不过了。目前还只是在研究代码,RC522模块还没到。到时候可以测试一下,看看把这个值改小会有什么影响。