实验目的
- 了解RFID相关知识。
- 掌握RFID模块自动识别IC卡工作原理。
实验环境
- 软件:IAR SWSTM8 1.30。
- 硬件:RFID射频模块,电子标签,ST-Link。
实验内容
- 熟悉实验箱的操作流程,认识RFID模块。
- 用 ST-LINK烧写、调试程序。
- 编程使用RFID模块,完成自动识别读取IC卡卡号功能。
实验步骤
实验代码
1) 初始化MFRC531
- 若MFRC531_Init()==MI_OK,则蜂鸣声响200ms,并亮灯。
if(MFRC531_Init() == MI_OK)
{
BEEP_On();
delay_ms(200);
BEEP_Off();
LED_On();
}
else
{
BEEP_On();
delay_ms(200);
BEEP_Off();
delay_ms(200);
BEEP_On();
delay_ms(200);
BEEP_Off();
LED_Off();
while(1);
}
2) 寻卡
- 若未寻到卡,则tx_buf的5至12位皆为0;若寻到卡,则tx_buf的第5位置为0x01,7至10位用于保存卡序列号,并发送数据帧。
while(1)
{
if(MI_OK != PcdRequest(req_code[0],atq))
{
tx_buf[5] = 0;
tx_buf[6] = 0;
tx_buf[7] = 0;
tx_buf[8] = 0;
tx_buf[9] = 0;
tx_buf[10] = 0;
tx_buf[11] = 0;
tx_buf[12] = 0;
delay_ms(400);
}
else
{
if(MI_OK == PcdAnticoll(g_cSNR))
{
tx_buf[5] = 0x01;
tx_buf[6] = 0;
tx_buf[7] = g_cSNR[0];
tx_buf[8] = g_cSNR[1];
tx_buf[9] = g_cSNR[2];
tx_buf[10] = g_cSNR[3];
tx_buf[11] = 0;
tx_buf[12] = 0;
BEEP_On();
delay_ms(200);
BEEP_Off();
delay_ms(200);
}
}
PcdHalt();
UART2_SendString(tx_buf, 14);
LED_Toggle();
}
硬件连接
- 把RFID模块插到实验箱的主板上的串口
- 把ST-Link配合JTAG仿真器插到标有ST-Link标志的串口上
- 把仿真器一端的USB线插到PC机的USB端口,通过主板上的“加”“减”按键调整要实验的RFID模块(会有黄色LED灯提示),硬件连接完毕。
编译、烧录并测试
- 我们用IAR SWSTM8 1.30软件,打开…\RFID_读卡号实验\Project\MFRC531_ATM8.eww。
- 工程编译:点击“Project”->“Rebuild All”。
- 点击“Rebuild All”进行编译。
- 将卡片放在烧录板上,把程序烧到模块里,点击“ ”中间的Download and Debug进行烧录,完成后听到蜂鸣器响一声。
- 关闭上述已打开程序,打开串口测试软件,将传感器模块连接到串口转USB模块上,将USB2UART模块的USB线连接到PC机的USB端口,然后打开串口工具,配置好串口,波特率115200,8个数据位,一个停止位,无校验位,串口开始工作。
实验结果
- 无卡时串口返回:EE CC FE 01 01 00 00 00 00 00 00 00 00 FF
- 有卡时串口返回:EE CC FE 01 01 01 00 8D D2 0B 51 00 00 FF
![串口返回内容截图](https://i-blog.csdnimg.cn/blog_migrate/9d1a4fe147a9f9de3fc7d9665d2c64ca.jpeg)
- 对于返回内容,前五组(两位为一组,从零开始编号)是固定的,为EE CC FE 01 01;第五组表示是否寻到卡片,若未寻到,则为00,若寻到,则为01;第七到第十组为卡序列号,若未寻到卡,则卡序列号为00 00 00 00,若寻到卡,则输出卡序列号,这里是8D D2 0B 51;最后一组为FF,表示结束;其余组为00。
![此图为示例,卡序列号与上面不同](https://i-blog.csdnimg.cn/blog_migrate/84ff55be1af235a8ddc1ea33f1832641.png)
串口设置
- 将板上的串口用串口线与电脑主机相连,若电脑上没有串口,可以使用串口转usb接口与电脑相连,此时,如果电脑没有激活过这样的端口,则需要激活端口,并记录下该端口号,在串口软件的串口设置中,端口号选择对应的COM号。
- 具体的端口激活可参见网上教程。