滑动式指纹识别模块TCS3C-TCD42A的单片机控制

时间:2022-06-28 05:42:55

滑动式指纹识别模块TCS3C-TCD42A的单片机控制

摘要:介绍了利用单片机Atmega48与指纹识别模块TCS3C-TCD42A构建小型指纹识别系统的全过程,简要介绍了TCS3C-TCD42A模块的功能和特点,给出了指纹识别系统结构框图。论述了单片机时指纹识别模块的控制。包括单片机与模块的接口方法、通信协议、主程序、接收中断处理模块和通信处理模块的编程思路及注意事项。该系统在实际使用过程中,运行稳定,通信性能良好,已经成功应用于指纹保管箱产品中。

关键词:指纹识别模块;串口通信协议;单片机;AUnega48

0 引言

随着现代经济和社会的不断发展,越来越多的场合需要身份确认,而传统的身份识别技术已经远远不能满足要求。指纹识别作为一种新兴的鉴别个人身份的方法,已经广泛地在安全部门得到应用。由于指纹具有不可复制性、惟―性、稳定性的特点,所以得到了越来越多的应用。目前世界上许多公司和科研机构都在进行指纹识别技术的研究,并取得了一定的成果,推出了许多指纹产品。这些产品已经开始在部分民用领域得到应用,如用于指纹门禁,指纹考勤,指纹保管箱等。信息社会的到来,使指纹识别系统在身份认证方面有着广阔的应用前景。

目前国内大多采用光学按压式和晶体电容按压式两种指纹传感器,两者共同的缺点是体积较大,无法应用在体积较小的电子产品中。本文要介绍的是一款滑动式指纹识别模块:TCS3C-TCD2A,它不要求用户在验证时按压指纹,而只要将手指轻轻刷过传感器表面,传感器便能自动对手指进行连续的“快照”,然后这些快照被组合在一起,形成清晰的指纹影像。这种采集指纹的效果与按压式指纹传感器相当,但它无需用力按压,使用更加方便。

1 TCS3C―TCD42A简介

TCS3C-TCD42A是美国UPEK公司的产品(TouchStrip芯片组),其中TCS3C是―个长条状的滑动式指纹传感器。用于提取指纹图像数据。TCD42A为高性能32位RISC芯片。为指纹处理和通信芯片,其内部有4K的非易失性(NVM)内存可供用户存储指纹信息。TCD42A集成了PeffectPrint算法捕获手指滑过传感器时的指纹数据后形成指纹图像。该算法补偿速度、平移、旋转方面的变化,将其规格化为最优质的指纹图像,配合其集成的PerfectMatch指纹模板提取和匹配算法,使用户能够获得可靠的指纹识别效果。TCD42A还具有和上位机通信的功能,用户按照通信协议,可开发出功能强大的指纹识别应用系统。TCS3C和TCIM2A的实物图如图l所示。

TCS3C的特点如下:

(1)CMOS有源电容像点传感技术;

(2)最大手指滑动速度:20cm/S;

(3)图像灰度:8位;

(4)图像分辨率:508dpi;

(5)体积:17,65x 5xl 87ram;

TCD2D42A的特点如下:

(1)32位RISC结构;

(2)处理速度可达96 MIPS;

(3)4KB的非易失性内存可供存储指纹特征数据;

(4)体积:lOxloxl 26 mnl;

(5)接口方式:UART和USB。

2 指纹识别系统构成

电路采用Atmega48单片机作为控制核心。Atmega48是一款8位微控制器,具有高性能、低功耗的显著特点。由于采用RISC精简指令集结构,其指令集大多为单周期指令,具有高速运行的特点。3V供电时。未使用内部看门狗的情况下,Atmega48的典型掉电电流小于luA,而且该单片机在1.8V一5.5V的电压范围内均能正常工作,片内自带4K字节的flash、256字节的E2PROM,以及512字节SRAM并内置AD转换器、看门狗、3个16位的定时/计数器。

Atmega48作为上位机负责和TCD42A的通信。由它下达指纹登录、比对、删除等命令给TCD42A。TCD42A返回结果给Atmega48,以便上位机及时给用户提示,如LED闪烁、蜂鸣器蜂鸣、电机转动等。指纹识别系统结构框图如图2所示:

