指纹识别模块Sm61的单片机控制_第1页
指纹识别模块Sm61的单片机控制_第2页
指纹识别模块Sm61的单片机控制_第3页
指纹识别模块Sm61的单片机控制_第4页
指纹识别模块Sm61的单片机控制_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、翟庆一摘要 随着电子技术的发展,指纹识别模块的成本不断下降、识别精度逐渐提高,已经开始走上推广应用阶段。文章详细介绍了利用高性能AVR单片机Atmega128对指纹识别模块SM61的控制,包括单片机与模块的接口方法、通信协议、编程思路及注意事项。关键词:指纹识别模块;串行通信协议;Atmega128;作者简介:翟庆一性别:男 出生日期:1973年6月 民族:汉族 工程师 讲师 主要研究方向:单片机应用产品的设计,计算机控制技术的应用。The singlechip control of Fingerprint Identify Module Sm6xZHAI Qing-yiJinan Railw

2、ay Polytechnic,Jinan 250013,ChianAbstract:Along with the development of electronic technology,the cost of Fingerprint Identify Module has fallen and the accuracy has been improved gradually.This paper introduces a singlechip control of Fingerprint Identify Module Sm61 includeing the interface with s

3、inglechip, communication protocols,primary flow charts and especial problems in design. Key words:Fingerprint Identify Module; serial communication protocol; Atmega128现在许多智能产品中,为了安全,需要鉴别操作人员的身份。基于人体生物特征的识别技术是一种高度安全的身份认证技术。生物特征是唯一的,可以测量和验证的。生物特征识别的工作原理是利用生物识别设备对生物特征进行取样,提取其唯一的特征并且转化成数字代码,并进一步将这些代码组成特

4、征模板,人们同识别设备交互进行身份认证时,识别设备获取其特征并与数据库可中的特征模板进行比对,以确定是否匹配,从而决定接受或拒绝该人。用于生物识别的生物特征有手形、指纹、脸形、虹膜、视网膜、脉搏、耳廓等,行为特征有签字、声音、按键力度等。基于这些特征,人们已经发展了手形识别、指纹识别、面部识别、发音识别、虹膜识别、签名识别等多种生物识别技术。现代生物识别技术始于70年代中期,由于早期的识别设备比较昂贵,因而仅限于安全级别要求较高的原子能实验、生产基地等。现在由于微处理器及各种电子元器件成本不断下降,精度逐渐提高,生物识别系统逐渐应用于商业上的授权控制如门禁、企业考勤管理系统安全认证等领域。数字

5、信号处理器DSP光学指纹采集头RS232接口FLASH存储器5V发送接收唤醒GND图1 Sm-61模块结构框图 SM-61光学头指纹识别模块是杭州中正生物认证技术有限公司生产的指纹识别产品,结构框图如图1,由高性能DSP处理器和FLASH等芯片构成,具有指纹图像处理、模板提取、模板匹配、指纹搜索和模板存储等项功能。用户按照SM-61模块提供的控制指令,可自行开发出功能强大的指纹识别应用系统,无需具备指纹识别专业知识。SM-61指纹识别模块虽然提供了软件开发工具SDK,指令集动态连接库,详细的通信协议说明,但都是基于以pc机为上位机的,对使用单片机作为上位机的用户还是有一定的开发难度。本文结合作

6、者的开发经验,就使用单片机控制SM-61指纹识别模块时需要注意的几个问题进行论述。1. 硬件连接SM-61模块外部接口是标准RS-232串口,在命令工作模式下,上位机可以通过RS-232串口发送各种指令控制模块。任何有UART接口的单片机都可作为上位机,控制SM-61指纹识别模块,下面以Atmega128单片机为上位机,说明各个环节的编程要点和注意事项。Atmega128是Atmel公司生产的高档8位单片机,具有128K 字节的系统内可编程 Flash,2K字节的EEPROM,4K字节片内SRAM和丰富的功能模块,适合用c语言编程。尤其有两个UART接口,一个连接指纹模块后,另一个还可以用作其

7、它用途。这里使用UART0控制指纹识别模块。电路原理图如图2。图2 电路原理图2. 通信协议参照通讯网络互联的标准7层模式, SM-61指纹识别模块与上位机交互时,使用4层通信模型(参见表1)。上位机功能指纹模块应用层应用程序接口API应用层表示层模块工作状态,执行结果表示表示层链路层包结构;包编/解码;数据校验;通信状态、流程监控链路层物理层UART接口协议物理层表1 SM-61四层通信协议模型2.1. 物理层标准UART协议,标准RS-232链接,半双工工作方式,8位数据位,两位停止位,默认波特率为57600bps,另外有38400和115200两档可选择。系统发生意外错误引起看门狗复位时

8、,会自动恢复默认波特率设定。所以用单片机控制时尽量采用默认波特率57600bps。2.2. 链路层链路层协议规定了通信包结构、封装规则;数据传输校验;通信状态及可靠性监控;通信流程控制。 通信包格式模块与上位机交互信息,以通信包packet为基本单位在链路层内传递。通信包分为两类:命令包和数据包,若通信数据较长,一个通信包无法完成数据传送时,采用多数据包通信方式,最后一个数据包称为结束包。通信包格式见表2、表3、表4。表2 命令包格式1 字节4字节2字节1字节 2字节包标识01设备地址包长度指令参数1参数2参数n校验和表3 数据包格式1 字节4字节2字节n字节 2字节包标识02设备地址包长度数

9、据校验和表4 结束包格式1 字节4字节2字节n字节 2字节包标识08设备地址包长度数据校验和为了实现数据的透明传输,界定通信包,通信包在传送时先进行打包处理,包装成一帧数据,送到物理层发送。帧格式说明如下:(1)帧以0xC0作为起始符和结束符。(2)如果通信包内部含有0xC0字符,则代之以0xDB和0xDC这两个字符。(3)如果通信包内含有0xDB字符,则在其后加0xDD字符。包长度为包内容(指令、参数或数据)的字节数。3. 通信软件设计3.1 通信包接收在UART0中断服务程序中实现帧接收,在中断服务程序中完成的功能包括:接收一个字符的解码;接收整帧后的解码及校错、本帧处理后的应答等项事务。

10、接收时,先进行帧解码,还原得到通信包后,再根据通信包内容作相应处理。设置一个全局变量LinkSR控制帧接收和解码。见表5表5 链路层控制变量LinkSR格式标志位76543210标志符ReservedTpktBufFullPhaseAct作 用通道状态帧缓冲区状态帧分隔标志 帧接收步骤(1)只要UART0收到0xc0字符,都把它当成帧界符处理,将LinkSR “PhaseAct”位取反。规定,PhaseAct置1时,为开帧,其后所收的数据均视为帧内数据;PhaseAct清0后,为关帧,其后所收的数据为帧外数据,均认为是非法数据。(2)若连续收到两个(包括两个)以上0xC0字符,则判为噪声干扰,

11、在初始化缓冲区和指针后,以末个0xC0为起始位置,重新开帧。(3)当监测到帧大于300字符时,判为数据溢出,链路层强制关帧,并丢弃帧内容。(帧缓冲区最多允许接收300个字符。)(1). 接收到完整的一帧数据后,进行帧解码。 接收超时控制方法:开帧即启动计时器。一帧必须在300ms内接收完毕。若超时,则将由定时中断服务程序关帧,帧内容丢弃。 将timer0设置成5ms轮回的计时器,一个时间片为5ms,设置一个超时计数器timer0Cnt。每次开帧时超时计数器设为0,timer0中断一次timer0Cnt加1,中断60次为300ms,强制关帧,并设置出错标志。帧接收软件流程见图2。开帧接收计数器=

12、0开超时定时器接收出错?是否0xC0?是否帧内?NYYNNY接收字符<5?YN放入缓冲区,关帧开始返回关帧,报错关帧,报错是否帧内?NY放入缓冲区,接收计数器加1接收字符>300?关帧,报错NY解码正确?N关帧,报错Y放入缓冲队列图2 帧接收流程图3.1.3 帧解码步骤(1). 收到0xC0字符则判为帧界符。(2). 收到0xDB后跟0xDC,则代之以0xC0。(3). 收到0xDB后跟n个0xDD,则删去一个0xDD字符。(4)校验和是通信包帧打包处理前从包标识至校验和之间所有字节之和,超出2字节的进位忽略。(5)校验正确后放入接收通信包缓冲区。解码软件流程见图3。3.2 数据发

