📄 aes1510.c
字号:
if(OneFrame_OK == 1 )
{
NoFinger_Time = 0;
OneFrame_OK = 0;
if(FLAG1 == 1)
{
DDresult = JointAliveFrame(FrameImageBuf,FrameEvenOddToggle);
if(DDresult == 0) //我们的拼接算法
{
if (FrameEvenOddToggle ==1)
{FrameEvenOddToggle=0; }
else if(FrameEvenOddToggle ==0)
{FrameEvenOddToggle =1;}
}
}
FLAG ++;
if(FLAG > 3)
{
FLAG = 4;
FLAG1 = 1;
}
}
if(NoFinger_Time >= 10)
{
NoFinger_Time = 0;
if(OverTimes != 0)
{
AdjustCircleLines();
ConGetImageStop( );
ProcessData();
return 0;
}
else
{
if(ValidHeight <= 24)
{
ConGetImageStop( );
return 1;
}
if(ValidHeight <= (ImageHgtLit/2+64))
{
ConGetImageStop( );
return 2;
}
else
{
AdjustCircleLines();
ConGetImageStop( );
ProcessData();
return 0;
}
}
}
}
}
/**********************************************************************
*subroutine:wait transmit ready for spi bus
*input:none,output:none
***********************************************************************/
void sWaitforTrdy(void)
{
while(USART3_CSTAT & 0x0004);
}
/*********************************************************************
*subroutine:wait receive ready for spi bus
*input:none,output:none
**********************************************************************/
void sWaitforRrdy(void)
{
while(!(USART3_CSTAT & 0x0002));
}
/**************************************************************************
*subroutine:read byte from spi bus
*input:none,output:byte
***************************************************************************/
unsigned int uReadSPI3Byte(void)
{
unsigned int TimeCount1;
while(USART3_CSTAT & 0x0004);
USART3_TXREG1 = 0xff;
TimeCount1 = 0;
while(1)
{
if(USART3_CSTAT & 0x0002)
{
break;
}
else
{
TimeCount1++;
if(TimeCount1 >=200)
{
TimeCount1 = 0;
return 0x1234;
}
}
}
return USART3_RXREG1;
}
/************************************************************************
*subroutine:write spi byte to sensor
*input:byte,output:none
*************************************************************************/
void sWriteSPI3Byte(unsigned int uWriteSPIByte)
{
unsigned int i;
sWaitforTrdy();
USART3_TXREG1 = uWriteSPIByte;
sWaitforRrdy();
i = USART3_RXREG1;
}
/**************************************************************************
*subroutine:write sensor
*input:sensor register address and data,output:none
*****************************************************************************/
void sWriteAES1510RegByte(unsigned int uAddress,unsigned int uData)
{
sWriteSPI3Byte(uAddress);
sSensorDelayUs(5);
sWriteSPI3Byte(uData);
sSensorDelayUs(5);
}
/**************************************************************************
*subroutine:delay for writing or reading sensor
***************************************************************************/
void sSensorDelayUs(unsigned int uDelay)
{
unsigned int i;
unsigned int j;
for(j=0;j<uDelay;j++)
for(i=0;i<(12/2-1);i++)
asm("nop");
return;
}
void sFrameJointDataFormat()
{
unsigned int i ;
unsigned int uRow ;
unsigned int uLine ;
unsigned int uTempValue ;
unsigned int j = 0;
unsigned int uToggleValue;
uToggleValue = FrameEvenOddToggle * 128 * 8;
while(!(PIO_DATA1 & 0x0004));
while(uReadSPI3Byte()!=0xE0);
for(uRow = 1;uRow <= 512;uRow += 4)
{
uLine = 0;
for(i = uRow;i < (4 + uRow);i ++)
{
while(!(PIO_DATA1 & 0x0004));
uReceiveSensorTestImageData[0] = uReadSPI3Byte();
uTempValue = ~uReceiveSensorTestImageData[0];
FrameImageBuf[uToggleValue + j + uLine] = ((uTempValue & 0x000f) << 4);
uLine = uLine + 128;
FrameImageBuf[uToggleValue + j + uLine] = uTempValue & 0x00f0;
uLine = uLine + 128;
}
j = j + 1;
}
while(!(PIO_DATA1 & 0x0004));
while(uReadSPI3Byte()!=0xDE);
for(i = 0;i<16;i++)
{
while(!(PIO_DATA1 & 0x0004));
uReceiveSensorTestImageData[i] = uReadSPI3Byte();
}
while(!(PIO_DATA1 & 0x0004));
//while(uReadSPI3Byte()!=0xDF);
for(i = 0;i<135;i++) //134
{
while(!(PIO_DATA1 & 0x0004));
a[i] = uReadSPI3Byte();
}
OneFrame_OK = 0;
asm("nop");
if((uReceiveSensorTestImageData[0] < (IMAG_THRS))&&(uReceiveSensorTestImageData[15] < IMAG_THRS+10) )
{
// if(FrameDetectFingerVar(FrameEvenOddToggle))
// {
OneFrame_OK = 1;
// }
// NoFinger_Time = 0;
// else
// {
// NoFinger_Time ++;
// }
}
else
{
NoFinger_Time ++;
}
asm ("nop");
asm ("nop");
}
void FingerDETECT(void)
{
unsigned int i ;
unsigned int uRow ;
unsigned int uLine ;
unsigned int uTempValue ;
unsigned int j = 0;
unsigned int uToggleValue;
unsigned int FingerOndetect;
unsigned int TimeCount;
uToggleValue = FrameEvenOddToggle * 128 * 8;
while(!(PIO_DATA1 & 0x0004));
TimeCount = 0;
while(1)
{
if (uReadSPI3Byte() == 0xDE)
{
break;
}
else if(uReadSPI3Byte() == 0x1234)
{
return ;
}
else
{
TimeCount ++;
if(TimeCount >= 500)
{
return ;
}
}
}
for(i = 0;i<18;i++)
{ while(!(PIO_DATA1 & 0x0004));
uReceiveSensorTestImageData[i] = uReadSPI3Byte();
}
FingerOndetect = 0;
OneFrame_OK = 0;
FingerOndetect = uReceiveSensorTestImageData[13]+uReceiveSensorTestImageData[14]+uReceiveSensorTestImageData[15];
if((uReceiveSensorTestImageData[0] < IMAG_THRS))
{
OneFrame_OK = 1;
}
else
{
Detect_Time = 0;
NoFinger_Time ++;
}
asm ("nop");
asm ("nop");
}
void ProcessData()
{
unsigned int temp1,temp2,temp3,temp4,temp5;
unsigned int *SourceADD = (int *)(0x6800);
unsigned int *DestiADD = (int *)(0x6800);
unsigned int i ;// 0~~~~~~288
unsigned int j ;// 0~~~~~~128
for(i = 0;i<288;i++)
{
for(j = 0;j<128;j++)
{
if(j == 0)
{
/*temp1 = *SourceADD & 0xF000;
temp2 = (*SourceADD & 0xF000)>> 8;
temp3 = 2* (*SourceADD & 0x00F0);
temp4 = *(++SourceADD) & 0xF000 >> 8;
temp5 = (temp2 +temp3 +temp4)/4;
puReceiveData[0] = temp1 | temp5; */
puReceiveData[j] = *SourceADD;SourceADD ++;
}
else if(j == 127)
{
/* temp1 = *(--SourceADD) & 0x00F0 ;
temp2 = 2* ((*(++SourceADD) & 0xF000)>>8);
temp3 = *(SourceADD) & 0x00F0;
temp4 = (temp1 + temp2 +temp3)/4;
temp5 = *(SourceADD)& 0x00F0;
puReceiveData[127] = (temp4 << 8)|temp5; */
puReceiveData[j] = *SourceADD;SourceADD ++;
}
else
{
temp1 = *(--SourceADD) & 0x00F0;
temp2 = (*(++SourceADD) & 0xF000)>>8;
temp3 = *(SourceADD) & 0x00F0;
temp4 = (temp1 + 2*temp2 +temp3)/4;
temp1 = (*SourceADD & 0xF000)>>8;
temp2 = *SourceADD & 0x00F0;
temp3 = (*(++SourceADD) & 0xf000)>>8;
temp5 = (temp1 + 2*temp2 +temp3)/4;
puReceiveData[j] = (temp4 << 8)|temp5;
}
}
for(j = 0;j<128;j++)
{
*DestiADD = puReceiveData[j];
DestiADD ++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -