当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所示。

4、 采集系统的设计与实现

4.1 硬件设计

5402外扩RAM和ROM。RAM用来存放指纹数据,ROM用来存放DSP程序。采集系统的各部分连接如图5所示。其中,MAX3111是提供一个RS232接口,通过这个接口,指纹采集系统可以向外(如PC机)提供指纹数据。DSP和MBF200都是3.3V供电。MBF200无需外接晶体,而是选用内部12MHz振荡器来提供时钟。

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

全部代码已经通过了调试,可以取得MBF200 的指纹数据,实现指纹采集的目的。图7是由MBF200采集到的指纹图像。该图是将原始数据通过RS232传送给PC机,然后利用Matlab工具把这些数据转化成图像的。