AnsweredAssumed Answered

ADV7441A VGA color change between R & B

Question asked by wzngy on Oct 16, 2014
Latest reply on Oct 17, 2014 by mattp

        We use ADV7441A as the VGA decoder,as we know,VGA signal consist of R G B color.Now we meet the problem that the video randomly change the color between Red & Blue.For example, sometime we change the VGA Source(PC), R component exchange to B component;sometime we change the VGA cable ,the problem appear too;sometime it run itself and not do anything,the problem appear too...we can't find the law.


        For hardware design,we refer to <AD9388A_ADV7441A_Front_End_Evaluation_Board_Rev.A_Schematics.pdf>,and ADV7441A's register setting is below.


// 720p
gAdv7441a_I2c_ctrl.regAddr[i] = 0x03; gAdv7441a_I2c_ctrl.regValue[i] = 0x0c; i++;// Disable TOD
gAdv7441a_I2c_ctrl.regAddr[i] = 0xc9; gAdv7441a_I2c_ctrl.regValue[i] = 0x04; i++;// DDR Mode
gAdv7441a_I2c_ctrl.regAddr[i] = 0x6B; gAdv7441a_I2c_ctrl.regValue[i] = 0xC3; i++;// CP output selection
gAdv7441a_I2c_ctrl.regAddr[i] = 0x05; gAdv7441a_I2c_ctrl.regValue[i] = 0x02; i++;// Prim_Mode =010b for automatic graphics mode
gAdv7441a_I2c_ctrl.regAddr[i] = 0x06; gAdv7441a_I2c_ctrl.regValue[i] = 0x07; i++;// VID_STD=00111b for automatic graphics mode
gAdv7441a_I2c_ctrl.regAddr[i] = 0x1D; gAdv7441a_I2c_ctrl.regValue[i] = 0x40; i++;// Disable TRI_LLC
gAdv7441a_I2c_ctrl.regAddr[i] = 0x3C; gAdv7441a_I2c_ctrl.regValue[i] = 0xA8; i++;// SOG Sync level for atenuated sync, PLL Qpump to defaul
gAdv7441a_I2c_ctrl.regAddr[i] = 0x37; gAdv7441a_I2c_ctrl.regValue[i] = 0x01; i++;// PCLK Polarity
gAdv7441a_I2c_ctrl.regAddr[i] = 0x47; gAdv7441a_I2c_ctrl.regValue[i] = 0x0A; i++;// Enable Automatic PLL_Qpump and VCO Range
gAdv7441a_I2c_ctrl.regAddr[i] = 0x68; gAdv7441a_I2c_ctrl.regValue[i] = 0xF1; i++;// Auto CSC, YPrPb Out, YPbPr 709
gAdv7441a_I2c_ctrl.regAddr[i] = 0x7B; gAdv7441a_I2c_ctrl.regValue[i] = 0x1D; i++;// Turn off EAV and SAV codes
gAdv7441a_I2c_ctrl.regAddr[i] = 0xF4; gAdv7441a_I2c_ctrl.regValue[i] = 0x15; i++;// Medium Low Drive Strength
gAdv7441a_I2c_ctrl.regAddr[i] = 0x87; gAdv7441a_I2c_ctrl.regValue[i] = 0xE6; i++;// Enable Manual PLL Divider Ratio 0x672 = 1650
gAdv7441a_I2c_ctrl.regAddr[i] = 0x88; gAdv7441a_I2c_ctrl.regValue[i] = 0x72; i++;// Set PLL Divider Ratio
gAdv7441a_I2c_ctrl.regAddr[i] = 0x8F; gAdv7441a_I2c_ctrl.regValue[i] = 0x02; i++;// Set Free Run Line Length 0x27C = 636
gAdv7441a_I2c_ctrl.regAddr[i] = 0x90; gAdv7441a_I2c_ctrl.regValue[i] = 0x7C; i++;// Set Free Run Line Leng
gAdv7441a_I2c_ctrl.regAddr[i] = 0xAB; gAdv7441a_I2c_ctrl.regValue[i] = 0x2E; i++;// Set Line Count Max 0x2EE = 750
gAdv7441a_I2c_ctrl.regAddr[i] = 0xAC; gAdv7441a_I2c_ctrl.regValue[i] = 0xE0; i++;// Set Line Count Max
gAdv7441a_I2c_ctrl.regAddr[i] = 0x91; gAdv7441a_I2c_ctrl.regValue[i] = 0x10; i++;// Progressive