📄 hx8824.c
字号:
I2CWriteByte(HX8824_ADDR, 0x96, 0x40); // 320
I2CWriteByte(HX8824_ADDR, 0x97, 0x01);
I2CWriteByte(HX8824_ADDR, 0x98, 0x07); // 263
I2CWriteByte(HX8824_ADDR, 0x99, 0x01);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x03); // 03
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x12); // 18
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0xF0); // 240
I2CWriteByte(HX8824_ADDR, 0x9F, 0x00);
//I2CWriteByte(SAA7111_ADDR, 0x08, 0x88); // PAL
I2CWriteByte(HX8824_ADDR, 0x12, 0xBB);
I2CWriteByte(HX8824_ADDR, 0x13, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x14, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x15, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x16, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x17, 0x00);
I2CWriteByte(HX8824_ADDR, 0x19, 0x01);
I2CWriteByte(HX8824_ADDR, 0x26, 0x00);
//***************** PLL ********************************************************
I2CWriteByte(HX8824_ADDR, 0xD0, 0x21); // P1
I2CWriteByte(HX8824_ADDR, 0xD1, 0x0E); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x07); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0xFE); // M: 255 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x00); // M
#endif
//****************************************************************************************
#if mode8060_8060
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 12;
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format select
I2CWriteByte(HX8824_ADDR, 0x11, 0x07);
I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
I2CWriteByte(HX8824_ADDR, 0xA0, 0x11);
I2CWriteByte(HX8824_ADDR, 0xA1, 0x27);
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x00, 0x20);
I2CWriteByte(HX8824_ADDR, 0x01, 0x04);
I2CWriteByte(HX8824_ADDR, 0x02, 0x58);
I2CWriteByte(HX8824_ADDR, 0x03, 0x02);
I2CWriteByte(HX8824_ADDR, 0x90, 0x20);
I2CWriteByte(HX8824_ADDR, 0x91, 0x04);
I2CWriteByte(HX8824_ADDR, 0x92, 0x80);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0xD8);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x20);
I2CWriteByte(HX8824_ADDR, 0x97, 0x03);
I2CWriteByte(HX8824_ADDR, 0x98, 0x74);
I2CWriteByte(HX8824_ADDR, 0x99, 0x02);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x04);
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x1B);
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0x58);
I2CWriteByte(HX8824_ADDR, 0x9F, 0x02);
//***************** PLL ********************************************************
I2CWriteByte(HX8824_ADDR, 0xD0, 0x08); // P1
I2CWriteByte(HX8824_ADDR, 0xD1, 0x08); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x09); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0x2B); // M: 300 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x01); // M
#endif
//****************************************************************************************
#if mode7224_4827
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 13;
I2CWriteByte(HX8824_ADDR, 0x00, 0xD0);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format select
I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); // 656
I2CWriteByte(HX8824_ADDR, 0x20, 0x4D); // (243/272)*4096 = 0x0E4B
I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x00); // (720/480)*4096 = 0x1800
I2CWriteByte(HX8824_ADDR, 0x21, 0x18);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
I2CWriteByte(HX8824_ADDR, 0x26, 0x01);
I2CWriteByte(HX8824_ADDR, 0x29, 0x01); //
I2CWriteByte(HX8824_ADDR, 0xA0, 0x67); //
I2CWriteByte(HX8824_ADDR, 0xA1, 0x02); //
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x90, 0x15);// 527
I2CWriteByte(HX8824_ADDR, 0x91, 0x02);
I2CWriteByte(HX8824_ADDR, 0x92, 0x29);// 41
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x2B);// 43
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0xE0);// 480
I2CWriteByte(HX8824_ADDR, 0x97, 0x01);
I2CWriteByte(HX8824_ADDR, 0x98, 0x30);// 297
I2CWriteByte(HX8824_ADDR, 0x99, 0x01);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x0A);// 10
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x1D);// 12
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0x10);// 272
I2CWriteByte(HX8824_ADDR, 0x9F, 0x01);
//***************** PLL ********************************************************
I2CWriteByte(HX8824_ADDR, 0xD0, 0x29); // P1 clk_o = 9.4MHz
I2CWriteByte(HX8824_ADDR, 0xD1, 0x1B); // P2 clk_m = 14.1MHz
I2CWriteByte(HX8824_ADDR, 0xD2, 0x09); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0x48); // M:
I2CWriteByte(HX8824_ADDR, 0xD4, 0x01); // M
#endif
//****************************************************************************************
}
/* ================================================================
Name : Select_Video_Input
Purpose : According Pass Variable to change Input Mux Path
Passed : None
Notes : None
================================================================ */
void Select_Video_Input(Byte VideoSrc)
{
switch(VideoSrc)
{
// From Video Decoder
case _AV:
case _YC:
//I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[2][0], HX8824_MAIN_INP_CLK, 2);
break;
// From ADC YUV, ADC Component
// case _Component:
// case _VGA_IN:
// I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[1][0], HX8824_MAIN_INP_CLK, 2);
// break;
// DVI Input
case _DVI:
//I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[0][0], HX8824_MAIN_INP_CLK, 2);
break;
}
}
/* ================================================================
Name : Initial PLL
Purpose : clock generator
Passed : None
Notes : None
================================================================ */
void Init_PLL(void)
{
#if EX_PLL
I2CWriteByte(HX8824_ADDR, 0xE0, 0x1E); // use external clk_m and clk_o -->0x1C; internal:-->0x10
I2CWriteByte(PLL_ADDR, 0x0E, 0x1F);
I2CWriteByte(PLL_ADDR, 0x0B, 0x0A); // CLKM = 29.94 MHz
I2CWriteByte(PLL_ADDR, 0x14, 0x26);
I2CWriteByte(PLL_ADDR, 0x15, 0xF0);
I2CWriteByte(PLL_ADDR, 0x16, 0x5D);
I2CWriteByte(PLL_ADDR, 0x09, 0x0C); // CLKO = 33.3 MHz
I2CWriteByte(PLL_ADDR, 0x11, 0x08);
I2CWriteByte(PLL_ADDR, 0x12, 0xA3);
I2CWriteByte(PLL_ADDR, 0x13, 0x4C);
#endif
#if IN_PLL
I2CWriteByte(HX8824_ADDR, 0xE0, 0x13); // use external clk_m and clk_o -->0x1C; internal:-->0x10
I2CWriteByte(HX8824_ADDR, 0xD0, 0x08);
I2CWriteByte(HX8824_ADDR, 0xD1, 0x09);
I2CWriteByte(HX8824_ADDR, 0xD2, 0x07);
I2CWriteByte(HX8824_ADDR, 0xD3, 0xC7);
I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
#endif
}
/* ================================================================
Name : Initial SAA7111
Purpose :
Passed : None
Notes : None
================================================================ */
void Init_SAA7111(void)
{
I2CWriteByte(SAA7111_ADDR, 0x02, 0xC0);
I2CWriteByte(SAA7111_ADDR, 0x03, 0x33);
I2CWriteByte(SAA7111_ADDR, 0x04, 0x00);
I2CWriteByte(SAA7111_ADDR, 0x05, 0x00);
I2CWriteByte(SAA7111_ADDR, 0x06, 0xEB);
I2CWriteByte(SAA7111_ADDR, 0x07, 0xE0);
I2CWriteByte(SAA7111_ADDR, 0x08, 0xC8);
I2CWriteByte(SAA7111_ADDR, 0x09, 0x41);
I2CWriteByte(SAA7111_ADDR, 0x0A, 0xD0); //0x95
I2CWriteByte(SAA7111_ADDR, 0x0B, 0x47); //0x48
I2CWriteByte(SAA7111_ADDR, 0x0C, 0x40);
I2CWriteByte(SAA7111_ADDR, 0x0D, 0x00);
I2CWriteByte(SAA7111_ADDR, 0x0E, 0x01);
I2CWriteByte(SAA7111_ADDR, 0x10, 0xC0);
I2CWriteByte(SAA7111_ADDR, 0x11, 0x0D);
I2CWriteByte(SAA7111_ADDR, 0x12, 0x00);
I2CWriteByte(SAA7111_ADDR, 0x13, 0x40);
}
/* ================================================================
Name : Initial SAA7114
Purpose :
Passed : None
Notes : None
================================================================ */
void Init_SAA7114(void)
{
code unsigned char T7114[136][2]=
{{0x01,0x08},{0x02,0xc4},{0x03,0x20},{0x04,0x00},{0x05,0x00},{0x06,0xeb},{0x07,0xe0},
{0x08,0xF8},{0x09,0x40},{0x0a,0x80},{0x0b,0x44},{0x0c,0x50},{0x0d,0x00},{0x0e,0x89},
{0x0f,0x2a},{0x10,0x01},{0x11,0x00},{0x12,0xdf},{0x13,0x40},{0x14,0x08},{0x15,0x11},
{0x16,0x01},{0x17,0x00},{0x18,0x40},{0x19,0x80},{0x40,0x00},{0x41,0xff},{0x42,0xff},
{0x43,0xff},{0x44,0xff},{0x45,0xff},{0x46,0xff},{0x47,0xff},{0x48,0xff},{0x49,0xff},
{0x4a,0xff},{0x4b,0xff},{0x4c,0xff},{0x4d,0xff},{0x4e,0xff},{0x4f,0xff},{0x50,0xff},
{0x51,0xff},{0x52,0xff},{0x53,0xff},{0x54,0xff},{0x55,0xff},{0x56,0xff},{0x57,0xff},
{0x58,0x40},{0x59,0x47},{0x5a,0x06},{0x5b,0x83},{0x5d,0x00},{0x5e,0x00},{0x60,0x00},
{0x61,0x00},{0x62,0x00},{0x80,0x10},{0x83,0x01},{0x84,0x45},{0x85,0x00},{0x86,0x45},
{0x87,0x01},{0x88,0xf8},{0x8f,0x00},{0x90,0x00},{0x91,0x08},{0x92,0x10},{0x93,0x80},
{0x94,0x02},{0x95,0x00},{0x96,0xd0},{0x97,0x02},{0x98,0x0D},{0x99,0x00},{0x9a,0xF2},
{0x9b,0x00},{0x9c,0xd0},{0x9d,0x02},{0x9e,0xF0},{0x9f,0x00},{0xa0,0x01},{0xa1,0x00},
{0xa2,0x00},{0xa4,0x80},{0xa5,0x40},{0xa6,0x40},{0xa8,0x00},{0xa9,0x04},{0xaa,0x00},
{0xac,0x00},{0xad,0x02},{0xae,0x00},{0xb0,0x00},{0xb1,0x04},{0xb2,0x00},{0xb3,0x04},
{0xb4,0x00},{0xb8,0x00},{0xbc,0x00},{0xc0,0x00},{0xc1,0x08},{0xc2,0x10},{0xc3,0x80},
{0xc4,0x00},{0xc5,0x00},{0xc6,0xd0},{0xc7,0x02},{0xc8,0x0C},{0xc9,0x00},{0xca,0xf2},
{0xcb,0x00},{0xcc,0xd0},{0xcd,0x02},{0xce,0xf0},{0xcf,0x00},{0xd0,0x00},{0xd1,0x00},
{0xd2,0x00},{0xd4,0x80},{0xd5,0x40},{0xd6,0x40},{0xd8,0x00},{0xd9,0x04},{0xda,0x20},
{0xdc,0x00},{0xdd,0x02},{0xde,0x00},{0xe0,0x00},{0xe1,0x04},{0xe2,0x00},{0xe3,0x04},
{0xe4,0x01},{0xe8,0x00},{0xec,0x00}};
/*
code unsigned char T7114[149][2]={{0x01,0x08},{0x02,0xc4},{0x03,0x00},{0x04,0x00},{0x05,0x00},{0x06,0xeb},{0x07,0xe0},
{0x08,0xf8},{0x09,0x80},{0x0a,0x90},{0x0b,0x4A},{0x0c,0x4E},{0x0d,0x00},{0x0e,0x86},
{0x0f,0xaa},{0x10,0x0e},{0x11,0x08},{0x12,0xdf},{0x13,0x00},{0x14,0x06},{0x15,0x05},
{0x16,0x05},{0x17,0x82},{0x18,0x40},{0x19,0x80},{0x09,0x40},{0x40,0x00},{0x41,0xff},
{0x42,0xff},{0x43,0xff},{0x44,0xff},{0x45,0xff},{0x46,0xff},{0x47,0xff},{0x48,0xff},
{0x49,0xff},{0x4a,0xff},{0x4b,0xff},{0x4c,0xff},{0x4d,0xff},{0x4e,0xff},{0x4f,0xff},
{0x50,0xff},{0x51,0xff},{0x52,0xff},{0x53,0xff},{0x54,0xff},{0x55,0xff},{0x56,0xff},
{0x57,0xff},{0x58,0x00},{0x59,0x00},{0x5a,0x00},{0x5b,0x00},{0x5d,0x00},{0x5e,0x00},
{0x60,0x00},{0x61,0x00},{0x62,0x00},{0x88,0xf8},{0x83,0x01},{0x84,0x45},{0x85,0x00},
{0x86,0x40},{0x87,0x01},{0x8f,0x00},{0x90,0x00},{0x91,0x08},{0x92,0x10},{0x80,0x16},
{0x93,0x40},{0x94,0x00},{0x95,0x00},{0x96,0xd0},{0x97,0x02},{0x98,0x00},{0x99,0x00},
{0x9a,0x04},{0x9b,0x01},{0x9c,0xd0},{0x9d,0x02},{0x9e,0x04},{0x9f,0x01},{0xa0,0x01},
{0xa1,0x00},{0xa2,0x00},{0xa4,0x80},{0xa5,0x40},{0xa6,0x40},{0xa8,0x00},{0xa9,0x04},
{0xaa,0x20},{0xac,0x00},{0xad,0x02},{0xae,0x10},{0xb0,0x00},{0xb1,0x04},{0xb2,0x00},
{0xb3,0x04},{0xb4,0x00},{0xb8,0x00},{0xb9,0x00},{0xba,0x00},{0xbb,0x00},{0xbc,0x00},
{0xbd,0x00},{0xbe,0x00},{0xbf,0x00},{0xc0,0x00},{0xc1,0x08},{0xc2,0x10},{0xc3,0x40},
{0xc4,0x00},{0xc5,0x00},{0xc6,0xd0},{0xc7,0x02},{0xc8,0x00},{0xc9,0x00},{0xca,0xf0},
{0xcb,0x00},{0xcc,0xd0},{0xcd,0x02},{0xce,0xf0},{0xcf,0x00},{0xd0,0x01},{0xd1,0x00},
{0xd2,0x00},{0xd4,0x00},{0xd5,0x00},{0xd6,0xd0},{0xd8,0x00},{0xd9,0x04},{0xda,0x00},
{0xdc,0x00},{0xdd,0x02},{0xde,0x00},{0xe0,0x00},{0xe1,0x04},{0xe2,0x00},{0xe3,0x04},
{0xe4,0x01},{0xe8,0x00},{0xe9,0x00},{0xea,0x00},{0xeb,0x00},{0xec,0x00},{0xed,0x00},
{0xee,0x00},{0xef,0x00}};
*/
Byte i;
for(i = 0; i < 136; i++)
I2CWriteByte(SAA7114_ADDR, T7114[i][0], T7114[i][1]);
I2CWriteByte(SAA7114_ADDR, 0x88, 0x88); // Power save control
I2CWriteByte(SAA7114_ADDR, 0x88, 0xf8);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -