基于STM32F103——AS608指纹模块+串口打印

Posted 皮卡丘吉尔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32F103——AS608指纹模块+串口打印相关的知识,希望对你有一定的参考价值。

STM32F103-AS608指纹模块+串口打印


最近用STM32F103做一个智能门锁小玩意,其中用到指纹模块,我这里也单独的写一下笔记,不过我只是了解了基本的,就是我做门禁卡要用到的几个东西,其它还没了解。为了方便,做一下记录。我这里没有用到按键和显示屏,所以还是串口输出输入来控制了 哈哈哈哈

一: 基本介绍

这里就写一下我这次用到的而且觉得是重点的东西吧 毕竟手册还是内容很多的

AS608引脚描述

这里就留意前6个 其中WAK这个引脚 是可以检测手指是否按下的 当有手指按下 WAK引脚是输出高电平 没有手指则维持低电平

AS608模块地址

默认是 0XFFFFFFFF(共4个字节)
我这里就不改了,按默认的了。修改的话请看手册

AS608波特率

默认是57600
我这里也懒得改了,按默认了。修改的话请看手册

AS608指令格式

模块指令格式分为三种,命令包、数据包、结束包。如下图

AS608应答格式


正常是通过检测确认码来确定数据的反馈
比如:
0X00: OK
0X01: 数据包接收错误
0X02: 传感器没有手指

手册都有说。这里也就不细发了。

二: 指令集

指令集很多,很多,但是我这里就写一下我这次做门禁卡系统用到的一些指令集。最终能实现 增加指纹、删除指纹、验证指纹。

1.读取图像-PS_GetImage

功能:	 	读取指纹图像,然后把图像存放于ImageBuffer中。
参数: 	 	无
返回: 	 	确认字
指令代码: 	01H

简述:
首先我们通过指令码包给AS608指纹模块让它读取图像,然后指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。

指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0003		(2个字节)
5、发送指令码:	0X01		(1个字节)
6、发送校验和:	0X0005		(2个字节)

包长度如何计算的?
我们可以看出来嘛 包长度这个表格是说3个。那么我看后面确实还剩3个字节。1字节的指令码+2字节的校验和 = 3字节。
结论: 包长度: 提示了后面还有多少个字节数据

校验和如何计算的?
我们同样也可以看出来 它的校验和是说是5。那么我们很容易发现,校验和其实是 从 包标识 0x01 + 包长度 0x0003 + 指令码 0x01 = 5。
结论: 校验和 = 包标识开始 + … 到校验和 但不含校验和。
应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		录入成功
01H:		收包有误
02H:		没有检测到手指
03H:		录入不成功

SUM(校验和)

2.生成特征-PS_GenChar

功能:	 	将ImageBuffer中的原始图像生成指纹特征存放CharBuffer1 或者 CharBuffer2。
参数: 	 	BufferID(特征缓冲区号) CharBuffer1:01H     CharBuffer2:02H
返回: 	 	确认字
指令代码: 	02H

简述:
首先我们通过指令码包给AS608指纹模块让它读取图像后如果读取到图像,然后我们发送生成特征指令包,然后指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0004		(2个字节)
5、发送指令码:	0X02		(1个字节)
6、发送缓冲区号:	0x01/0X02	(1个字节)
7、发送校验和:	SUM			(2个字节)

SUM(校验和的计算):
校验和 = 包标识 + 包长度 + 指令码 + 缓冲区号(BufferID)1:当你发送的缓冲区号是0x01: 校验和 = 0x08
0x01 + 0x0004 + 0x02 + 0x01 = 0x08

2:当你发送的缓冲区号是0x02: 校验和 = 0x09
0x01 + 0x0004 + 0x02 + 0x02 = 0x09

包长度如何计算的?
我们可以看出来嘛 包长度这个表格是说3个。那么我看后面确实还剩3个字节。1字节的指令码+2字节的校验和 = 3字节。
结论: 包长度: 提示了后面还有多少个字节数据
应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		生成特征成功
01H:		收包有误
06H:		指纹太乱
07H:		特征点太少
15H:		没有图像生成

