【2020意法半导体开发设计大赛】+NFC汽车进入系统
一、前言
这次申请开发板,真是下了很大决心,实在没时间。因为项目上有NFC卡进入车辆的需求,所以先找个开发板试试,主要还是想了解一下NFC的各种标准及功能,方便为项目写需求。
本来计划在上班时间来做这个,可是公司上不了网,软件也装不了。只能偶尔晚上回家后半夜来做了。
二、开箱
ST第一次给邮了一块ST25R3916的开发板,没有给STM32L476RG的MCU板,找了一下我自己库存其他MCU板,发现移植起来还是挺耗时的,反馈给ST后,又给我发了块STM32L476RG。整个开发系统包含的开发板见下图,STM32L476RG开发板一块、ST25R3916开发板一块、NFC卡贴三个。
1.jpg
三、资料下载
去ST官网下载相关资料,在同一页面的资料可以全部勾选,然后一起下载。
2.jpg
UM2616是开发板的软件使用手册。
3.jpg
4.jpg
5.jpg
下面是硬件资源,包括Gerber、BOM、原理图。
7.jpg
下载的文件如下。
8.jpg
UM2615(dm00634930-getting-started-with-the-nfc-card-reader-expansion-board-based-on-st25r3916-for-stm32-and-stm8-nucleos-stmicroelectronics)是开发版的用户手册。st25r3916开发板的外形如下图。
9.jpg
主芯片就是ST25R3916,通讯频率13.56 MHz,带六颗LED,支持NFC-A 、NFC-F 卡模拟,支持ISO14443A 、ISO14443B、ISO 15693标准。
四、开发板调试
首先,将STM32L476RG开发板与ST25R3916开发板连接。见UM2615数据手册1.2,在1.3中写着使用的MCU板为STM32L476RG。
10.jpg
参照手册UM1724(dm00105823-stm32-nucleo64-boards-mb1136-stmicroelectronics),L476RG的引脚如下图所示。
11.jpg
参照UM2615,X-NUCLEO-NFC06A1的PIN脚连接如下图所示。需要连接到Arduino引脚。
12.jpg
13.jpg
连接部分的原理图如下图。
14.jpg
连接好的开发板如下图所示。
15.jpg
参照UM2615,对开发板进行设置。如下图。
16.jpg
要调试开发板还需要有软件环境,我使用了keil。安装好keil后,还需要下载STM32L4xx_DFP.1.4.0 的软件包 ,2.1或者2.4的也都可以。百度搜索一下就能找到,也可以从keil官网下载,下载速度极其慢!在官网下载可以找到下载页面,然后再火狐或者谷歌里打开源码,找到下载地址,用迅雷下载,还是很快的。
解压缩en.X-CUBE-NFC6.zip,解压缩完的目录名为STM32CubeExpansion_NFC6_V1.0.0,子目录包含如下图所示。
17.jpg
在Documentation下包含软件的说明文档X-CUBE-NFC6.chm。
用keil打开工程文件,进入主函数,进行项目编译,没有错误,将开发板连接到PC,刷写软件,注意配置项的选择,debug工具应该选择ST-Link。打开串口工具软件,选择好端口,波特率115200,数据位8,停止位1,校验none,点击打开串口。烧写完程序后,按STM32L476RG开发板上的复位按键,如下图中所示,左侧黑按键。
18.jpg
按完之后,串口显示成功信息,如下图所示。
19.jpg
这时ST25R3916开发板的绿灯(PWR_OK)点亮,蓝灯(TX)开始闪烁。如下图所示。
20.jpg
这时用提供的NFC卡贴靠近刷卡区域,蓝灯(TYPE V)开始闪烁,过程如下。
21.jpg
22.jpg
23.jpg
这时,串口显示卡类型及UID,以及数据。如下图所示。
24.jpg
进入软件主函数,如下图所示。
25.jpg
初始化完成串口显示“Welcome to X-NUCLEO-NFC06A1”,然后显示"Initialization succeeded..“。
26.jpg
主程序最后进行demoCycle()的循环,运行dome程序。如下图所示。
27.jpg
进入demo.c,找到NFC-V卡部分代码,如下图所示。
28.jpg
在下图所示位置,添加代码,用于UID的识别,这里识别的是E0022302AED13118,当UID正确时,串口显示“okokokok“。
29.jpg
编译代码,烧写,重启开发板。刷E0022302AED1802E和E0022302AED13118卡,串口显示如下图所示。
30.jpg
下面,只要在识别UID正确时,将汽车门锁打开或关闭即可。找一个可用的输出口,查找UM1724用户手册,觉得PC4不错。直接使用LED的驱动,去驱动这个口。去查找LED口定义,如下图所示。
31.jpg
32.jpg
添加锁驱动IO口定义,如下图所示。
33.jpg
还要在nfc06a1.c里对数组NFC06A1_Led进行更改。如下图所示。
34.jpg
然后在dome.c里添加代码,实现刷卡开锁功能。
35.jpg
编译软件,烧写,进行刷卡测试,PC4引脚在刷卡时有高电平输出,在不刷卡时,为低电平。
至此,整个汽车NFC卡解锁功能算是完成了。
五、后记
本来打算把锁及其驱动的硬件搭出来,元件都找好了,想着十一期间弄,没想到十一生病,大半夜的去医院,还好没什么大问题。
后续把锁硬件部分搭出来,IO口驱动个小功率NMOS管,NMOS管驱动个双胞胎继电器,继电器驱动锁。软件部分要支持刷卡开锁,刷卡解锁。还要对卡内数据进行校验,采用加密方式进行存储。休眠唤醒也是要做的,我看dome里有这个功能,还需要研究一下,据说比其他家的功耗低。
最后感谢ST提供的开发板及教程!