📄 hx8824.c
字号:
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, 0xF9);
I2CWriteByte(HX8824_ADDR, 0xA1, 0x00);
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x00, 0x80);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xE0);
I2CWriteByte(HX8824_ADDR, 0x03, 0x01);
I2CWriteByte(HX8824_ADDR, 0x90, 0x5A);
I2CWriteByte(HX8824_ADDR, 0x91, 0x03);
I2CWriteByte(HX8824_ADDR, 0x92, 0x3F);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x7A);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x40);
I2CWriteByte(HX8824_ADDR, 0x97, 0x01);
I2CWriteByte(HX8824_ADDR, 0x98, 0x07);
I2CWriteByte(HX8824_ADDR, 0x99, 0x01);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x03);
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x12);
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0xF0);
I2CWriteByte(HX8824_ADDR, 0x9F, 0x00);
//***************** PLL ********************************************************
I2CWriteByte(HX8824_ADDR, 0xD0, 0x1C); // P1
I2CWriteByte(HX8824_ADDR, 0xD1, 0x0E); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x07); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0x04); // M: 261 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x01); // M
#endif
//*************************************************************************************
#if mode7224_8060
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 4;
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format select
//I2CWriteByte(HX8824_ADDR, 0x11, 0x0C); // 656
I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); //601
I2CWriteByte(HX8824_ADDR, 0x20, 0x7A);
I2CWriteByte(HX8824_ADDR, 0x21, 0x06);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
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, 0xeb);
I2CWriteByte(HX8824_ADDR, 0xA1, 0x05);
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x00, 0xd0);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
I2CWriteByte(HX8824_ADDR, 0x90, 0x03);
I2CWriteByte(HX8824_ADDR, 0x91, 0x04);
I2CWriteByte(HX8824_ADDR, 0x92, 0x48);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x90);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x20);
I2CWriteByte(HX8824_ADDR, 0x97, 0x03);
I2CWriteByte(HX8824_ADDR, 0x98, 0x92);
I2CWriteByte(HX8824_ADDR, 0x99, 0x02);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x13);
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x26);
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, 0x09); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x09); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0x2B); // M: 300 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x01); // M
//I2CWriteByte(SAA7111_ADDR, 0x08, 0xC8);
#endif
//*************************************************************************************
#if mode7224_8048
Mode = 6;
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 5;
// Select Input Mux, For VIDEO Input
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // Use external HS,VS,DE; port A
//I2CWriteByte(HX8824_ADDR, 0x11, 0x0C); // 656
I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); //656
//I2CWriteByte(HX8824_ADDR, 0x11, 0x0B); // CCIR601, VS and HS are postive
// Set scaling ratio
I2CWriteByte(HX8824_ADDR, 0x20, 0x19);
I2CWriteByte(HX8824_ADDR, 0x21, 0x08);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
// DTV ratio
/* I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
I2CWriteByte(HX8824_ADDR, 0x21, 0x08);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
*/
// Set Border
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
// Set VS reset
//I2CWriteByte(HX8824_ADDR, 0xA0, 0x34); //B1
//I2CWriteByte(HX8824_ADDR, 0xA1, 0x1C); //11
//I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
//I2CWriteByte(HX8824_ADDR, 0xA0, 0x34); //B1 ok for PVI
//I2CWriteByte(HX8824_ADDR, 0xA1, 0x09); //11
//I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0xA0, 0x36); //B1 ok for hx8819
I2CWriteByte(HX8824_ADDR, 0xA1, 0x06); //11
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
// Set input timing
I2CWriteByte(HX8824_ADDR, 0x00, 0xD0);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x14, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x15, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x16, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x17, 0x00);
// Set output timing
//I2CWriteByte(HX8824_ADDR, 0x90, 0x2F); // for PVI
//I2CWriteByte(HX8824_ADDR, 0x91, 0x04);
//I2CWriteByte(HX8824_ADDR, 0x92, 0x35);
//I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x90, 0xF5); // for hx8819 broken IC 1013
I2CWriteByte(HX8824_ADDR, 0x91, 0x03);
I2CWriteByte(HX8824_ADDR, 0x92, 0x30);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x58);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x20);
I2CWriteByte(HX8824_ADDR, 0x97, 0x03);
I2CWriteByte(HX8824_ADDR, 0x98, 0x0D); //
I2CWriteByte(HX8824_ADDR, 0x99, 0x02);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x03);
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x1D);
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0xE0);
I2CWriteByte(HX8824_ADDR, 0x9F, 0x01);
//***************** PLL ********************************************************
//I2CWriteByte(HX8824_ADDR, 0xD0, 0x08); // P1
//I2CWriteByte(HX8824_ADDR, 0xD1, 0x09); // P2
//I2CWriteByte(HX8824_ADDR, 0xD2, 0x07); // N
//I2CWriteByte(HX8824_ADDR, 0xD3, 0xC7); // M: 200 -1
//I2CWriteByte(HX8824_ADDR, 0xD4, 0x00); // M
//***************** PLL **********************for hx8819 broken IC
I2CWriteByte(HX8824_ADDR, 0xD0, 0x0B); // P1
I2CWriteByte(HX8824_ADDR, 0xD1, 0x0C); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x09); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0x3A); // M: 200 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x01); // M
#endif
//*****************************************************************************************
#if mode7224_6448
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 6;
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // USE EXTERNAL SYNC AND DE
//I2CWriteByte(HX8824_ADDR, 0x11, 0x0C); // 656
I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); //601
I2CWriteByte(HX8824_ADDR, 0x20, 0x19);
I2CWriteByte(HX8824_ADDR, 0x21, 0x08);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
I2CWriteByte(HX8824_ADDR, 0x20, 0x01);
I2CWriteByte(HX8824_ADDR, 0x21, 0x12);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
//I2CWriteByte(HX8824_ADDR,0x27, 0x0A); // delay
I2CWriteByte(HX8824_ADDR, 0xA0, 0x50);
I2CWriteByte(HX8824_ADDR, 0xA1, 0x07);
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x00, 0xD0);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
I2CWriteByte(HX8824_ADDR, 0x90, 0x2A);
I2CWriteByte(HX8824_ADDR, 0x91, 0x03);
I2CWriteByte(HX8824_ADDR, 0x92, 0x60);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x90);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x80);
I2CWriteByte(HX8824_ADDR, 0x97, 0x02);
I2CWriteByte(HX8824_ADDR, 0x98, 0x0D);
I2CWriteByte(HX8824_ADDR, 0x99, 0x02);
I2CWriteByte(HX8824_ADDR, 0x9A, 0x02);
I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9C, 0x1D);
I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
I2CWriteByte(HX8824_ADDR, 0x9E, 0xE0);
I2CWriteByte(HX8824_ADDR, 0x9F, 0x01);
//I2CWriteByte(HX8824_ADDR, 0x14, 0x00); // position
//I2CWriteByte(HX8824_ADDR, 0x15, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x16, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x17, 0x00);
//***************** PLL ********************************************************
I2CWriteByte(HX8824_ADDR, 0xD0, 0x08); // P1
I2CWriteByte(HX8824_ADDR, 0xD1, 0x07); // P2
I2CWriteByte(HX8824_ADDR, 0xD2, 0x0C); // N
I2CWriteByte(HX8824_ADDR, 0xD3, 0xF5); // M: 246 -1
I2CWriteByte(HX8824_ADDR, 0xD4, 0x00); // M
//I2CWriteByte(SAA7111_ADDR, 0x08, 0xC8); // SAA7111 NTSC OUTPUT
#endif
//********************************************************************************************
#if mode7224_3224
bVideo = 1;
S1 = 0;
S2 = 1;
Mode = 7;
I2CWriteByte(HX8824_ADDR, 0x10, 0x1C); // input format select
I2CWriteByte(HX8824_ADDR, 0x11, 0x0F); // 656
//I2CWriteByte(HX8824_ADDR, 0x11, 0x0B); //601
//I2CWriteByte(HX8824_ADDR, 0x14, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x15, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x16, 0x00);
//I2CWriteByte(HX8824_ADDR, 0x17, 0x00);
I2CWriteByte(HX8824_ADDR, 0x20, 0x44);
I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
I2CWriteByte(HX8824_ADDR, 0x20, 0x30); //0x10
I2CWriteByte(HX8824_ADDR, 0x21, 0x24);
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, 0x00);
I2CWriteByte(HX8824_ADDR, 0x29, 0x01); //
I2CWriteByte(HX8824_ADDR, 0xA0, 0x40); // 43
I2CWriteByte(HX8824_ADDR, 0xA1, 0x01); // 05
I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
I2CWriteByte(HX8824_ADDR, 0x00, 0xD0);
I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
I2CWriteByte(HX8824_ADDR, 0x90, 0xA0);
I2CWriteByte(HX8824_ADDR, 0x91, 0x01);
I2CWriteByte(HX8824_ADDR, 0x92, 0x1E);
I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
I2CWriteByte(HX8824_ADDR, 0x94, 0x44);
I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
I2CWriteByte(HX8824_ADDR, 0x96, 0x40);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -