Quartus II 13.1的安装及使用-CSDN博客
AS608指纹模块详解-CSDN博客
基于stm32f103c8t6及AS608-----指纹锁项目_stm32f103c8t6项目-CSDN博客
quartus 固化程序步骤_quarter固化-CSDN博客
Markdown文档阅读器:Markdown | 特色功能 | 印象笔记 (yinxiang.com)
模块购买地址:【优信电子】AS608光学指纹识别模块 指纹采集/STM32 51单片机 (taobao.com)
管脚映射:
串口
RX PC3
TX PC2
LED
S0
S1
beep
AS608 FPGA控制
新的模块默认厂家设置的波特率是57600,修改波特率到115200。
根据厂家给出的协议,波特率设置使用查表方式。设置的波特率等于9600的整数倍;
115200 ÷ 9600=12= 0X0C
设置指令格式:
EF 01 FF FF FF FF 01 00 05 0E 04 0C 00 24
校验和等于:01 + 05 + 0E +04 + 0C = 00 24
读取寄存器:
EF 01 FF FF FF FF 01 00 03 0F 00 13
这里使用串口助手设置:
设置完成以后重新上电模块,波特率调整至115200;
录入指纹的状态机设计流程
读取手指图像
EF 01 FF FF FF FF 01 00 03 01 00 05
成功生成特征
EF 01 FF FF FF FF 01 00 04 02 01 00 08 // 生成缓冲区1的特征
读取指纹图像
EF 01 FF FF FF FF 01 00 03 01 00 05
成功生成特征
EF 01 FF FF FF FF 01 00 04 02 02 00 09 // 生成缓冲区2的特征
对比两次指纹的特征
EF 01 FF FF FF FF 01 00 03 03 00 07 // 对比两次指纹的特征
EF 01 FF FF FF FF 07 00 05 00 00 // 返回正确值
对比成功生成指纹模板
EF 01 FF FF FF FF 01 00 03 05 00 09 // 合并特征(生成模板)
EF 01 FF FF FF FF 07 00 03 00 00 // 返回正确值
储存指纹模板
EF 01 FF FF FF FF 01 00 06 06 02 00 01 00 10 // 存模板 讲第二缓冲区的数据储存到第一个flash上 数据长度15
EF 01 FF FF FF FF 07 00 03 00 00 // 返回正确值
储存图像完成
刷指纹流程
读取手指图像
EF 01 FF FF FF FF 01 00 03 01 00 05
成功生成特征
EF 01 FF FF FF FF 01 00 04 02 01 00 08 // 生成缓冲区1的特征
根据特征搜索指纹库
EF 01 FF FF FF FF 01 00 08 1B 01 00 00 00 63 00 88 // 快速搜索 搜索缓冲区1中的指纹 从起始页0开始搜索99页 数据长度17
唯一正确的返回值:
EF 01 FF FF FF FF 07 07 00 .. .. .. .. .. ..
搜索成功
删除指纹流程
根据ID删除指纹
成功
删除全部指纹库
成功
一、录入指纹过程的指令翻译
0、录取指纹操作
1、开机按下复位键;
2、手指放在指纹模块上;
3、按下S0按钮;
4、等待蜂鸣器鸣叫,第一次录入指纹完成,拿起手指。如果没有鸣叫,但是灯光全亮代表指纹录取失败;需要回到第一步重新操作;
5、手指放在模块上;
6、按下S0按钮;
7、等待蜂鸣器鸣叫,完成第二次录制指纹,如果失败重新回到第一步;
8、随即有第三次蜂鸣器鸣叫,代表录入指纹完成。如果失败灯全亮。回到第一步;
1、录入图像
录入图像指令 PS_GetImage
EF 01 FF FF FF FF 01 00 03 01 00 05
正确返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. // 正确的 通用返回值 EF 01 FF FF FF FF 07 00 03 01 .. .. // 接收错误 EF 01 FF FF FF FF 07 00 03 02 .. .. // 传感器上无手指 EF 01 FF FF FF FF 07 00 03 03 .. .. // 录入失败
2、生成特征
生成特征指令:
EF 01 FF FF FF FF 01 00 04 02 01 00 08 // 生成缓冲区1的特征 EF 01 FF FF FF FF 01 00 04 02 02 00 09 // 生成缓冲区2的特征
返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. // 正确的 通用返回值 EF 01 FF FF FF FF 07 00 03 01 .. .. // 接收错误 EF 01 FF FF FF FF 07 00 03 02 .. .. // 传感器上无手指 EF 01 FF FF FF FF 07 00 03 03 .. .. // 录入失败
3、对比特征
对比两次指纹的特征
PS_Match:
EF 01 FF FF FF FF 01 00 03 03 00 07 // 对比两次指纹的特征
唯一正确返回值:
EF 01 FF FF FF FF 07 00 05 00 .. .. .. .. .. .. // 通用返回值 03
4、合并特征
PS_RegModel :
EF 01 FF FF FF FF 01 00 03 05 00 09 // 合并特征(生成模板) 数据长度12
唯一正确返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. .. .. .. .. // 通用返回值 03
5、储存模板
PS_StoreChar:
EF 01 FF FF FF FF 01 00 06 06 ID 00 IS sum1 sum2 // 存模板 EF 01 FF FF FF FF 01 00 06 06 ID 00 IS sum1 sum2 // 存模板
将CharBuffer1 或CharBuffer2中的模板文件存到PageID号, 这里存第二次的
EF 01 FF FF FF FF 01 00 06 06 02 00 01 00 10 // 存模板 讲第二缓冲区的数据储存到第一个flash上 数据长度15
唯一正确的返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. .. .. .. .. // 通用返回值 03
二、刷指纹流程
0、刷指纹的设计流程:
开机后按一次复位键;
把手指放在指纹模块上;
按下按钮S1;
如果蜂鸣器鸣叫代表识别到了指纹;
如果灯光显示全亮代表没有识别到指纹;
1、读取指纹、生成特征
前面两个步骤的操作和录入指纹相同,分别是:录入图像、生成特征储存在缓存区1;
2、高速搜索指纹
PS_HighSpeedSearch
EF 01 FF FF FF FF 01 00 08 1B 01 00 00 00 63 00 88 // 快速搜索 搜索缓冲区1中的指纹 从起始页0开始搜索99页 数据长度17
唯一正确的返回值:
EF 01 FF FF FF FF 07 00 07 00 .. .. .. .. .. .. // 通用返回值 07
三、删除单个指纹
PS_DeletChar
EF 01 FF FF FF FF 01 00 07 0C 00 01 00 01 00 16 // 删除指纹 删除指纹库中从ID=1开始的第一个指纹 指令长度 16
唯一正确的返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. .. .. .. .. // 通用返回值 03
四、删除整个指纹库
PS_Empty
EF 01 FF FF FF FF 01 00 03 0D 00 11 // 删除flash中的全部指纹 指令长度12
唯一正确的返回值:
EF 01 FF FF FF FF 07 00 03 00 .. .. .. .. .. .. // 通用返回值 03