APP下载

基于嵌入式的一种指纹识别系统的设计

2018-05-31田海龙迟耀丹姜旭东

商情 2018年18期
关键词:串口指纹识别嵌入式

田海龙 迟耀丹 姜旭东

【摘要】本文提出了一种基于嵌入式的指纹识别系统的体系架构,由内置DSP运算单元的AS608指纹芯片作为检测模块,通过串口实现和嵌入式之间的通信,嵌入式接受处理后实现指纹识别的功能。

【关键词】指纹识别 嵌入式 串口 AS608

随着科技的蓬勃发展,人们越来越重视自己的个人隐私,由此个人身份識别的需求日益增加。由于指纹拥有独特的不变性,使得指纹识别技术与传统的身份识别方法相比起来,更加的安全和可操作,所以基于传统的身份识别技术的不足可以被克服,指纹识别日益被认可。指纹识别历来通常在PC平台上运行,但随着现代社会的高速发展,指纹识别系统的需求不断提升,同时市场对便携性和易用性的要求更加走高,指纹产品正在朝着嵌入式技术的发展方向。

一、系统结构概述

本系统由指纹识别部分和指纹处理部分组成,他们之间通过串口通信,指纹识别芯片使用AS608,通过搭建设计出具有采集指纹的功能,并引出8条引脚,分别为电源正输入端,串行数据输出端,串行数据输入端,信号地,感应信号输出端,触摸感应电源输入端USB D+和USB D-端,指纹处理部分由32位单片机处理,通过串口和采集端通信。

二、指纹采集部分

系统内设有一个72K字节的图像缓冲区和两个512Bytes大小的特征文件缓冲区,通过指令可以读写任意一个缓冲区,通过串口上传或下载图像时为了加快速度,只用到像素字节的高4位,即将两个像素合成一个字节传送。系统内部集成了硬件32位随机数生成器,可以通过指令让其产生一个随机数给上位机。指纹采集端和MCU通讯的数据按一定的格式打包,指令格式分为3种,命令包格式,数据包格式和结束包格式,数据包的格式如下表1。

数据包不是单独发送和接收,必须在发送指令包之后或接收了应答包的后面。包长度等于包长度至校验和(指令、参数或数据)的总字节数,包含校验和,但不包含包长度本身的字节数。校验和是从包标识至校验和之间所有字节之和。模块地址在没有生成之前为缺省的OxFFFFFFFF,一旦上位机通过指令生成了模块地址,则所有的数据包都必须按照生成的地址收发。模块将拒绝地址错误的数据包。

应答是将有关命令执行情况与结果上报给上位机,应答包含有参数,并可跟后续数据包。上位机只有在收到模块的应答包后才能确认模块收包情况与指令执行情况。模块应答包中包含一个参数即确认码,确认码表示执行指令完毕的情况,模块应答格式如表2所示。

三、串口通信部分

在STM32中串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR?ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使用DMA方式,实现高速数据通信。

USART通过3个引脚与其他设备连接在一起,任何USART双向通信至少需要2个引脚,接受数据输入(RX)和发送数据输出(TX),RX是接受数据串行输入,通过过采样技术来区别数据和噪音,从而恢复数据;TX是发送数据输出,当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。

图1中的源码实例是串口的初始化和中断的初始化USART_InitStructure表示将结构体设置为缺省状态,USART_BaudRate=115200:代表波特率设置为115200,USART_InitStructure.USART_wordLength=USART_WordLength_8b:表示在帧结尾传输1个停止位,USART_InitStructure.USART_StopBits表示奇偶失能模式,无奇偶校验。

四、嵌入式控制部分

硬件电路的搭建如同房子的地基一样重要,它将直接影响到读写器的性能。硬件电路的核心是主控芯片有着无可替代的作用,因此选择一款合适的主控芯片至关重要。为了设计一款功耗低、体积小、有巨大的信息容量、数据处理能力强、测量精度高,本文选用STM32芯片作为主控芯片,并在此基础上设计指纹识别系统。STM32是32位的单片机,集成嵌入式Flash和SRAM存储器的ARMCortex-M3内核。和8/16位设备相比,ARM Cortex-M3 32位RISC处理器提供了更高的代码效率。STM32F103xx微控制器带有一个嵌入式的APM核,所以可以兼容所有的APM工具和软件。首先,是读AS608模块触摸感应状态引脚,初始化函数为void PS_StaGPio_Init(void)。因为当感应到的时候是输出高电平,所以状态引脚(PA6)配置为下拉输入模式。往下就是配置串口发送指令的包头、指令码、校验和之类。第二个函数static u8*JudgeStr(u16 waittime),里面调用了中的strstr(constchar*strl,constchar*str2):这个函数是判断str2是否包含在str1内,如果包含则返回包含数据的首地址,否则返回NtLL。这里我们用于判断串口中断接收的数据包中有没有包含应答指令的包头、模块地址、指令码(07)。参数waittime是等待判断的时间单位,第三个函数u8PS GetImage(void),这个函数是和AS608通讯获取图像的指令,里面包含发送包头、地址、校验和。

猜你喜欢

串口指纹识别嵌入式
MCS—51单片机中的多串口通讯技术的应用
苹果屏幕指纹识别专利图流出
iPhone8新专利曝光
指纹挂锁
形形色色的指纹解锁
全国计算机等级考试机房准备工作探讨
嵌入式LINUX操作系统的研究
微机串口的测试诊断
嵌入式组件技术的研究及应用
基于VC串口通信的实现