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

来源 :计算机时代 | 被引量 : 0次 | 上传用户:chengjiangjie
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了利用单片机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等产品中。
其他文献
摘要:对一个C程序的问题,结合其对应的汇编进行深入分析,着重探讨了什操作和参数进栈的问题,  关键词:C语言;汇编;参数进栈;指针    0 引言    C语言是计算机系学习编程的入门语言,尽管是基础,但是涉及的问题很多,有些题目也很值得思考。本人在教学实践中,碰到如下一道题目,感受颇多,因此做了些总结和拓展分析,以抛砖引玉,请大家共同思考。
期刊
摘要:Protel是目前广大电气电子技术人员十分熟悉和喜爱的绘图软件,但在使用中常会遇到一些问题。文章针对在原理图设计中出现的若干问题进行分析、总结,并介绍一些解决方法和绘图技巧。  关键词:Protel;原理图;设计;技巧
期刊
摘要:PHP技术是目前最流行的动态网站开发语言之一,它与Apache、MySQL的紧密集成更加速了它的普及。文章简要介绍了ASP、JSP、PHP三种动态网站开发技术的优缺点,以Linux9.2为例详细介绍了在Unix类系统上搭建AMP平台的过程和注意事项。  关键词:Unix类操作系统;AMP(Apache+MySQL+PHP)平台;搭建;动态网站开发
期刊
摘要:随着Web应用软件的快速发展,作为保证Web软件正确性和可靠性的重要手段,Web应用软件测试受到了人们越来越多的重视。文章从web软件体系结构出发,分析了Web软件测试的主要特点和难点,指出了传统软件测试与Web软件测试之间的差别。总结了Web软件测试的内容和方法。这些对于提高和改善Web软件的质量具有指导意义。  关键词:Web;软件游览;体系结构;方法    0 引言    随着Inte
期刊
摘要:C语言程序设计作为高等院校计算机类专业学生开设的第一门程序设计课程,对于学生程序设计能力的培养具有重要的意义。文章在剖析程序设计能力基本要素和概念的基础上,分析了当前C语言课程授课模式和不足,进而提出了C语言授课目标,并归纳了在教学实践中应注意的五个方面,以提高C语言授课质量,达到C语言教学关于程序设计能力培养的目标。  关键词:程序设计能力;C语言;教学;授课模式
期刊
摘要:着重分析了编译原理课程中的LL(1)预测分析器的设计算法。对于给定的代码,求出FIRST、FOLLOW和SELECT集,构造相应的LL(1)预测分析器,给出预测分析表,并对求解FIRST集和FOLLOW集中存在的环问题提出了解决算法。  关键词:FIRST;FOLLOW;SELECT;LL(1);算法
期刊
摘要:鉴于可视化程序设计课程在学生实践能力培养方面的重要性,提出了新的基于.NET的可视化程序设计课程的教学内容,并利用项目教学法对可视化程序设计课程进行教学改革与探索,取得了良好的效果。  关键词:可视化;.NET;教学改革;项目    0 引言    信息与计算科学是一个内容非常广泛的学科。教育部数学与统计学教学指导委员会数学类教学指导分委员会经过调查后,建议将信息与计算科学专业的课程分为四个
期刊
摘要:基于SmallWorld在金华电业局配网GIS项目上的具体实践,论述了如何更好地发挥SmanWorld平台在配网管理上的一些应用优势。以及所需注意的几个问题。  关键词:配网;GIS;SmallWorld;拓扑;数据库    0 引言    浙江省电力公司把SmallWorld作为全省GIS的统一平台,省公司下属的各个供电局必须在SmallWorld的平台上进行GIS的开发应用。金华电业局配
期刊
摘要:规则引擎是一种嵌入在应用程序中的组件。起源于基于规则的专家系统。它可以在应用系统中分离商业决策逻辑和程序逻辑。目前的商用规则引擎,包括JBoss Rules,基本上都是基于Ret算法。文章先叙述了规则引擎的原理及Java规则引擎工作机制,然后介绍了Drools中改进后的Ret算法,最后以实例说明了如何在应用程序中使用JBossRules来管理规则。  关键词:规则引擎;Rete算法;JBos
期刊
摘要:探讨了以WebGIS为技术支持,基于ArCIMS的北海区海洋行政管理支撑系统的系统结构、数据库构建和功能模块设置,并对系统进行了详细的需求分析和技术实现。该系统可以对北海区海洋倾倒区、陆源排污口、石油平台等监测数据进行实时更新和系统分析,为北海区监测信息提供共享空间,为管理决策提供详实有效的依据。  关键词:海洋行政管理;信息支撑系统;WebGIS ArcIMS    0 引言    海洋行
期刊