SUM(校验和)

3.比对特征-PS_Match

功能:	 	将CharBuffer1 和 CharBuffer2 的特征文件比对。
参数: 	 	无
返回: 	 	确认字,对比得分
指令代码: 	03H

简述:
首先我们通过指令码包给AS608指纹模块让它对比然后CharBuffer1 和 CharBuffer2 的特征文件,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0003		(2个字节)
5、发送指令码:	0X03		(1个字节)
6、发送校验和:	0X07		(2个字节)

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		指纹匹配成功
01H:		收包有误
08H:		指纹不匹配

SUM(校验和)

4.生成模板-PS_RegModel

功能:	 	将CharBuffer1 和 CharBuffer2 的特征文件合并生成模板,结果存放在CharBuffer1 与 CharBuffer2
参数: 	 	无
返回: 	 	确认字
指令代码: 	05H

简述:
首先我们通过指令码包给AS608指纹模块让它将CharBuffer1 和 CharBuffer2 的特征文件合并生成模板,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0003		(2个字节)
5、发送指令码:	0X05		(1个字节)
6、发送校验和:	0X09		(2个字节)

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		合并成功
01H:		收包有误
0AH:		合并失败(不是同一个手指)

SUM(校验和)

5.储存模板-PS_StoreChar

功能:	 	将CharBuffer1 和 CharBuffer2 的模板文件,存放到PageID号flash数据库位置
参数: 	 	BufferID(缓冲区号 0x01/0x02),PageID(指纹库位置号)
返回: 	 	确认字
指令代码: 	06H

简述:
首先我们通过指令码包给AS608指纹模块让它将CharBuffer1 和 CharBuffer2 生成的模板进行储存模板,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0006		(2个字节)
5、发送指令码:	0X06		(1个字节)
6、发送缓冲区号:	BufferID	(1个字节)
7、发送位置号:	PageID		(2个字节)
7、发送校验和:	SUM			(2个字节)

SUM(校验和) = 包标识+包长度+指令码+BufferID+PageID;
SUM(校验和) = 0X01+0X06+0X06+BufferID+PageID;

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		储存模板成功
01H:		收包有误
0BH:		PageID超出指纹库范围
18H:		写FLASH出错

SUM(校验和)

你都看到这里了,那么你添加指纹的操作就可以完成了。

6.删除模板-PS_DeletChar

功能:	 	删除flash数据库中指定ID号开始的N个指纹模板。
参数: 	 	PageID(指纹库模板号),N(删除的模板个数)
返回: 	 	确认字
指令代码: 	0CH

简述:
首先我们通过指令码包给AS608指纹模块让它删除模板,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0007		(2个字节)
5、发送指令码:	0X0C		(1个字节)
6、发送位置号:	PageID		(2个字节)
7、发送删除个数:	N			(2个字节)
7、发送校验和:	SUM			(2个字节)

SUM(校验和) = 包标识+包长度+指令码+PageID+N;
SUM(校验和) = 0X01+0X07+0X0C+PageID+N;

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		删除模板成功
01H:		收包有误
10H:		删除模板失败

SUM(校验和)

7.清空指纹库-PS_Empty

功能:	 	删除flash数据库所有指纹模板
参数: 	 	无
返回: 	 	确认字
指令代码: 	0DH

简述:
首先我们通过指令码包给AS608指纹模块让它清空所有模板,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0003		(2个字节)
5、发送指令码:	0X0D		(1个字节)
6、发送校验和:	0X0011		(2个字节)

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0003		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		清空所有成功
01H:		收包有误
10H:		清空所有失败

SUM(校验和)

你都看到这里了,那么你删除指纹的操作就可以完成了。

8.高速搜索指纹-PS_HighSpeedSearch

功能:	 	以CharBuffer1 或 CharBuffer2中的特征文件高速搜索整个或部分指纹库。如果搜索到,返回页码。
参数: 	 	BufferID(0x01/0x02),StartPage(起始页),PageNum(页数)
返回: 	 	确认字,页码(匹配的指纹模板)
指令代码: 	1BH

简述:
首先我们通过指令码包给AS608指纹模块让它高速搜索是否和咱这个指纹一样,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0008		(2个字节)
5、发送指令码:	0X1B		(1个字节)
6、发送缓冲区号:	BufferID	(1个字节)
7、发送起始页:	StartPage	(2个字节)
7、发送页数:		PageNum		(2个字节)
7、发送校验和:	SUM			(2个字节)

StartPage(起始页):开始搜索的页码
PageNum(页数):	 搜索多少页

SUM(校验和) = 包标识+包长度+指令码+BufferID+StartPage+PageNum;
SUM(校验和) = 0x01+0x08+0x1B+BufferID+StartPage+PageNum;

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0007		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到页码:	PageID		(2个字节)
7、接收到得分:	MatchScore	(2个字节)
8、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		搜索到
01H:		收包有误
09H:		没有搜索到 页码和得分也会是 0

SUM(校验和)

9.搜索指纹-PS_Search

功能:	 	以CharBuffer1 或 CharBuffer2中的特征文件搜索整个或部分指纹库。如果搜索到,返回页码。
参数: 	 	BufferID(0x01/0x02),StartPage(起始页),PageNum(页数)
返回: 	 	确认字,页码(匹配的指纹模板)
指令代码: 	04H

简述:
首先我们通过指令码包给AS608指纹模块让它搜索是否和咱这个指纹一样,指纹模块会返回应答包给我们。我们通过应答包的确认字去判断这次的结果。
指令包格式:

首先我们是我们给指纹模块发送的内容 可以结合上图指令包格式

1、发送包头:		0XEF01 		(2个字节)
2、发送芯片地址:	0XFFFFFFFF	(4个字节)
3、发送包标识:	0X01		(1个字节)
4、发送包长度:	0X0008		(2个字节)
5、发送指令码:	0X04		(1个字节)
6、发送缓冲区号:	BufferID	(1个字节)
7、发送起始页:	StartPage	(2个字节)
7、发送页数:		PageNum		(2个字节)
7、发送校验和:	SUM			(2个字节)

StartPage(起始页):开始搜索的页码
PageNum(页数):	 搜索多少页

SUM(校验和) = 包标识+包长度+指令码+BufferID+StartPage+PageNum;
SUM(校验和) = 0x01+0x08+0x04+BufferID+StartPage+PageNum;

应答包格式

发送完指令包给指纹模块 我们则会收到它发的应答包 可以结合上图应答包格式

1、接收到包头:	0XEF01 		(2个字节)
2、接收到芯片地址	0XFFFFFFFF	(4个字节)
3、接收到包标识:	0X07		(1个字节)
4、接收到包长度:	0X0007		(2个字节)
5、接收到确认码:	xxH			(1个字节)
6、接收到页码:	PageID		(2个字节)
7、接收到得分:	MatchScore	(2个字节)
8、接收到校验和:	SUM			(2个字节)

xxH(确认码):
00H:		搜索到
01H:		收包有误
09H:		没有搜索到 页码和得分也会是 0

SUM(校验和)

这两个都是搜索。。一个高速一个不是 我估计就是高速更快,但是估计没不高速那个那么精确吧。个人感觉。
你都看到这里了,那么你验证指纹的操作就可以完成了。

10.查有效模板个数-PS_ValidTempleteNum

功能:	 	读取有效模板个数(查询当前一共有多少个指纹)
参数: 	 	无
返回AS608指纹+STM32串口通信录入或删除指纹

基于STM32F103+AS608指纹模块+4X4矩阵按键+SIM900A发短信——智能门禁卡系统

基于STM32F103+AS608指纹模块+4X4矩阵按键+SIM900A发短信——智能门禁卡系统

基于STM32F103的智能门禁系统

基于STM32F103的智能门禁系统

基于STM32F103+AS608指纹模块+RFID-RC522射频模块+OLED显示模块+4x4矩阵键盘+HC-05蓝牙模块发验证码----智能门禁系统