?? lab_04_subprogram.c
字號(hào):
//---------------- lecture04_subprogram.c start---------------
#include "DMA0.h"
#include "ADV7171_reset.h"
unsigned short *DMA0_CONFIG = p_DMA0_CONFIG;
unsigned int *DMA0_START_ADDR = p_DMA0_START_ADDR;
unsigned short *DMA0_X_COUNT = p_DMA0_X_COUNT;
unsigned short *DMA0_Y_COUNT = p_DMA0_Y_COUNT;
unsigned short *DMA0_X_MODIFY = p_DMA0_X_MODIFY;
unsigned short *DMA0_Y_MODIFY = p_DMA0_Y_MODIFY;
unsigned short *PPI_CONTROL = 0xFFC01000;
unsigned short * p_Ushort;
unsigned int * p_U_int;
unsigned char * p_U_char;
DMA_init(unsigned char * buffer_start_addr)
{
*DMA0_CONFIG = 0x1010;
*DMA0_START_ADDR = buffer_start_addr;
*DMA0_X_COUNT = 1716;
*DMA0_Y_COUNT = 525;
*DMA0_X_MODIFY = 1;
*DMA0_Y_MODIFY = 1;
}
PPI_init()
{
*PPI_CONTROL = 0x0002;
}
DMA_enable()
{
*DMA0_CONFIG |= 0x0001;
}
PPI_enable()
{
*PPI_CONTROL = 0x0003;
}
////////////////////////////////////////////////////////////////
Read_Flash_and_NTSC_ITU656_Convert (unsigned char* buffer_656)
{
unsigned char * flash_p_Y = 0x20010000;
unsigned char * flash_p_U = 0x20010000 + 720*486;
unsigned char * flash_p_V = 0x20010000 + 720*486 + 360*243;
unsigned char * p = buffer_656;
int i,j;
for(i=1;i<=3;i++) //1~3行的偶場(chǎng)場(chǎng)消隱
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xF1;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xEC;
p +=4;
for(j=0;j<1440;j++)
{
*p = 0;
p++;
}
}
for(i=4;i<=20;i++) //4~20行奇場(chǎng)同步開(kāi)始的場(chǎng)消隱
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xB6;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xAB;
p +=4;
for(j=0;j<1440;j++)
{
*p = 0;
p++;
}
}
flash_p_Y += 720;
for(i=21;i<=263;i++) //21~263行奇場(chǎng)有效行開(kāi)始
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0x9D;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0x80;
p +=4;
for(j=0;j<720/2;j++)
{
*p = *(flash_p_U);
*(p+1) = *(flash_p_Y);
*(p+2) = *(flash_p_V);
*(p+3) = *(flash_p_Y+1);
p += 4;
flash_p_Y +=2;
flash_p_U ++;
flash_p_V ++;
}
flash_p_Y +=720;
}
for(i=264;i<=265;i++) //264~265行的奇場(chǎng)場(chǎng)消隱
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xB6;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xAB;
p +=4;
for(j=0;j<1440;j++)
{
*p = 0;
p++;
}
}
for(i=266;i<=282;i++) //266~282行偶場(chǎng)同步開(kāi)始的場(chǎng)消隱
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xF1;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xEC;
p +=4;
for(j=0;j<1440;j++)
{
*p = 0;
p++;
}
}
flash_p_Y = 0x20010000;
flash_p_U = 0x20010000 + 720*486;
flash_p_V = 0x20010000 + 720*486 + 360*243;
for(i=283;i<=525;i++) //283~525行偶場(chǎng)有效行開(kāi)始
{
*p = 0xFF; //行消隱開(kāi)始
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xDA;
p +=4;
for(j=0;j<268/2;j++)
{
*p = 0x80;
*(p+1) = 0x10;
p +=2;
}
*p = 0xFF; //行消隱結(jié)束
*(p+1) = 0x00;
*(p+2) = 0x00;
*(p+3) = 0xC7;
p +=4;
for(j=0;j<720/2;j++)
{
*p = *(flash_p_U);
*(p+1) = *(flash_p_Y);
*(p+2) = *(flash_p_V);
*(p+3) = *(flash_p_Y+1);
p += 4;
flash_p_Y +=2;
flash_p_U ++;
flash_p_V ++;
}
flash_p_Y +=720;
}
}
/////////////////////////////////////////////////
ADV7171_reset_start()
{
p_U_int = EBIU_AMBCTL0;
*p_U_int =0x7bb07bb0; // configure EBIU
p_U_int = EBIU_AMBCTL1;
*p_U_int =0x7bb07bb0; // configure EBIU
p_Ushort = EBIU_AMGCTL;
*p_Ushort = 0x000f; // configure EBIU
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0;
p_U_char = Flash_PortA_Direction;
*p_U_char = 0x34;
}
Delay_2ms()
{
int i;
for(i=0;i<20000;i++);
}
ADV7171_reset_end()
{
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0x04; // portA2=1 for ADV7171 reset end
}
Select_PPIclk_for_BF533()
{
p_U_char = Flash_PortA_Data_Out;
*p_U_char |= 0x00;
}
void ADV7171_reset()
{
unsigned short * p_Ushort;
unsigned int * p_U_int;
unsigned char * p_U_char;
p_U_int = EBIU_AMBCTL0;
*p_U_int =0x7bb07bb0; // configure EBIU
p_U_int = EBIU_AMBCTL1;
*p_U_int =0x7bb07bb0; // configure EBIU
p_Ushort = EBIU_AMGCTL;
*p_Ushort = 0x000f; // configure EBIU
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0;
//portA4=0,portA5=0 for BF533 PPIclk select,portA2=0 for ADV7171 reset start
p_U_char = Flash_PortA_Direction;
*p_U_char = 0x34;
p_U_char = Flash_PortA_Data_Out;
*p_U_char = 0x04; // portA2=1 for ADV7171 reset end
}
//---------------- lecture04_subprogram.c end---------------
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -