Hi,
I am currently de-bugging a HMI H/W design, for which I have come across an issue which I am hoping somebody can offer me assistance.
An overview of my set-up is as follows: -
I am operating a SerDes set-up in display mode utilising a DS90UB925Q (Ser) interfacing to a H/W selectable DS90UB926Q or DS90UB928Q (Des) which is selected by removing the series coupling capacitors from the FPD-Link-III rails and driving the PDB pin low on the device which is not in operation. The SerDes are set-up using the MODE-SEL pins (#2) for 18-Bit mode to utilise the 4 x GPIO pins, and the GPIO pins are configured over I2C to set-up each device and their associated registers.
The problem I am experiencing is outlined as follows:-
The DS90UB926Q device functions as required, setting up GPIO (0-3); however the GPIO (0-3) will not set-up as required for the DS90UB928Q device. This issue is that GPIO (0-1) will not function correctly (Ser = Inputs, Des Outputs) even though the register addresses are the same as the DS90UB926Q. I can independently drive each GPIO (0-3) as an O/P (High / Low) for both the DS90UB925Q (Ser) and DS90UB928Q (Des) via the I2C registers which indicates the devices GPIO are functioning; however once I configure the GPIO as I require them GPIO (0-1) as Inputs at Ser, the Des fails to respond GPIO (2-3) functions as required. It looks to me as though there is some issue with GPIO (0-1) perhaps a register that I am unaware of which needs configuring?
Please can somebody help explain what is happening here, and how I go about resolving the issue?
I have included the full list if of I2C commands I send to the three FPD-Link-III devices in case I am missing something fundamental: -
I2C Addresses: -
DS90UB925Q (Ser): - 0x18 8'b 0x0C 7'b
DS90UB926Q (Des Par): - 0x58 8'b 0x2C 7'b
DS90UB928Q (Des LVDS): - 0x66 8'b 0x33 7'b
DS90UB925Q (Ser): - 0x18 8'b: -
1. Set 'Configuration [0]' Register (ADD = 0x03) to 0xFA (1111 1010)
- Bit7 = 1, Back Channel CRC Check Enabled
- Bit6 = 1, Reserved
- Bit5 = 1, Automatically Acknowledge I2C Remote Write (Test With disabled)
- Bit4 = 1, Filter Enable (HS, VS, DE) (Check with current LCD timings)
- Bit3 = 1, I2C Pass Through Enabled
- Bit2 = 0, Reserved
- Bit1 = 1, Enable auto-switch over to internal OSC in the absence of PCLK (Allows I2C to function with loss of video PCLK)
- Bit 0 = 0, Parallel Interface Data is strobed on the Falling Clock Edge
2. Set 'Slave ID' Register for AR1021 (ADD = 0x07) to 0x9A (1001 1010)
3. Set 'Slave Alias' Register for AR1021 (ADD = 0x08) to 0x9A (1001 1010)
4. Set 'Data Path Control' Register (ADD = 0x12) to 0x05 (0000 0101)
- Bit7 = 0, Reserved
- Bit6 = 0, Reserved
- Bit5 = 0, DE is positive (active high, idle low)
- Bit4 = 0, Repeater pass through I2S from video pins
- Bit3 = 0, Set I2S Channel B Enable from MODE_SEL pin (Enabled with 294k & 40.2k)
- Bit2 = 1, Select 18-bit video mode
- Bit1 = 0, Enable I2S Data Island Transport
- Bit 0 = 1, I2S Channel B ON; 18-bit RGB mode with I2S_DB enabled
5. Set 'GPIO0 Configuration Register' (ADD = 0x0D) to 0xA3 (1010 0011) (Backlight PWM, Input)
- Bit7-4 = A, Revision ID (Factory Set)
- Bit3 = 0, GPIO0 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 0, GPIO0 control disabled from Remote Deserializer
- Bit1 = 1, GPIO0 direction set to Input
- Bit 0 = 1, GPIO0 enable
6. Set 'GPIO2 & GPIO1' Configuration Register' (ADD = 0x0E) to 0x53 (0101 0011) (Touch Screen Interrupt, Buzzer respectively)
- Bit7 = 0, GPIO2 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit6 = 1, GPIO2 control enabled from Remote Deserializer
- Bit5 = 0, GPIO2 direction set to Output
- Bit4 = 1, GPIO2 enable
- Bit3 = 0, GPIO1 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 0, GPIO1 control disabled from Remote Deserializer
- Bit1 = 1, GPIO1 direction set to Input
- Bit 0 = 1, GPIO1 enable
7. Set 'GPIO3 & GPO_REG4' Configuration Register' (ADD = 0x0F) to 0x03 (0000 0011) (Spare)
********** Set-up not required for test purposes only leave at default 0x00 *************
- Bit7 = 0, GPO_REG4 Output value set to '0' when GPO function is enabled
- Bit6 = 0, Reserved
- Bit5 = 0, Reserved
- Bit4 = 0, GPO_REG4 Enable normal operation (Disabled)
- Bit3 = 0, GPIO3 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 0, GPIO3 control disabled from Remote Deserializer
- Bit1 = 1, GPIO3 direction set to Input
- Bit 0 = 1, GPIO3 enable
Choose one of the two below, dependant on which Deserializer is being used: -
DS90UB926Q (Des): - 0x58 8'b: -
1. Set 'Configuration [1]' Register (ADD = 0x03) to 0xF8 (1111 1000)
- Bit 3 = 1, I2C Pass-Through Enabled
2. Set 'GPIO0 Configuration Register' (ADD = 0x1D) to 0xA5 (1010 0101) (Backlight PWM, Output)
- Bit7-4 = A, Revision ID (Factory Set)
- Bit3 = 0, GPIO0 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO0 control enabled from Remote Serializer
- Bit1 = 0, GPIO0 direction set to Output
- Bit0 = 1, GPIO0 enable
3. Set 'GPIO2 & GPIO1' Configuration Register' (ADD = 0x1E) to 0x35 (0011 0101) (Touch Screen Interrupt, Buzzer respectively)
- Bit7 = 0, GPIO2 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit6 = 0, GPIO2 control disabled from Remote Serializer
- Bit5 = 1, GPIO2 direction set to Input
- Bit4 = 1, GPIO2 enable
- Bit3 = 0, GPIO1 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO1 control enabled from Remote Serializer
- Bit1 = 0, GPIO1 direction set to Output
- Bit 0 = 1, GPIO1 enable
4. Set 'GPIO3 & GPO_REG4' Configuration Register' (ADD = 0x1F) to 0x05 (0000 0101) (Spare)
********** Set-up not required for test purposes only leave at default 0x00 *************
- Bit7 = 0, GPO_REG4 Output value set to '0' when GPO function is enabled
- Bit6 = 0, Reserved
- Bit5 = 0, Reserved
- Bit4 = 0, GPO_REG4 Enable normal operation (Disabled)
- Bit3 = 0, GPIO3 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO3 control enabled from Remote Serializer
- Bit1 = 0, GPIO3 direction set to Output
- Bit 0 = 1, GPIO3 enable
DS90UB928Q (Des): - 0x66 8'b: -
1. Set 'Configuration [1]' Register (ADD = 0x03) to 0xF8 (1111 1000)
- Bit 3 = 1, I2C Pass-Through Enabled
2. Set 'GPIO0 Configuration Register' (ADD = 0x1D) to 0x25 (0010 0101) (Backlight PWM, Output)
- Bit7-4 = A, Revision ID (Factory Set)
- Bit3 = 0, GPIO0 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO0 control enabled from Remote Serializer
- Bit1 = 0, GPIO0 direction set to Output
- Bit0 = 1, GPIO0 enable
4. Set 'GPIO2 & GPIO1' Configuration Register' (ADD = 0x1E) to 0x35 (0011 0101) (Touch Screen Interrupt, Buzzer respectively)
- Bit7 = 0, GPIO2 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit6 = 0, GPIO2 control disabled from Remote Serializer
- Bit5 = 1, GPIO2 direction set to Input
- Bit4 = 1, GPIO2 enable
- Bit3 = 0, GPIO1 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO1 control enabled from Remote Serializer
- Bit1 = 0, GPIO1 direction set to Output
- Bit 0 = 1, GPIO1 enable
5. Set 'GPIO3' Configuration Register' (ADD = 0x1F) to 0x05 (0000 0101) (Spare)
********** Set-up not required for test purposes only leave at default 0x00 *************
- Bit7-4 = 0,Reserved
- Bit3 = 0, GPIO3 Output value set to '0' when set to O/P & function enabled and remote GPIO control is disabled
- Bit2 = 1, GPIO3 control enabled from Remote Serializer
- Bit1 = 0, GPIO3 direction set to Output
- Bit 0 = 1, GPIO3 enable
If you require anymore information please let me know
Thanks Lee Smith