?? iopin.c.bak
字號(hào):
#include "ICETEK-C6713-A.h"
//////////////////////////////////////////////
// 1.在程序中"break point"注釋行語句上加軟件斷點(diǎn)
// 2.菜單view->graph->Image:
// color space = RGB
// Start Address -R Source = y
// Start Address -G Source = y
// Start Address -B Source = y
// Lines Per Display = 288
// Pixels Per Line = 720
// Byte Packing to Fill 32 Bits = No
// Image Origin = Top Left
// 3.按F5運(yùn)行到斷點(diǎn)可顯示采集圖像
// 4.轉(zhuǎn)動(dòng)攝像頭后再按F5可再次采集
///////////////////////////////////////
#define IDKCCMDRESET 2
#define IDKCCMDCAPTURE 4
#define IDKCCMDRESETRP 8
#define IDKCCMDRESETWP 0x10
#define IDKCCMDCOLOR 0x20
#define IDKIMGREADY 2
#define PLL_BASE_ADDR 0x01b7c000
#define PLL_PID ( PLL_BASE_ADDR + 0x000 )
#define PLL_CSR ( PLL_BASE_ADDR + 0x100 )
#define PLL_MULT ( PLL_BASE_ADDR + 0x110 )
#define PLL_DIV0 ( PLL_BASE_ADDR + 0x114 )
#define PLL_DIV1 ( PLL_BASE_ADDR + 0x118 )
#define PLL_DIV2 ( PLL_BASE_ADDR + 0x11C )
#define PLL_DIV3 ( PLL_BASE_ADDR + 0x120 )
#define PLL_OSCDIV1 ( PLL_BASE_ADDR + 0x124 )
#define CSR_PLLEN 0x00000001
#define CSR_PLLPWRDN 0x00000002
#define CSR_PLLRST 0x00000008
#define CSR_PLLSTABLE 0x00000040
#define DIV_ENABLE 0x00008000
void Delay(unsigned int nTime); // 延時(shí)
void StartIIC(void); // 啟動(dòng)I2C總線傳輸
void StopIIC(void); // 停止I2C總線傳輸
void AckIIC(void);
void WriteIIC(unsigned char data); // 寫字節(jié)數(shù)據(jù)到I2C總線
void Init5150(void); // 初始化ICETEK-TVP5150-E
void DelayMSEC(unsigned int nDelay); // 延時(shí)
void Close5150(void); // 關(guān)閉ICETEK-TVP5150-E
void init_pll( void ); // 設(shè)置DSP主頻
unsigned char buffer[724*2],y[720*288]; // Y存放圖象
main()
{
int i,j,k,x,c1,c2,c3,xx,yy,uu,vv,xxx;
float rr,gg,bb;
unsigned int www=722,bGoodFrame,dbScanCode;
int a,b,c,d,e,f,g,h;
unsigned char uWork;
init_emif(); // 初始化emif
InitCTR(); // 初始化ICETEK-CTR
xx=1;
for ( j=0;j<72;j++ )
for ( i=0;i<90;i++ )
y[j*90+i]=0;
a=288;
b=722;
c=0;
d=8;
e=4;
f=1;
g=576;
h=0;
Init5150(); // 初始化ICETEK-TVP5150-E
init_pll();
while ( 1 )
{
if ( xx )
{
IDKCGR=IDKCCMDRESET; IDKCGR=0; // 復(fù)位FIFO
Delay(16);
IDKCGR=IDKCCMDRESETWP; // 復(fù)位FIFO寫指針
IDKCGR=IDKCCMDCAPTURE; // 啟動(dòng)采集
//Delay(2560);
do
{
uWork=IDKCSTATUS; // 讀取狀態(tài)寄存器
} while ( uWork&2==0 ); // 等待圖象準(zhǔn)備好
IDKCGR=0;
//Delay(2560);
}
x=0;
IDKCGR=IDKCCMDRESETRP; // 復(fù)位FIFO讀指針
Delay(16);
IDKCGR=0;
Delay(16);
uWork=IDKCDATA; // 讀取首個(gè)數(shù)據(jù)并放棄
Delay(16);
for ( i=0;i<724;i++ ) buffer[i]=0;
for ( i=0;i<c;i++ ) buffer[i]=IDKCDATA;
for ( j=0;j<a;j++ ) // 讀取整幅圖象722x288
{
for ( i=0;i<b;i++ )
{
y[j*720+i]=buffer[i]=IDKCDATA;
}
}
/*
for ( j=0;j<96;j++ )
for ( i=0;i<120;i++ )
y[j*120+i]=y[300+j*720+i];
*/
xxx=IDKCSTATUS;
x=0; // BREAK POINT 在此設(shè)置軟件斷點(diǎn)
x=0;
x=0;
}
exit(0);
}
void StartIIC(void)
{
I2C_REG = 0x05; /* "00100101":sda,scl = '1' */
DelayMSEC(1);
I2C_REG = 0x04; /* "00100100":sda= '0',scl = '1' */
DelayMSEC(1);
}
void StopIIC(void)
{
I2C_REG = 0x024; /* "00100101":sda = '0',scl = '1' */
DelayMSEC(1);
I2C_REG = 0x025; /* "00100101":sda,scl = '1' */
DelayMSEC(1);
}
void AckIIC(void)
{
I2C_REG = 0x020; /* "00100101":sda='z',scl = '0' */
I2C_REG = 0x022; /* "00100101":sda='z',scl = '0' */
DelayMSEC(1);
I2C_REG = 0x026; /* "00100101":sda='z',scl = '1' */
I2C_REG = 0x022; /* "00100101":sda='z',scl = '0' */
DelayMSEC(1);
I2C_REG = 0x021; /* "00100101":sda='1',scl = '0' */
DelayMSEC(1);
}
void WriteIIC(unsigned char data)
{
unsigned char BitCounter = 8;
unsigned char Temp;
unsigned int reg_val;
reg_val = 0x020;
I2C_REG = 0x20; /*SCL 置低 sda 置低*/
DelayMSEC(1); /*延時(shí)*/
do{
Temp = data;
reg_val &= 0x0fffffffb;
I2C_REG = reg_val; /*SCL 置低*/
DelayMSEC(1); /*延時(shí)*/
if((Temp&0x80)==0x80)
reg_val |= 0x01; /*如果最高位是1*/
else
reg_val &= 0x0fffffe;
I2C_REG = reg_val; /*設(shè)置SDA*/
DelayMSEC(1); /*延時(shí)*/
reg_val |= 0x004;
I2C_REG = reg_val; /*SCL 置高*/
DelayMSEC(1); /*延時(shí)*/
Temp = data<<1;
data = Temp;
BitCounter --;
}while(BitCounter);
reg_val &= 0x0fffffffb;
I2C_REG = reg_val; /*SCL 置低*/
DelayMSEC(3); /*延時(shí)*/
}
void Init5150(void)
{
int i;
StartIIC();
WriteIIC(0x0ba);
AckIIC();
WriteIIC(0x03);
AckIIC();
WriteIIC(0x08f);
AckIIC();
StopIIC();
DelayMSEC(10);
}
void DelayMSEC(unsigned int nDelay)
{
unsigned int i,j,k;
for ( i=0;i<nDelay*64;i++ )
{
// for ( j=0;j<6144;j++ )
k++;
}
}
void init_pll( void )
{
*(int *)PLL_CSR &= ~CSR_PLLEN; // Enable PLL
*(int *)PLL_CSR |= CSR_PLLRST; // Asserts RESET to PLL
*(int *)PLL_DIV0 = DIV_ENABLE + 0; // div0 enable
*(int *)PLL_MULT = 4;//8; // 25MHz×8=200MHz
*(int *)PLL_OSCDIV1 = DIV_ENABLE + 4;
*(int *)PLL_DIV3 = DIV_ENABLE + 3;
*(int *)PLL_DIV2 = DIV_ENABLE + 3;
*(int *)PLL_DIV1 = DIV_ENABLE + 1;
*(int *)PLL_CSR &= ~CSR_PLLRST;
*(int *)PLL_CSR |= CSR_PLLEN;
}
/* END OF FILE */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -