MFRC522的管脚的介绍表(2): 符号 OSCIN IRQ SIGIN TX1 TVDD TX2 TVSS DVSS D1~D7 SDA EA I2C DVDD AUX1 AUX2 AVSS RX VMID 管脚 类型 21 23 7 11 12 13 4 24 32 1 3 19 20 18 17 16 I O I O O PWR O PWR I I I PWR O O PWR I PWR I O PWR PWR 描述 晶振输入 中断请求,用来输出一个中断事件 信号输入 信号输出 发送器1,传递调制的13.56MHZ的载波信号 发送器电源,给输出级TX1和TX2供电 发送器2,传递调制的13.56MHZ的载波信号 发送器地,TX1,TX2输出级地 数字地 不同接口数据管脚,可以做SPI、I2C、UART 串行数据线 外部地址,用来编码I2C I2C使能 数字电源 辅助输出,用于测试 模拟地 接收器输入,接收RF信号 内部参考电压 不复位和掉电,低电平有效 晶振输出:振荡器的反相放大输出 不连接,三态管脚 管脚电源 管脚电源地 SIGOUT 8 10,14 PWR 25~31 I/O NRSTPD 6 OSCOUT 22 TRSTPIN 9 PVDD PVSS 2 5 表(2)MFRC522的管脚 MFRC522支持的三种接口定义如表(3)所示: 表(3)三种通信接口方式
MFRC522采用SPI通信时序图,如图(10)所示
图(10)MFRC522 SPI通信时序图
兼容SPI接口读数据操作:
MOSI和MISO的字节顺序见表(4)
表(4)字节顺序表
顺序表兼容SPI接口写数据操作: MOSI和MISO的字节顺序见表(5)
表(5)字节顺序表
第四章 程序设计与实现
本系统的程序设计采用模块化的设计方案,主要由初始化模块、读卡模块、考勤统计模块和显示模块组成。主程序的流程图如图4-1所示:
图4-1主程序流程图
图4-2系统框图
程序代码:
#include \#include \#include \e.h\#include \#include \#include
GPIO_InitTypeDef GPIO_InitStructure; ErrorStatus HSEStartUpStatus;
vu8 ErrCnt=0;
vu8 KeyVal_Now[4],KeyCnt=0,TimeSec=0,SysPage=0; vu16 KeyVal_Real[4]={1,2,3}; #define Max_User 10 #define error 2
vu8 searchnum=0;
unsigned int SearchNumber=0; unsigned int clk0=0;
vu8 str[3]={0,'\\0','\\0'}; vu16 SysDate[256]; #define FALSE 0 #define TURE 1 //状态定义表 #define on 1 #define off 0
#define MAX_NUMBER 63
vu8 modeflag=0,clearallflag=0,changeflag=0 //Verify Password :验证设备握手口令 vu8 VPWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b}; //回送12个
//设置设备握手口令 vu8 STWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a}; //回送12个
//GetImage :探测手指并从传感器上读入图像 vu8 GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05}; //回送12个
//Gen Templet1 :根据原始图像生成指纹特征1 vu8
GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个