S3C2410与指纹传感器 MBF200的SPI通信设计
随着网络技术和通信技术的发展,传统的身份认证技术对于信息安全表现得越来越有些力不从心了。由于人的身体特征具有唯一性和稳定性,人们开始把目光转向了生物识别技术,如指纹、虹膜、DNA、掌形识别等。在众多的特征识别中,指纹采集设备由于具有体积小、功耗低、稳定性好、误判概率低等优点,而受到人们的青睐。指纹传感器是指纹采集设备中的核心器件,在此选用富士通公司的MBF200。它是一款先进的固态指纹传感器芯片,具有性能高、功耗低、成本低、接口方便等特点。这使得在嵌入式系统中实现数据的传输更加方便。S3C2410是三星公司推出的ARM920T核微处理器,主要面向手持设备以及高性价比、低功耗的应用,且在片上集成了丰富的组件,有利于其扩展。
1 MBF200的结构和特点介绍
MBF200是为嵌入式系统设计的高性能、低功耗的电容指纹传感器。该芯片传感区域为1.28 cm×1.50 Cm,具有256×300传感器阵列和500 dpi的分辨率,集成8位A/D转换器,工作电压为3.3~5 V,且有指纹自动检测功能。提供3种总线接口:8位微处理器总线接口(MCU)、串行外围设备接口(SPI)和集成USB全速接口。鉴于接口简单,实现容易且占用的I/O较少,本文采用SPI接口方式。
MBF200的内部结构如图1所示。其中256×300传感器阵列用于产生感应电压;功能寄存器用于对芯片进行操作控制;控制电路用于传感器与外部接口电路的控制,负责数据的读出与写入;地址索引寄存器与数据寄存器分别用于对功能寄存器的地址选择及数据的读写;采样保持及A/D转换电路用于对传感器阵列所产生的电压进行采样。另外,多频振荡电路用于为芯片提供时钟信号。
MBF200共有19个寄存器,对芯片的读/写操作实际上就是对寄存器的操作,所以了解寄存器的功能才能学会芯片的使用。由于本文采用的是串行外围设备接口(SPI)的从操作模式,这里仅对用到的一些重要寄存器进行说明。
(1)CTRLA(控制寄存器A)
控制寄存器A的功能说明如表1所列。
写该寄存器开始图像转换,读该寄存器来获取A/D转换结果。GETSUB、GETIMG和GETROW三位选定了相应的一种图像存取模式,并且初始化了A/D转换器的转换序列。ANISEL位确定了A/D转换的来源。置GETSUB位为1,开始捕获由RAH、RAL、CAL、REH、REL、CEL确定的矩形图形区域。置GETIMG位为1,开始捕获整幅图像而不用考虑行列寄存器。置GETROW位为1,开始捕获由RAH、RAL确定的行单元数据。向GETSUB、GETIMG和GETROW中的任意一位写入1个“1”,都将放弃当前对应模式的图像获取并重新开始该新模式的图像获取,而且这3位每次最多只能有1位被置成1。如果这3位中有多于一位被置成1,那么图像的转换就不会开始。当GETIMG被置成l后,MBF200会完成以下一系列动作:
①行地址被置成O;
②列地址被置成O;
③自动开始图像的行获取;
④第一个像素的A/D转换自动开始。
当向CTRLA中写“O”时,除了会清除ANSEL之外,并不会使MBF200放弃当前的图像。读CTRLA的状态可以得到A/D转换的结果。
(2)CTRLB(控制寄存器B)
控制寄存器B的功能说明如表2所列。
在SPI模式中,AFDEN与ENABLE联合使用,通过产生中断来唤醒微处理器和启动A/D转换使能,这样可以节省电量。控制寄存器CTRLB中的AUTOINCEN位用于设置是否启动自动增加行列地址寄存器的值。当此位被设置1时,若某一个像素的A/D转换值被读取,则列地址自动增加,同时下一个像素的A/D转换自动开始。一旦某行的最后一个像素的灰度值被读取,则行地址自动增加,同时这行的第一个像素的A/D转换自动开始。
(3)ICR中断控制寄存器
这个寄存器主要控制指纹传感器的2个中断源,中断请求O与手指探测中断对应,中断请求1与引脚EXTINT的外部中断对应。各位的详细说明请查阅参考文献。
2 硬件接口设计
2.1 MBF200的SPI接口特性
在SPI从模式中,传感器支持的数据传输格式为SPImode(O,0)和SPI mode(1,1)。如图2所示,MBF200的时序要求如下:
①在数据传输中,SCS保持低电平;
②MOSI线上的数据在SCK的上升沿被采样;
③SCK在空闲状态时,可为高电平,也可为低电平;
④MISO线上的数据在SCK的下降沿发生变化;
⑤最高位先被移出;
⑥指令格式是8位指令码加8位地址码和8位数据。
2.2 S3C2410的SPI接口特点
S3C2410有2个串行外围设备接口(SPI),每个SPI接口都有2个分别用于发送和接收的8位移位寄存器。在SPI通信中,数据同时被发送(串行移出)和接收(串行移入),8位串行数据的传输速率由相关的控制寄存器决定。
SPI的接口特性:与SPI接口协议v2.11兼容;8位用于发送的移位寄存器;8位用于接收的移位寄存器;8位预分频逻辑;查询、中断和DMA传送模式。
把S3C2410的SPI配置为主设备,完成对MBF200的接口设计,硬件连接如图3所示。SPIMOSI0作为主设备的输出,SPIMISOO作为主设备的输入,SPICLK0用作SPI通信的串行时钟。且S3C2410支持4种不同的传输格式,可以保证主从设备时序的一致性。
S3C2410的SPI接口操作:通过SPI接口,S3C2410可以与MBF、200同时发送和接收8位数据。串行时钟线与两条数据线同步,用于移位和数据采样。数据传输速率由SPPREn寄存器控制,通过修改预分频值来调整波特率。当GPGO输出为低电平时,向SPDATn寄存器写入字节数据,SPI发送和接收操作就同时启动。
3 软件设计
软件设计主要实现S3C2410控制MBF200型指纹传感器进行操作,采用移植性强的C语言在ARM的集成开发环境ADS1.2下编写,主程序流程如图4所示。目标板上电后就对整个采集系统进行初始化操作,包括ARM系统的初始化和MBF200的初始化,对它们进行参数配置。初始化完成后就开始检测指纹传感器上是否有手指,如果有就发生中断,在中断服务程序进行指纹图像的采集,并保存起来。
3.1 S3C2410系统的初始化
任何一个系统启动的最初任务都是硬件的初始化,为后面的应用程序的执行准备好一些基本的硬件环境,包括看门狗和中断的设置、CPU的速度和时钟频率的配置、相关存储器的设置,以及与SPI通信相关的寄存器的设置。部分代码如下:
3.2 MBF200的初始化
MBF200共有19个寄存器,除了SRA、CIDH、CIDL之外,在指纹采集之前必须对其初始化。
3.3 指纹采集程序设计
指纹采集工作由检测到手指中断开始,向CTRLA寄存器写入0x02开始整个区域的指纹图像数据采集;行捕获时间和A/D转换时间结束后,读取CTRLA寄存器,即当前像素点的8位数字量数值。每次读取当前像素点的数值后自动进行下一像素点的A/D转换,循环读取CTRLA的值到指定的空间就可以获得一枚指纹图像的数据。指纹采集程序流程如图5所示。
由于MBF200与指纹传感器FPS200的结构和采集原理类似,根据FPS200的行捕获时间和A/D转换时间的算法,可估算出MBF200的行捕获时间TROW和A/D转换时间TA/D。计算方法如下:
其中:TS为传感器时钟周期,DT[6:O]为放电时间常数。由于2个等待时间不易过短,所以估算出丁RROW为
结 语
随着信息安全越来越受重视,指纹自动识别系统会有更广阔的应用空间。本文所研究的是指纹识别系统的最前端――指纹采集模块,结合MBF200自身的特点,提出了与S3C2410间的SPI通信方式。这种方式结构简单,使用方便,易于嵌入。
评论