TCS3C与TCD42A通过一条12Pin,0.Snlnl间隔的软排线连接,TCD42A通过一条7Pin,0.Smm间隔的软排线和单片机连接。TCD42A的U_TXl和U_RXl分别和Atmega48的RXD和TXD连接进行串口通讯。

由于TCD42A需要一个至少持续20ms的BREAK信号(持续的低电平)重启,所以将Atmega48的PD4作为TCD42A的Wakeup信号。TCD42A被唤醒后,发送复位应答帧,表示已经可以通信了。TCD42A与单片机之间按照下面的通信协议进行通信。在实际应用中建议BREAK信号保持50ms以上。

3 通信协议

参照通讯网络互联的标准7层模式,TCS3C-TCD42A指纹识别模块与上位机交互时,使用4层通信模型(参见表1)。

该模块支持串u和USB口两种通信方式。协议的字节顺序为little_endian,即低地址存放最低有效字节(LSB)。TCD42A的UART是一个标准的通用异步收,发接口,此接口让用户进行指令发送和通讯。接口默认的通信速率为9600bps,根据需要,还可以设置为19200bps、38400bps、57600bps、115200bps、230400bps。

3.1 字节填充与字节替换

在此通信协议中,一些字符被保留为特殊用途,如XON/XOFF,DLE。STX除帧头(Ox02)不需要特殊处理外,不论上位机还是模块在发送数据前,均需对字符XON、XOFF、DLE、STX作字节填充。填充规则如表2所示。

和字节填充相反,上位机或模块在收到数据后,除第一个字节(0x02)不需要处理外,对于特殊的2个字符要作字节替换。字节替换规则为字节填充的反变换。

3.2 链路层

链路层的帧格式如下所示:

STX+Header+Data+CRC

STX是―个字节(Ox02),是帧的开始标志。

Header的长度为3个字节,其中:

Header:

Bits 0-3:帧类型,共有12中数据类型,如数据帧、请求等待时间扩展帧等;

Bits 4-7:保留,必须置为O;

Header:

Bits 0-2:数据长度高位(参见Header[2]);

Bit 3:保留,必须置为0;

Bits 4-7:为数据帧的模16计数,系统复位后初始值为0,其他类型帧时将其置为0。

Header:数据长度低位,和Header[1]里的3位组成ll位的域。

Data:传输层和应用层数据,在字节填充前最大长度为2047个字节。

CRC的长度为2个字节,其值是对Header和Data的字节在进行字节填充前作CRC校验得到的。CRC类型为依照CCI'VI"V,41标准的CRCl6。特别要说 明的是,若CRC的2个字节中出现了上述的特殊字符,在发送数据时也要进行字节填充。

3.3 传输层

传输层的第一包数据格式如下所示:

Header+Packet+Length+Data

Header占1个字节,它的各位功能如表3所示。

Bit 4为1时表示此帧为传输层服务帧;

Bit 4为0时表示此帧不是传输层服务帧。

Packet Length:此为可选择的2个字节,它和来自Header的2位合起来表示应用层的长度;

Data:应用层的数据。

3.4 应用层

应用层的帧格式如下所示:

Tag+Data

Tag的长度为4个字节,在此描述为32位的整型值,其中:

Bits 28-31:

(CL_COMMAND)0000:表示此为上位机要求模块执行命令;

(CL RESPONSE)0001:表示模块对上位机命令的响应;

(CL_GUI_CALLBACK)0010:表示此为模块的GUI回调包;

(CL_GUI_RESPONSE)0011:表示上位机对GUI回调包的响应。

Tag的剩余28位根据高4位的不同而具有不同的意义:

若高4位是CL COMMAND,则Bits 16-27为命令码,其余位为0;

若高4位是CL_RESPONSE,则Bits 16-27为命令码,Bits0-15为错误,状态码,状态码为0表示成功。

高4位是0010或0011时,Tag的其他位均为0。

3.5 具体数据包分析示例

若上位机发送列举所有指纹命令给指纹识别模块,实际发送的数据如下:

02 00 00 07 28 04 00 00 00 0D 10 03 FC 6A

具体数据意义分析如表4所示:

4 软件设计

上位机的软件开发采用IAR公司的IAR EmbeddedWorkbench V4,21 for Atmel AVR.它集成了开发嵌入式系统所需要的文件编译、项目管理、链接和调试工具。IAR EmbeddedWorkbench系列适用于开发基于8位、16位、32位微处理器的嵌入式系统,其集成开发环境具有统一的界面,为用户提供了一个易学、易用的开发平台。IAR公司提出了“不同架构,惟一解决方案”的理念,用户可以针对多种不同的耳标处理器,在相同的集成开发环境中进行基于不同CPU的嵌入式系统程序开发,有效地提高了工作效率,节省了工作时间。IAR一贯使用精简的优化技术,其生成的可执行代码的数量远远少于其他同类编译器生成代码的数量,可以运行于更小尺寸、更低成本的处理器上,从而降低产品的开发成本。

4.1 主程序

软件程序包括主程序和中断服务程序。采用模块化设计方法,各模块之间相对独立,这样可以使得程序结构清晰,便于今后进一步扩展系统的功能。主程序流程图如图3所示。其中初始化完成开中断、设置定时器和串口、初始化驱动集成电路、指纹识别模块复位等工作。电量检测及处理模块进行电池电量检测,若电池电量不足发出报警声音以提示用户更换电池。程序根据用户按下的登录、验证或删除键由通信处理模块进行不同的处理。若用户在按下登录或者验证键后不作任何操作,程序在达到最大等待时间(10S)后将自动关机。蜂鸣器提示模块、LED指示模块将根据通信处理模块的结果提示用户操作结果。电机驱动模块用于驱动电机,在等待2s后自动关机。

为了能让单片机及时响应和控制指纹识别模块,尽量减少通信所占用的CPU时间,笔者在设计单片机通信程序时。将通信程序分为接收中断处理模块和通信处理模块2部分,并将这2个模块巧妙地进行组合,从而构成整个单片机的通信程序。

4.2 接收中断处理模块

接收中断处理模块主要负责接收指纹识别模块发送到单片机接收缓冲区的数据,字节替换在此模块内进行。单片机接收到规定的字符数后,置接收完毕标志,以表明接收缓冲区中有待处理的数据并请求通信处理模块对其进行处理。接收中断处理模块流程图如图4所示。

4.3 通信处理模块

通信处理模块放在主程序中调用,根据用户的按键不同,向指纹识别模块发送不同的命令。发送的命令主要有列举指纹用户、登录指纹、验证指纹、删除指纹等。特别要说明的是由于程序规定最大用户数为10,所以在登录指纹用户前要先向指纹识别模块发送列举指纹用户命令,只有在指纹用户数小于最大用户数时才可以登录。由于此系统用于指纹保管箱,所以在验证用户也需要列举用户。如果指纹识别模块内没有指纹用户的话,任何人都可以开箱(指纹保管箱在初始状态下是没有指纹用户的,所以任何人都可以开箱)。

通信处理模块负责向指纹识别模块发送命令和响应来自模块的数据包。串口发送采用查询方式。笔者认为此处没有必要采用中断,因为程序的开销是差不多的。在发送数据之前,要先对数据进行CRC校验和字节填充。通信处理模块在接收到指纹识别模块送来的一串完整数据后,进行CRC校验,在通过CRC校验后根据不同的数据作出不同的响应。若超时没有收到数据或者CRC校验错误,则通信处理模块重发命令或者响应帧。

指纹登录时用户至少需要在指纹传感器上划三次指纹,上位机控制LED提示用户。指纹识别模块对三次录入的指纹综合处理提取特征,生成指纹模板存于TC42A。如果用户的指纹质量不好。则手指划动次数会超过3次。为了提高登录的成功率,程序没有限制手指划动的次数,只要模块端不上传登录失败数据包,用户可一直登录,直到超过最大等待时间。

5 结束语

本文给出了单片机与指纹识别模块之间进行异步串行通信的解决方案。此方案在实际使用过程中,运行稳定,通信性能良好。从整个系统的设计可以看出:基于TCS3C-TCD42A的指纹识别模块采用Atmega48作为上位机,具有体积小巧、价格低廉的特点。目前该系统已经成功应用于指纹保管箱产品中。本文提出的基于TCS3C-TCD42A的指纹识别系统是把采集、处理、控制于一身的系统,可以做得很小,也适合用于防盗门、高档的汽车门、汽车遥控器、手机、PDA等产品中。

上一篇:反盗链技术研究 下一篇:试用新浪搜索引擎“爱问”