灰度图
?ÌÐòÈçÏÂ?º
/********************************************************************/ /* ?Ò?ÈÍ?
ÔËÐÐ?á?û?ºÔÚÆÁÄ?Ö?ÖÐ?,?öÒ??éÇøÓòÏÔÊ??Ò?ÈÍ?Ïñ */
/********************************************************************/ /* ?ØÓÚcsl?º
1,ÓÃÓÚÅäÖÃ???ØÖƺÍ?ÜÀíDSPÆ?ÉÏÍâÉè
2,ÒÑΪC6000ºÍC5000ϵÁÐDSPÉè?ÆÁË??×ÔµÄCSL?â
3,CSL?âº?Êý?ó?àÊýÊÇÓÃCÓïÑÔ?àÐ?µÄ????ÒÑ?Ô?úÂëµÄ?óÐ?ºÍËÙ?È?øÐÐÁËÓÅ?? 4,CSL?âÊÇ?É?Ã?ôµÄ?º??Ö?ÓÐ??Ê?ÓõÄCSLÄ??é?Å?á?üº??øÓ?ÓÃ?ÌÐòÖÐ 5,CSL?âÊÇ?ÉÀ?Õ?µÄ?ºÃ??öÆ?ÉÏÍâÉèµÄAPIÏà???ÀÁ???Ôö?ÓеÄAPI???ÔÆäËûÆ?ÉÏÍâÉèÃ?ÓÐÓ?Ï
ì */
#include /* ×Ü?â??Ìá??ÍâÉè?Ó?ÚºÍ?ù??ÅäÖà */ // ?ßÌåµÄ?Ó?Ú??Òå??Í?ÎÄ?þÖÐ??ÒåÁË?Ó?ڵĵØÖ?µÈ
#include /*
emifaÊÇÒ?ÖÖ64Î?µÄÍâ???Ó?Ú???ÉÁ??Ó64/32/16/8bitµÄÆ??þ */ #include /* Ò?ÖÖÁ?ÏßÊ???ÐÐ×ÜÏß */ #include /* Ò?ÊÇÒ?ÖÖÍ?ÓõÄÊäÈëÊä?ö?Ó?Ú */ #include /* Ò?Ð??ù??ÖÐ?ϵÄ??Òå */
#include
#include
#include "iic.h"
#include "vportcap.h"
#include "vportdis.h"
#include "sa7121h.h" /*
SAA7121?ÉÒÔ??Êý×ÖÐźÅ?à?ÌÄ?ÄâÐźźÍÏÂÃæµÄ?àÂëÐ?Æ?Ò?Ñù???ÉÓÃiic×ÜÏß */ #include "TVP51xx.h" /*
ÊÓƵ?àÂëÐ?Æ?????Ä?ÄâÐźÅ?øÐÐÊý×Ö????ÕâÊÇÆä?øÐÐÅäÖõÄÍ?ÎÄ?þ */ /*SEEDDM642µÄemifaµÄÉèÖÃ?á??*/
EMIFA_Config Seeddm642ConfigA ={
0x00052078,/*gblctl EMIFA(B)global control register value */
/*??CLK6??4??1Ê?ÄÜ????MRMODEÖÃ1??Ê?ÄÜEK2EN,EK2RATE*/
0xffffffd3,/*cectl0 CE0 space control register value*/
/*??CE0?Õ?äÉèΪSDRAM*/
0x73a28e01,/*cectl1 CE1 space control register value*/
/*Read hold: 1 clock;
MTYPE : 0000,Ñ?Ôñ8Î?µÄÒì???Ó?Ú
Read strobe ?º001110??14?öclock?í?È
TA?º2 clock; Read setup 2 clock;
Write hold :2 clock; Write strobe: 14 clock
Write setup :7 clock
-- ---------------
\ 14c /1c
\----------------/ */
0x22a28a22, /*cectl2 CE2 space control register value*/
0x22a28a42, /*cectl3 CE3 space control register value*/
0x57115000, /*sdctl SDRAM control register value*/
0x0000081b, /*sdtim SDRAM timing register value*/
0x001faf4d, /*sdext SDRAM extension register value*/
0x00000002, /*cesec0 CE0 space secondary control register value*/
0x00000002, /*cesec1 CE1 space secondary control register value*/
0x00000002, /*cesec2 CE2 space secondary control register value*/
0x00000073 /*cesec3 CE3 space secondary control register value*/
};
/*SEEDDM642µÄIICµÄÉèÖÃ?á??*/
I2C_Config SEEDDM642IIC_Config = {
0, /* master mode, i2coar;?ÉÓÃÖ?Ä?Ê? */
0, /* no interrupt, i2cimr;Ö?Ð??????Á???ÉÓÃÎÞÖÐ?Ï??Ê?*/
(20-5), /* scl low time, i2cclkl; */
(20-5), /* scl high time,i2cclkh; */
1, /* configure later, i2ccnt;*/
0, /* configure later, i2csar;*/
0x4ea0, /* master tx mode, */
/* i2c runs free, */
/* 8-bit data + NACK */
/* no repeat mode */
(75-1), /* 4MHz clock, i2cpsc */
};
CHIP_Config SEEDDM642percfg = {
CHIP_VP2+\
CHIP_VP1+\
CHIP_VP0+\
CHIP_I2C
};
I2C_Handle hSeeddm642i2c;
int portNumber;
extern SA7121H_ConfParams sa7121hPAL[45];
extern SA7121H_ConfParams sa7121hNTSC[45];
Uint8 vFromat = 0;
Uint8 misc_ctrl = 0x6D;
Uint8 output_format = 0x47;
// µØÖ?Ϊ0 for cvbs port1,Ñ?Ôñ??ºÏÐźÅ×öΪÊäÈë Uint8 input_sel = 0x00;
/*µØÖ?Ϊ0xf????Pin27ÉèÖÃ?ÉΪCAPEN??ÄÜ*/
Uint8 pin_cfg = 0x02;
/*µØÖ?Ϊ1B*/
Uint8 chro_ctrl_2 = 0x14;
/*Í?Ïñ?ä?úµÄÉùÃ?*/
VP_Handle vpHchannel0;
VP_Handle vpHchannel1;
VP_Handle vpHchannel2;
/*È???Í?ÏñµÄ?ÎÊý*/
int numPixels = 720;//Ã?ÐÐ720?öÏñËØ int numLines = 576;//Ã?Ö?576ÐÐ??PAL??
/*È?????ÀíµÄ??Î?*/
/*A */
/* */
/* D*/
int intAPixels = 190;
int intALines = 59;
int intDPixels = 530;
int intDLines = 229;
/******************************/ /*****?,?ØÐÎ?ß?òº?ÊýµÄÉùÃ?*****/ void drawRectangle();
/*ÏûÈ??ÊÉ?*/
void removeColor();
/*?É??ÓëÏÔÊ??º?åÇøµÄÊ×Ö?*/
Uint32 capYbuffer = 0x80000000; Uint32 capCbbuffer = 0x800675c0; Uint32 capCrbuffer = 0x8009b0a0; Uint32 disYbuffer = 0x80100000; Uint32 disCbbuffer = 0x801675c0; Uint32 disCrbuffer = 0x8019b0a0; Uint32 tempYbuffer = 0x80200000; //ÁÙÊ? Uint32 tempCbbuffer = 0x80300000; //ÁÙÊ? Uint32 tempCrbuffer = 0x80400000; //ÁÙÊ? /*Í?Ïñ?ñÊ??êÖ?*/
Uint8 NTSCorPAL = 0;
extern far void vectors();
extern volatile Uint32 capNewFrame; extern volatile Uint32 disNewFrame; /*?Ë?ÌÐò?É??ËÄ?ö?É???ÚµÄÊý?Ý?,?ýVideo Port0ËÍ?ö*/
void main()
{
Uint8 addrI2C;
int i;
/*-------------------------------------------------------*/
/* perform all initializations */
/*-------------------------------------------------------*/ /*Initialise CSL???õÊ???CSL?â*/
CSL_init();
CHIP_config(&SEEDDM642percfg);
/*----------------------------------------------------------*/ /*EMIFAµÄ?õÊ???????CE0ÉèΪSDRAM?Õ?ä??CE1ÉèΪÒì???Õ?ä ×???DM642Ö??ÖµÄÊÇEMIFA???ø?ÇEMIF*/
EMIFA_config(&Seeddm642ConfigA);
/*----------------------------------------------------------*/ /*ÖÐ?ÏÏòÁ??íµÄ?õÊ???*/
//Point to the IRQ vector table
IRQ_setVecs(vectors);
IRQ_nmiEnable();
IRQ_globalEnable();
IRQ_map(IRQ_EVT_VINT1, 11);
IRQ_map(IRQ_EVT_VINT0, 12);
IRQ_reset(IRQ_EVT_VINT1);
IRQ_reset(IRQ_EVT_VINT1);
/*?ò?ªÒ??öÊý?Ý????µÄÊý?ÝÍ?Â?*/
DAT_open(DAT_CHAANY, DAT_PRI_LOW, DAT_OPEN_2D); /*----------------------------------------------------------*/ /*?øÐÐIICµÄ?õÊ???*/
hSeeddm642i2c = I2C_open(I2C_PORT0,I2C_OPEN_RESET); I2C_config(hSeeddm642i2c,&SEEDDM642IIC_Config); /*----------------------------------------------------------*/ /*?øÐÐTVP5150pbsµÄ?õÊ???*/
/*Ñ?ÔñTVP5150??ÉèÖõÚÈýÍ?Â?*/
GPIO_RSET(GPGC,0x0);/*??GPIO0??×öΪGPINTÊ?ÓÃ*/ GPIO_RSET(GPDIR,0x1);/*??GPIO0×öΪÊä?ö*/
GPIO_RSET(GPVAL,0x0);/*GPIO0Êä?öΪ?ß??Ñ?ÔñIIC1×ÜÏß??ÅäÖÃ
µÚ?þÂ?????ΪU21*/
addrI2C = 0xBA >>1;
_IIC_write(hSeeddm642i2c, addrI2C,0x00, input_sel);
_IIC_write(hSeeddm642i2c, addrI2C,0x03, misc_ctrl);
_IIC_write(hSeeddm642i2c, addrI2C,0x0D, output_format);
_IIC_write(hSeeddm642i2c, addrI2C,0x0F, pin_cfg);
_IIC_write(hSeeddm642i2c, addrI2C,0x1B, chro_ctrl_2);
/*?Ø?Áµ?Ç?ÉãÏñÉè??µÄ?ñÊ?*/
_IIC_read(hSeeddm642i2c, addrI2C,0x8c, &vFromat);
vFromat = vFromat & 0xff;
switch (vFromat)
{
case TVP51XX_NTSCM:
case TVP51XX_NTSC443:
NTSCorPAL = 1;/*ϵÍ?ΪNTSCµÄÄ?Ê?*/
break;
case TVP51XX_PALBGHIN:
case TVP51XX_PALM:
NTSCorPAL = 0;/*ϵÍ?ΪPALµÄÄ?Ê?*/
break;
default:
NTSCorPAL = 2;/*ϵÍ?Ϊ??Ö??ÖµÄÄ?Ê?*/
break;
}
if(NTSCorPAL ==2)
{
/*ϵÍ???Ö??ÖµÄÄ?Ê???ÖØÐÂÅäÖÃ*/
for(;;)
{}
}
/*----------------------------------------------------------*/
/*?øÐÐSAA7121HµÄ?õÊ???*/
GPIO_RSET(GPVAL,0x0);/*GPIO0Êä?öΪµÍ??Ñ?ÔñIIC1×ÜÏß??ÅäÖÃÍ?ÏñÊä?ö*/
addrI2C = 0xB8 >>1; /*Ñ?ÔñµÚ0Â?µÄI2CµÄµØÖ?*/ /*??µÚ0Â?µÄÊÓƵÊäÈë?ÚµÄÊý?Ý?ÚÉèΪ?ß×è×?Ì???
Ê?ÄÜSCLK????µÚ27?ÅÉèΪÊäÈë*/
_IIC_write(hSeeddm642i2c, addrI2C,0x03, 0x1); /*ÅäÖÃSAA7121H*/
GPIO_RSET(GPVAL,0x1);/*GPIO0Êä?öΪµÍ??Ñ?ÔñIIC1×ÜÏß??ÅäÖÃÍ?ÏñÊä?ö*/
/*?õÊ???Video Port0*/
/*??Vedio Port1ÉèΪencoderÊä?ö*/ portNumber = 0;
vpHchannel0 = bt656_8bit_ncfd(portNumber); addrI2C = 0x88 >>1;
for(i =0; i<43; i++)
{
if(NTSCorPAL == 1)
{
_IIC_write(hSeeddm642i2c,
addrI2C,
(sa7121hNTSC[i].regsubaddr),
(sa7121hNTSC[i].regvule));
}
else
{
_IIC_write(hSeeddm642i2c,
addrI2C,
(sa7121hPAL[i].regsubaddr),
(sa7121hPAL[i].regvule));
}
}
/*----------------------------------------------------------*/ /*?õÊ???Video Port1*/
/*??Vedio Port1ÉèΪ?É??ÊäÈë*/
portNumber = 1;
vpHchannel1 = bt656_8bit_ncfc(portNumber);
bt656_capture_start(vpHchannel1);
/*µÈ?ýµÚÒ?Ö?Êý?Ý?É??Íê?É*/
while(capNewFrame == 0){}
/*?É??Íê?É????Êý?Ý?æÈëÏÔÊ??º?åÇø????Çå?É??Íê?ɵÄ?êÖ?*/ capNewFrame =0;
for(i=0;i> 1)),
(void *)(tempCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*??ËÍÁÙÊ?Cr?º?åÇø*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(tempCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
/* ?,?ß?ò??ÏûÈ??ÊÉ?µÆ?Ù×???ÐèÒªÔÚ?º?åÇøÖÐ?øÐÐ */
/*?,?ß?ò*/
drawRectangle();
/*ÏûÈ??ÊÉ?*/
removeColor();
/* ÔÙ???º?åÇøµÄÄÚÈÝËÍÈëÏÔÊ?Çø */
for(i=0;i> 1)),
(void *)(disCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*??ËÍCr?º?åÇø*/
DAT_copy((void *)(tempCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
/*Æô??ÏÔÊ?Ä??é*/
bt656_display_start(vpHchannel0);
/*??Á?Ò??öËÀÑ,??ʵÊ??É??ºÍ???Å*/
for(;;)
{
/*µ??É??ÇøµÄÊý?ÝÒÑ?,?É??ºÃ???øÏÔÊ??º?åÇøµÄÊý?ÝÒÑ?Õ*/
if((capNewFrame == 1)&&(disNewFrame == 1))
{
/*??Êý?Ý×?ÈëÏÔÊ??º?åÇø????Çå?É??Íê?ɵÄ?êÖ?*/
capNewFrame =0;
disNewFrame =0;
for(i=0;i> 1)),
(void *)(tempCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*??ËÍÁÙÊ?Cr?º?åÇø*/
DAT_copy((void *)(capCrbuffer + i * (numPixels >> 1)),
(void *)(tempCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
/*?,?ß?ò*/
drawRectangle();
/*ÏûÈ??ÊÉ?*/
removeColor();
for(i=0;i> 1)),
(void *)(disCbbuffer + i * (numPixels >> 1)),
numPixels>>1);
/*??ËÍCr?º?åÇø*/
DAT_copy((void *)(tempCrbuffer + i * (numPixels >> 1)),
(void *)(disCrbuffer + i * (numPixels >> 1)),
numPixels>>1);
}
}
}
for(;;)
{}
/*----------------------------------------------------------*/ /*?É??Óë?Ø?Å*/
}
/*?,?ØÐÎ?ß?òº?ÊýµÄ??Òå*/
void drawRectangle()
{
int i,j;
/*?,ÉÏ?ß*/
//ÆæÊýÐÐ
for(i=intALines-4;i> 1) + j) = 0x80;
*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j) = 0x80;
}
}
//???òÄÚÅ?ÊýÐÐ
for(i=numLines/2+intALines;i> 1) + j) = 0x80;
*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j) = 0x80;
}
}
}
本文档为【灰度图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。