📄 main.c
字号:
#include "syscfg.h"
#include "reg51.h"
#include "define.h"
#include "extData.h"
#include "dvCPU.h"
#include "MTV415.h"
#include "utility.h"
#include "eeprom.h"
#include "fpga.h"
#include "dviic.h"
#include "stdio.h"
#include "dvGxCtrl.h"
BOOL CalibrationProcess(BYTE cGxBoardSel,BYTE cInputFormatSel,BYTE cChannelSel)
{
BOOL bFlag;
BYTE cGain;
WORD wOffset;
BYTE cCalibrationStatus;
BOOL bTimeStatus;
bTimeStatus =TRUE;
wOffset = m_awOffsetItemValue[cChannelSel];
cGain = m_acGainItemValue[cChannelSel];
GxOffsetSet(cChannelSel,wOffset);
GxGainSet(cChannelSel,cGain);
bFlag = 1;
m_nCalibrationTimer =5000;
while(bFlag&&m_nCalibrationTimer>0)
{
#ifdef IIC
dvRegisterRead(IIC_FPGA_SLAVE_Addr,0xe0,&cCalibrationStatus );
#endif
#ifdef DATABUS
Delay();
cCalibrationStatus=CNTLGain;
Delay();
Delay();
#endif
printf("Clb st = %4x\n",cCalibrationStatus);
switch(cCalibrationStatus&0x1f)
{
case 0:
bFlag =0;
break;
case 1:
wOffset++;
break;
case 2:
wOffset--;
break;
case 4:
cGain++;
break;
case 8:
cGain--;
break;
default:
break;
}
GxOffsetSet(cChannelSel,wOffset);
GxGainSet(cChannelSel,cGain);
}
if(m_nCalibrationTimer==0)
{
bTimeStatus = FALSE;
printf("Gx board =%bd,InputFormat=%bd,channel %bd set fail !\n",cGxBoardSel,cInputFormatSel,cChannelSel);
}
else
{
m_acGainItemValue[cChannelSel] =cGain;
m_awOffsetItemValue[cChannelSel] = wOffset;
Delay();
Delay();
Delay();
// printf("Gx channel %bd set successfull\n",k
}
return bTimeStatus;
}
/*
BOOL OffsetCalibration(BYTE cGxBoardSel,BYTE cChannelSel,WORD wGRefOffset)
{
BOOL bTimeStatus;
WORD wOffset;
bTimeStatus =TRUE;
m_nCalibrationTimer =5000;
wOffset = m_awOffsetItemValue[cChannelSel];
while(m_nCalibrationTimer>0)
{
if(RefOffsetGet()>(wGRefOffset+1))
wOffset--;
else if (RefOffsetGet()<(wGRefOffset-1))
wOffset++;
else
break;
}
GxOffsetSet(cChannelSel,wOffset);
if(m_nCalibrationTimer==0)
{
bTimeStatus = FALSE;
printf("Gx board =%bd,InputFormat=1,channel %bd set offset Calibration fail !\n",cGxBoardSel,cChannelSel);
}
else
m_awOffsetItemValue[cChannelSel] = wOffset;
return bTimeStatus;
}
*/
main()
{
BYTE i,j,k,t;
BYTE cBoardSel;
BOOL bTimeStatus;
BYTE cBoardSelStatus;
BYTE PinDetectStatus;
WORD wRefOffset;
//BYTE cTempData;
//BYTE cData;
m_nCalibrationTimer =0;
dvCPUInit();
printf("inital CPU is ok!\n");
TimeDelay(500); //wait for 1 second
if(!InitFPGA())//inital the FPGA
{
FPGABoardLEDSet(0,FALSE);
printf("inital the FPGA board fail!\n");
return;
}
else
{
printf("inital the FPGA board successful!\n");
FPGABoardLEDSet(0,TRUE);
}
//EEPROMGxSettingSet();
//EEPROMGxSettingGet();
// FPGABoardLEDSet(1,TRUE);
#ifdef IIC
dvRegisterWrite(IIC_FPGA_SLAVE_Addr, 0xe8, 0x00);
#endif
#ifdef DATABUS
DisplayLED=0x00;
#endif
for(i=0;i<2;i++)
FPGABoardClear(i);
while(1)//detect FPGA board
{
cBoardSel = 2;
#ifdef IIC
dvRegisterRead(IIC_FPGA_SLAVE_Addr, 0xe7,&cBoardSelStatus);
#endif
#ifdef DATABUS
cBoardSelStatus=ReadyAlert;
//Delay();
#endif
//printf("FPGA board status = %bd\n",cBoardSelStatus);
if((cBoardSelStatus&0x01)==1)
cBoardSel =0;
else if((cBoardSelStatus&0x02)==2)
cBoardSel=1;
else
cBoardSel =2;
//printf("FPGA board status = %bd\n",(BYTE)bBoardBStatus);
//printf("FPGA board status = %bd\n",(BYTE)bBoardAStatus);
if(cBoardSel==1||cBoardSel==0)
{
#ifdef IIC
dvRegisterWrite(IIC_FPGA_SLAVE_Addr, 0xe8, 0x00);
#endif
#ifdef DATABUS
DisplayLED=0x00;
#endif
FPGABoardSelect(cBoardSel);
printf(" board select %bd \n",cBoardSel);
PinDetectStatus = P1;
for(i=0;i<4;i++) //select Gx board
{
if(PinDetectStatus&(1<<(1+i)))
{
printf("Gx board %bd :UOC is not bus off\n",i);
printf("Gx board %bd set fail\n",i);
continue;
}
bTimeStatus =TRUE;
GxBoardLEDSet(i,1);
GxBoardSelect(i);
printf("select Gx board %bd\n",i);
GxADCTestSet();
TestSignalSet(0);
for(j=0;j <2;j++) //select input format
{
if(!bTimeStatus) break;
//printf("select Format %bd\n",j);
InputFormatSelect(j);
GxInitial(j);
#ifdef Debug
EEPROMUocSettingGet(j);
#endif
for(t=0;t<3;t++) //select Channel
{
if(t==0) k=1;
else if(t==1) k=0;
else k=2;
RGBChannelSelect(k);
if(j==1&&(k==0||k==2))
{
TestSignalSet(1);
GxGainSet(k,0xff);
wRefOffset=RefOffsetGet();
printf("Gx board =%bd,InputFormat=1,channel %bd get real time offset =0x%4x!\n",i,k,wRefOffset);
RefGainSet(RefGainSetting[j*3+k]);
RefOffsetSet(wRefOffset);
TestSignalSet(0);
}
else
{
RefGainSet(RefGainSetting[j*3+k]);
RefOffsetSet(RefOffsetSetting[j*3+k]);
}
bTimeStatus = CalibrationProcess(i,j,k);
if(!bTimeStatus) break;
if(bTimeStatus)
GxEEPROMWrite(j);
}
if(bTimeStatus)
{
GxBoardLEDSet(i,3);
printf("Gx board %bd set successfull\n",i);
}
else
{
GxBoardLEDSet(i,2);
printf("Gx board %bd set fail\n",i);
}
}
FPGABoardClear(cBoardSel);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -