📄 fpc1011.c
字号:
/* fps.c - fingerprint sensor driver */
/* Copyright Mistral Software Pvt Ltd. Corporation */
/*
Modification History
---------------------
Version 1.0,07Jul05,CS - Created
*/
/*
DESCRIPTION
------------
This module contains the fingerprint sensor driver functions.
*/
/*
INCLUDE FILES
--------------
*/
#include <stdlib.h>
#include <stdio.h>
#include "fpc1011.h"
#include "spi.h"
//#include "mcbsp55x.h"//cs testing
/* defines */
#define XEMPTY_BIT 0x04
#define RRDY_BIT 0x02
#define MAXROW 200 /* Total number of row in sensor pixel matrix */
#define MAXCOLUMN 152 /* Total number of column in sensor pixel matrix */
#define READ_REGS 0x50
#define READ_SPI_DATA 0x20
#define READ_SPI_STATUS 0x21
#define READ_SENSOR 0x11
#define WRITE_DRIVC 0x75
#define WRITE_ADC_REF 0x76
#define WRITE_SENSEM 0x77
#define WRITE_FIFO_TH 0x7C
#define WRITE_XSENSE 0x7F
#define WRITE_YSENSE 0x81
#define WRITE_XSHIFT 0x82
#define WRITE_YSHIFT 0x83
#define WRITE_XREADS 0x84
#define SHIFT_X 0x13
#define SHIFT_Y 0xC8
#define X_SENSE 0x01
#define Y_SENSE 0x01
/* typedefs */
/* static variables */
/* static function declarations */
/* function definitions */
/********************************************************************
*
* fps_init - Initializes the fingerprint sensor.
*
* PARAMETERS:
*
* RETURNS: FPS_OK on success
* FPS_ERROR on failure
*
* ERRNO:
*
*/
int sensorInit( )
{
int ret_val=0;
SPI_RESET;
SPI_SET;
spi_tx(WRITE_DRIVC, 0xFF);
spi_tx(WRITE_ADC_REF, 0x02);
return ret_val;
}
void printRegs()
{
unsigned int regData[8];
unsigned int incr=0;
unsigned int val=0;
spi_tx( READ_REGS, 0x00 );
/*Get the data*/
for(incr=0;incr<8;incr++)
{
spi_tx( READ_SPI_DATA, 0x00 );
regData[incr]=spi_rx( );
}
for(incr=0;incr<8;incr++)
{
printf("Reg no: %u, reg Data: %x \n",2*incr+1,( regData[incr] & 0xFF00 ) >> 8);
printf("Reg no: %u, reg Data: %x \n",2*incr+2, regData[incr] & 0x00FF );
}
}
void readImage( unsigned int * image_ptr )
{
unsigned int cntr_x = 0;
unsigned int cntr_y = 0;
unsigned int val = 0;
spi_tx( READ_SENSOR, 0x00 );
do
{
spi_tx( READ_SPI_STATUS, 0x00 );
val = spi_rx( );
}while( !( val & 0x0100 ) );
spi_tx(READ_SPI_DATA, 0x00 );
val = spi_rx( );
spi_tx(READ_SPI_DATA, 0x00 );
val = spi_rx( );
spi_tx(READ_SPI_DATA, 0x00 );
val = spi_rx( );
for( cntr_y = 0; cntr_y < MAXROW*MAXCOLUMN/2; cntr_y++ )
{
spi_tx(READ_SPI_DATA, 0x00 );
val = spi_rx( );
val = ( ~val );
*image_ptr = ( ( val & 0xFF00 ) >> 8 );
image_ptr++;
*image_ptr = ( val & 0x00FF );
image_ptr++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -