AnsweredAssumed Answered

ADV202 is not being captured

Question asked by haru24h on Aug 27, 2010
Latest reply on Aug 27, 2010 by DaveD

I am using 32bit normal host mode to receive compressed data.

 

I tested Register Test Procedure(ref. AN-799 Application note)


void InitADV202(void)
{
volatile unsigned int i;

 

ADV202(PLL_HI) = 0x0008;
ADV202(PLL_LO) = 0x0004;
delay_msec(1);          // Wait for 20us to allow PLL to settle.
ADV202(BOOT)  = 0x008A; // BOOT >> Initiate a reboot to no boot mode
delay_msec(1);      

 

printf("EIRQIE  >> 0x0000, %04X\n", ADV202(EIRQIE) & 0xFFFF);
printf("EIRQFLG >> 0x000F, %04X\n", ADV202(EIRQFLG) & 0xFFFF);
printf("BUSMODE >> 0x0005, %04X\n", ADV202(BMODE) & 0xFFFF);
printf("MMODE   >> 0x0009, %04X\n", ADV202(MMODE) & 0xFFFF);
printf("PLL_HI  >> 0x0008, %04X\n", ADV202(PLL_HI) & 0xFFFF);
printf("PLL_LO  >> 0x0004, %04X\n", ADV202(PLL_LO) & 0xFFFF);
 
ADV202(BMODE) = 0x000A; // BUSMODE >> enable 32-bit host interface
delay_msec(1);        
ADV202(MMODE) = 0x000A; // MMODE >> 32-bit indirect access capability
delay_msec(1);       

 

ADV202(IADDR) = 0x001B0000;
delay_msec(100);
ADV202(IDATA) = 0x12345678;
ADV202(IDATA) = 0x9ABCDEF0;
ADV202(IDATA) = 0x0F0F0F0F;
ADV202(IDATA) = 0xF0F0F0F0;

 

ADV202(IADDR) = 0x001B0000;
delay_msec(100);
printf("0x12345678, %08X\n", ADV202(IDATA));
printf("0x9ABCDEF0, %08X\n", ADV202(IDATA));
printf("0x0F0F0F0F, %08X\n", ADV202(IDATA));
printf("0xF0F0F0F0, %08X\n", ADV202(IDATA));    
printf("0xF0F0F0F0, %08X\n", ADV202(IDATA));
  
ADV202(IADDR) = 0x00050000;
delay_msec(1);
for(i=0; i<8192; i++)
  ADV202(IDATA) = fw_data[i];
 
ADV202(IADDR) = 0x00050000;
delay_msec(1);
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA));
printf("%08X\n", ADV202(IDATA)); 
 
ADV202(BOOT) = 0x008D;
delay_msec(1);
ADV202(BMODE) = 0x000A; // enable 32-bit host interface
delay_msec(1);
ADV202(MMODE) = 0x000A; // enable 32-bit indirect access capability
delay_msec(1); 

 

 
ADV202(IADDR) = 0x00057F00;
delay_msec(1);
ADV202(IDATA) = 0x08010503;
ADV202(IDATA) = 0x00000000;
ADV202(IDATA) = 0x02000500;
ADV202(IDATA) = 0x00010002;

//ADV202(IADDR) = 0xFFFF141C;
//delay_msec(1);
//ADV202(IDATA) = 0x00800000; //128 32 bit
//ADV202(IDATA) = 0x00400000; // 64 32 bit
//ADV202(IDATA) = 0x00200000; // 32 32 bit
//ADV202(IDATA) = 0x00100000; // 16 32 bit

 

 

 

// printf("START-ADV202\n");

 

ADV202(EIRQIE) = 0x0400;
}

 

 

result >>

EIRQIE  >> 0x0000, 0000
EIRQFLG >> 0x000F, 000F
BUSMODE >> 0x0005, 0005
MMODE   >> 0x0009, 0009
PLL_HI  >> 0x0008, 0008
PLL_LO  >> 0x0004, 0004

0x12345678, FFFD3E9C
0x9ABCDEF0, 12345678
0x0F0F0F0F, 9ABCDEF0
0xF0F0F0F0, 0F0F0F0F
0xF0F0F0F0, F0F0F0F0

FFFFFFFF
E59FF018
E59FF018
E59FF018
E59FF018
E59FE59F
E1A00000
E59FF018
E59FF018
00050B00

 

result is not correct. Is it need dummy read??

 

 

Num2. question.    why is ADV202 not being captured.

 

JP2 Read count >> 0, EIRQIE >> 0400, EIRQFLG >> 0x500F, SWFLAG >>0xFF82 (  I get perfact image)

JP2 Read count >> 2, EIRQIE >> 0400, EIRQFLG >> 0x440F, SWFLAG >> 0x6002(  I get perfact image)

JP2 Read count >> 4, EIRQIE >> 0400, EIRQFLG >> 0x442F, SWFLAG >> 0x6002 (ADV202 is not being captured)

 

I don`t understand why occured.

Outcomes