13、送发送过程可分为两步:(1). 按通信包格式准备发送数据,不包括校验和。以命令包为例,为每一个命令编制一个应用层命令函数,函数中准备命令报数据,包括包标识01 、设备地址码、包长度、指令、参数1、参数2、 、参数n,放入一个缓冲区。图3 解码校验流程图P+1取下一个字符是0xDB?YN取一个字符开始返回是否0xC0?YN是0xDC?YN放入缓冲区0xC0是0xDD?YN放入缓冲区0xDB取数指针P=0P-1放入缓冲区P+1计算比较校验和校验正确?NY设置错误标志(2). 命令函数调用帧打包函数,将缓冲区首地址传给帧打包函数,由帧打包函数完成计算校验和、数据透明处理,即加上帧分界符0xC0并对帧

14、内0xC0字符进行处理,用0xDB和0xDC两个字符替换0xC0,如果含有0xDB字符,则在其后加0xDD字符。YN发送分帧符0xC0开始返回是否0xC0?YN取数指针p=0,校验和sum=0图4 帧发送流程图计算数据长度取一个字符p+1发送0xDB,0xDC发送完毕?计算校验和发送分帧符0xC0是否0xDB?YN发送0xDB,0xDD直接发送为节省内存空间,采用边处理边发送的方式。帧发送流程图见图4。3.3 应用层命令的实现用单片机作为上位机,控制SM-61指纹识别模块,是通过向模块发送各种控制命令实现的。如探测手指命令、录制指纹图像命令、生成指纹特征模版命令、指纹搜索命令,指纹模版上传命令

15、、指纹对比命令等。每一个命令都通过一个函数实现。下面按应答的复杂性分类说明。 单指令/应答型命令这类命令通过一次应答实现,指令包与应答包均无后续数据包,是最简单的形式。如探测手指命令源代码示例如下:/*-探测手指命令函数参数:无返回值: 0 按着手指;1 通信错误 2 没有手指;0xff 超时,无响应-*/unsigned char ZW_CMD_DetectFinger(void)unsigned char Cmd= 0x01, /命令包标识 0x00,0x00,0x00,0x00,/模块地址 0x00,0x01, /包长度 0x01; /指令码 unsigned int tmpCounte

16、r; unsigned char i,tmpLinkSR0; UART0_TX_Frame(Cmd,sizeof(Cmd);/发送指令 CLI(); /关中断,操作Timer0Counter0变量 Timer0Counter0=0; /超时计数器初始化 SEI(); /开中断 while(LinkSR0&(1<<Rx0DataOk)=0) CLI(); tmpCounter=Timer0Counter0; tmpLinkSR0= LinkSR0; /取得链路状态 SEI(); /开中断 if(tmpCounter>200) /1秒超时判定 return 0xff; /

17、超时,无响应 if(tmpLinkSR0&(1<<Frame0Erro)!=0) /帧接收错误 CLI();/关中断 LinkSR0&=(1<<Frame0Erro);SEI();/开中断 return 1; / 通信错误 /收到有效帧 CLI(); /关中断LinkSR0&=(1<<Rx0DataOk);SEI(); /开中断 for(i=0;i<10;i+) Cmdi=UART0_RxBuf1i; if(Cmd0!=0x07) /包标识不正确 return 1; / 通信错误 switch(Cmd7) /判断确认码 case

18、 0x00: return 0; /按着手指 break; case 0x01: return 1; /通信错误 break; case 0x02: return 2; /没有手指 break; return 2; /没有手指 多指令型命令这类命令通过多个单次应答子命令组合实现,如果一个子命令出错则整个命令失败。实现也比较简单,只要顺序调用单次应答命令即可。例如指纹录入命令由探测手指、录入图像、生成特征、移动特征、录入图像、生成特征、合并特征生成模版多个命令组成。 多应答型命令这类命令的应答返回数据量较大,由多个数据包组成,并且数据包是连续发送的,如果接收处理不及时,会丢失数据,所以帧接收采用接收缓冲队列技术。如上传图像指令,图像数据78K字节,分多个数据包上传。上传图像指令流程图见图5。开始返回收到应答?NN发送上传图像命令图5 上传图像命令流程图接收应答启动超时计数器最后一个吗?Y接收数据包可以接收?NY超时?启动超时计数器NN超时?YY结束语像SM-61模块指纹识别这样,通过串行接口以命令方式操作的智能模块和智能设备很多,SM-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论