指纹识别传感器
光学指纹识别传感器采用了国内著名指纹识别芯片公司杭州晟元芯片技术有限公司(Synochip) 的 AS608 指纹识别芯片。芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集 图像并识别指纹特征。模块配备了串口、USB 通讯接口,用户无需研究复杂的图像处理及及指纹识别算法,只需通过简单的串口、USB 按照通讯协议便可控制模块。本模块可应用于各种考勤机、保险箱柜、指纹门禁系统、指纹锁等场合。
模块来源
采购链接:
https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-24706531953.10.73946a4bXBZb14&id=566648022446
资料下载链接:
https://pan.baidu.com/s/1mCDdiU5nwtooxmHiPfYTFA
资料提取码:kj8o
规格参数
工作电压:3.0-3.6V
工作电流:30~60mA
指纹存容量:300 枚(ID:0~299)
认假率:<0.001%
搜索时间:<0.3(S)
控制方式:串口或USB
管脚数量:8 Pin(2.54mm间距排针)
移植过程
我们的目标是在【立创开发板GD32E230C8T6】上能够实现添加指纹、删除指纹和搜索指纹的功能。首先要获取资料,查看数据手册应如何实现,再移植至我们的工程。
查看资料
系统内设有一个72K字节的图像缓冲区与二个512bytes大小的特征文件缓冲区,名字分别称为:lmageBuffer,CharBuffer1和CharBuffer2。用户可以通过指令读写任意一个缓冲区。CharBufferl或 CharBuffer2既可以用于存放普通特征文件也可以用于存放模板特征文件。通过UART 口上传或下载图像时为了加快速度,只用到像素字节的高4位,即将两个像素合成一个字节传送。通过USB口则是整8位像素。
指纹库容量根据挂接的FLASH容量不同而改变,系统会自动判别。指纹模板按照序号存放,序号定义为:0—(N-1)(N为指纹库容量)。用户只能根据序号访问指纹库内容。
这里我们使用的是串口控制方式,USB的接口我们可以悬空不接。
1脚(红线):模块主电源,接3.3V供电(请勿接3.3V以上电源,否则烧毁模块!);
2脚(黄线):模块串口TX(发送端),接MCU或TTL串口的RX(接收端);
3脚(白线):模块串口RX(接收端),接MCU或TTL串口的TX(发送端);
4脚(黑线):模块电源地,接3.3V电源地(负极);
5脚(蓝线):模块触摸感应信号输出(高电平为检测到触摸),需接VTI到3.3V。
6脚(绿线):模块触摸感应电路电源(3.3V),可以与1脚(红线)并接。
7脚,8脚为USB信号线,使用串口控制模块时可以悬空不用。
引脚选择
想要使用串口,需要确定使用的引脚是否有串口外设功能。可以通过数据手册【GD32E230xx_Datasheet_Rev2.3.pdf】进行查看。
在数据手册的第19页,是关于GD32E230xx系列芯片引脚的功能定义示意图。
这里选择使用PA14和PA15的附加串口1功能。
我们下载好core文件夹和uart文件夹之后我们将两个文件夹拉入Hardware文件夹
然后我们替换文件
我们添加h文件路径(注意,我们覆盖掉了usart文件夹,所以原本文件夹中的路径被自动替换成了我么你拉入的文件)这里我们添加的是core文件夹中的头文件路径。
接下来我们添加C文件到我们的目录
移植验证
在自己工程中的main主函数中,编写如下。
/******************************************************************************
* 测试硬件:立创开发板·GD32E230C8T6 使用主频72Mhz 晶振8Mhz
* 版 本 号: V1.0
* 修改作者: www.lckfb.com
* 修改日期: 2023年11月02日
* 功能介绍:
*****************************************************************************
* 梁山派软硬件资料与相关扩展板软硬件资料官网全部开源
* 开发板官网:www.lckfb.com
* 技术支持常驻论坛,任何技术问题欢迎随时交流学习
* 立创论坛:club.szlcsc.com
* 其余模块移植手册:【立创·GD32E230C8T6开发板】模块移植手册
* 关注bilibili账号:【立创开发板】,掌握我们的最新动态!
* 不靠卖板赚钱,以培养中国工程师为己任
******************************************************************************/
#include "gd32e23x.h"
#include "systick.h"
#include "bsp_usart.h"
#include "stdio.h"
#include "bsp_as608.h"
int main(void)
{
systick_config(); //滴答定时器初始化 1ms
usart_gpio_config(57600U);
as608_gpio_config(57600U);
printf("AS608 demo start\r\n");
Device_Check();//模块检测
FPM10A_Delete_All_Fingerprint(); //是否删除全部指纹
FPM10A_Add_Fingerprint();//是否添加指纹
while(1)
{
FPM10A_Find_Fingerprint();//查找指纹
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
上电效果: 移植现象:删除全部指纹->添加一个指纹->识别两次正确的指纹->识别3次错误的指纹。