摘要:介绍MBF200的性能、结构及工作原理。实现基于MBF200的SPI型指纹采集系统设计。该采集系统具有自动检测指纹、结构简单、使用方便的特点。
关键词:DSP SPI MBF200 指纹采集系统
引 言
1 MBF200结构与性能
MBF200是富士通公司的电容式固体指纹采集传感器,能采集到500dpi的指纹图像。它的传感器是256×300的阵列,可以在3.3V~5V的宽电压范围内操作。MBF200的性能主要有以下几点:
① 集成了一个8位A/D变换器。A/D变换器的输入可以是MBF200的指纹传感器阵列的输出,也可以是由
MBF200的AIN引脚接入的模拟信号。
② 带有3种总线接口,即8位微处理器(MCU)总线接口、集成的USB全速接口及串行周边设备接口(SPI),使芯片的应用设计更加灵活。
③ 特有自动指纹检测功能。
MBF200的内部结构如图1所示。
-
-
water 发表于 2006/6/10 10:49:58
无论在哪一种总线接口模式下,对MBF200的控制都是通过写它的控制寄存器来完成的,包括CTRLA、CTRLB、CTRLC。MBF200共有19个寄存器。
值得提出的是,MBF200的时钟有两种选择。根据图1可以看出:“多谐振荡”和“晶体电路”就是它的两组可选的时钟源。CTRLB中的位1(XTALSEL)是用来在这两者之间进行选择的。XTALSEL=0,表示选用内部的“多谐振荡”作为MBF200的时钟;XTALSEL=1,表示时钟源来自芯片的XTAL1引脚,此时,芯片既可以外接有源晶体,也可以接无源晶体。CTRLB的各位含意会在后面介绍。
在MBF200的三种接口之中,SPI接口是比较简捷的一种,包括SCK、MISO、MOSI和SCS四条信号线。此时,它的时钟源可以从外部输入;也可以在外接一个晶体后,利用MBF200内部的晶体电路来获得时钟源。图1中,在选择了SPI模式后,它的其它两种模式(USB、MCU)是自动禁止的。实际上,MBF200与控制芯片的SPI接口时,它只能工作在SPI的从模式下(slave),只有当MBF200工作于USB模式下时,它才是作为一个SPI的主设备(master)。
MBF200的一些状态寄存器,如DTR、DCR、PGC、THR等,需要在进行指纹采集之前被初始化。MBF200共有19个寄存器。这里仅仅对两个比较重要的寄存器CTRLA、CTRLB进行说明。
1.1 CTRLA(控制寄存器A)
写该寄存器来初始化图像转换;读该寄存器来读取A/D转换的结果。
GETSUB、GETIMG和GETROW三位选定了一种图像存取模式并且初始化了A/D转换器的转换序列。 AINSEL位选定了A/D转换器的来源。向GETSUB、GETIMG和GETROW中的任意一位写入一个“1”,都将放弃当前对应模式的图像摄取并重新开始新的该模式的图像摄取,而且这三位每次最多只能有一位被置成“1”。如果这三位中有多于一位被置成“1”,那么图像的转换就不会开始。当GETIMG被置成“1”后,MBF200会完成以下一系列动作:
◇行地址被置成0;
◇列地址被置成0;
◇自动开始图像的行摄取;
◇第一个象素的A/D转换自动开始。
当向CTRLA中写“0”时,除了会清除AINSEL之外,并不会使MBF200放弃当前的图像。读CTRLA的状态可以得到A/D的转换的结果。的上升沿会使A/D转换器开始下一次转换。
1.2 CTRLB(控制寄存器B)
CTRLB必须在程序的最开始对它的位0和位2置“1”,以使能MBF200。
控制寄存器A、B的各位含意如表1所列。
引用 water 2006/6/10 10:49:58 发表于2楼的内容
-
-
water 发表于 2006/6/10 10:50:45
无论在哪一种总线接口模式下,对MBF200的控制都是通过写它的控制寄存器来完成的,包括CTRLA、CTRLB、CTRLC。MBF200共有19个寄存器。
值得提出的是,MBF200的时钟有两种选择。根据图1可以看出:“多谐振荡”和“晶体电路”就是它的两组可选的时钟源。CTRLB中的位1(XTALSEL)是用来在这两者之间进行选择的。XTALSEL=0,表示选用内部的“多谐振荡”作为MBF200的时钟;XTALSEL=1,表示时钟源来自芯片的XTAL1引脚,此时,芯片既可以外接有源晶体,也可以接无源晶体。CTRLB的各位含意会在后面介绍。
在MBF200的三种接口之中,SPI接口是比较简捷的一种,包括SCK、MISO、MOSI和SCS四条信号线。此时,它的时钟源可以从外部输入;也可以在外接一个晶体后,利用MBF200内部的晶体电路来获得时钟源。图1中,在选择了SPI模式后,它的其它两种模式(USB、MCU)是自动禁止的。实际上,MBF200与控制芯片的SPI接口时,它只能工作在SPI的从模式下(slave),只有当MBF200工作于USB模式下时,它才是作为一个SPI的主设备(master)。
MBF200的一些状态寄存器,如DTR、DCR、PGC、THR等,需要在进行指纹采集之前被初始化。MBF200共有19个寄存器。这里仅仅对两个比较重要的寄存器CTRLA、CTRLB进行说明。
1.1 CTRLA(控制寄存器A)
写该寄存器来初始化图像转换;读该寄存器来读取A/D转换的结果。
GETSUB、GETIMG和GETROW三位选定了一种图像存取模式并且初始化了A/D转换器的转换序列。 AINSEL位选定了A/D转换器的来源。向GETSUB、GETIMG和GETROW中的任意一位写入一个“1”,都将放弃当前对应模式的图像摄取并重新开始新的该模式的图像摄取,而且这三位每次最多只能有一位被置成“1”。如果这三位中有多于一位被置成“1”,那么图像的转换就不会开始。当GETIMG被置成“1”后,MBF200会完成以下一系列动作:
◇行地址被置成0;
◇列地址被置成0;
◇自动开始图像的行摄取;
◇第一个象素的A/D转换自动开始。
当向CTRLA中写“0”时,除了会清除AINSEL之外,并不会使MBF200放弃当前的图像。读CTRLA的状态可以得到A/D的转换的结果。的上升沿会使A/D转换器开始下一次转换。
1.2 CTRLB(控制寄存器B)
CTRLB必须在程序的最开始对它的位0和位2置“1”,以使能MBF200。
控制寄存器A、B的各位含意如表1所列。
引用 water 2006/6/10 10:50:45 发表于3楼的内容
-
-
water 发表于 2006/6/10 10:54:56
2 MBF200的SPI接口特点
SPI协议是一个同步串行数据传输协议,协议假定微控制器的SPI移位寄存器在SCLK的下降沿动作。对于MBF200而言,在时钟上升沿锁存MOSI引脚的数据,在下降沿将数据送至MISO引脚,如图2所示。MBF200的SPI通信协议的具体内容如下:
◇MOSI线上的数据在SCK的上升沿被采样;
◇MISO线上的数据在SCK的下降沿发生改变;
◇SCK在空闲状态时,可以为高电平,也可以为低电平;
◇串行传输过程中,高位在前(最先被移出)。
引用 water 2006/6/10 10:54:56 发表于4楼的内容
-
-
water 发表于 2006/6/10 10:58:15
3 MBF200的SPI接口应用
下面结合MBF200的SPI接口特点,介绍如何以TMS320VC5402(简称5402)作为主控制器,完成MBF200对指纹数据的采集。5402的McBSP是与SPI兼容的。这里,把5402配置成SPI的主设备(master),MBF200工作在SPI协议下的从模式(slave)。多通道缓冲串行口McBSP的功能是提供器件内外数据的串行交换。同以前的串口相比,McBSP串口具有相当大的灵活性。表2给出了有关5402的McBSP引脚说明[1]。
引用 water 2006/6/10 10:58:15 发表于5楼的内容
-
-
water 发表于 2006/6/10 10:59:52
5402提供的时钟停止模式可用于SPI协议通信。当McBSP被配置为时钟停止模式时,发送器和接收器在内部是同步的,即可将发送数据帧时钟(BFSX)用作从器件使能(即),而将发送数据位时钟(BCLKX)用作SPI协议中SCK。由于接收数据位时钟(BCLKR)和接收数据帧时钟(BFSR)在内部分别与BFSX和BCLKX相连,因此,该引脚不能用于SPI模式。
当McBSP被配置为一个主设备时,发送输出信号(BDX)被用作SPI协议的MOSI信号,而接收输入信号(BDR)则被用作MISO信号。McBSP用作主设备时,与MBF20的SPI接口如图3所示。DSP的CLKX用作SPI的串行位同步时钟;BDX用作SPI的主控制器的输出;BDR用作SPI的主控制器的输入;BFSX用作SPI的串行帧同步信号。当5402的McBSP被用于时钟停止模式,并且设置CLKSTP=10,CLKXP=1时,McBSP的SPI时序与MBF200的时序吻合,如图4所示。
引用 water 2006/6/10 10:59:52 发表于6楼的内容
-
-
water 发表于 2006/6/10 11:01:48
4 采集系统的设计与实现
4.1 硬件设计
5402外扩RAM和ROM。RAM用来存放指纹数据,ROM用来存放DSP程序。采集系统的各部分连接如图5所示。其中,MAX3111是提供一个RS232接口,通过这个接口,指纹采集系统可以向外(如PC机)提供指纹数据。DSP和MBF200都是3.3V供电。MBF200无需外接晶体,而是选用内部12MHz振荡器来提供时钟。
引用 water 2006/6/10 11:01:48 发表于7楼的内容
-
-
water 发表于 2006/6/10 11:05:06
4.2 软件设计
要完成MBF200与5402之间的SPI接口通信,还必须在5402上运行程序。这个程序对于5402的工程师来说很简单,软件流程如图6所示。只是有一点值得注意:当利用5402接收指纹数据时,由于MBF200在某一行没有完成之前,帧信号必须一直有效,就是说这一帧的长度为256×8位。所以,只能用5402的DMA来接收,DMA的接收帧长应该配置为128×16位。5402的部分汇编程序如下:
……;(MCBSP的初始化)
*打开自动缓冲单元(ABU),打开DMA进行128字×16位帧的DMA接收,通道0
STM #DMSRC1,DMSA ;设置源地址为DRR10
STM #DRR10,DMSDN
STM #DMDST1,DMSA ;设置目的地址为3200H
STM #3200H,DMSDN
STM #DMCTR1,DMSA ;设置缓冲区的大小为80H个单字
STM #80H,DMSDN
STM #DMSFC1,DMSA
STM #0001000000000000B,DMSDN
STM #DMMCR1,DMSA
STM #0101000001001101B,DMSDN
STM #DMIDX0,DMSA
STM #0001H,DMSDN
STM #0000001000000011B,DMPREC
……;(这里是INT0的中断服务,用于接收MBF200的数据)
RET
引用 water 2006/6/10 11:05:06 发表于8楼的内容
-
-
water 发表于 2006/6/10 11:06:56
全部代码已经通过了调试,可以取得MBF200 的指纹数据,实现指纹采集的目的。图7是由MBF200采集到的指纹图像。该图是将原始数据通过RS232传送给PC机,然后利用Matlab工具把这些数据转化成图像的。
结 语
基于MBF200的指纹采集系统使用起来很方便,易于嵌入到其它的系统当中。该采集系统已经用于一款指纹锁的设计之中。
引用 water 2006/6/10 11:06:56 发表于9楼的内容