1 Star 1 Fork 0

田小呱 / fpga_lock

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.19 KB
一键复制 编辑 原始数据 按行查看 历史

Quartus II 13.1的安装及使用-CSDN博客

AS608指纹模块详解-CSDN博客

基于stm32f103c8t6及AS608-----指纹锁项目_stm32f103c8t6项目-CSDN博客

quartus 固化程序步骤_quarter固化-CSDN博客

Markdown文档阅读器:Markdown | 特色功能 | 印象笔记 (yinxiang.com)

模块购买地址:【优信电子】AS608光学指纹识别模块 指纹采集/STM32 51单片机 (taobao.com)

1

管脚映射:

串口

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

这里使用串口助手设置:

1

设置完成以后重新上电模块,波特率调整至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、录入图像

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、生成特征

1

生成特征指令:

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、对比特征

对比两次指纹的特征

1

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、合并特征

1

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、储存模板

1

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、高速搜索指纹

1

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

三、删除单个指纹

1

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

四、删除整个指纹库

1

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
Verilog
1
https://gitee.com/tianxiaohuahua/fpga_lock.git
git@gitee.com:tianxiaohuahua/fpga_lock.git
tianxiaohuahua
fpga_lock
fpga_lock
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891