This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DLPC3433: Output does not change when setting the source to 'external video'

Part Number: DLPC3433

We have a DLPC3433 with MIPI-DSI input. I wrote a bash script to cycle through various settings according to the i2c programming guide (uses the standard i2c-tools utilities). It does something like this:

freeze (0x1a 0x01)
set display size to 1024x600 (0x12 0x00 0x04 0x58 0x02)
set source to test pattern (0x05 0x01)
unfreeze (0x1a 0x00)

  • The default checkerboard test pattern is shown at this point.

set test pattern to color bars (0x0b 0x08)

  • The color bar test pattern is now shown.

freeze (0x1a 0x01)
enable DSI port (0xd7 0x00)
set external video format to DSI (0x07 0x00)
set external video size to 1024x600 (0x2e 0x00 0x04 0x58 0x02)
set DSI clock to 300 MHz (0xbd 0x2c 0x01)
set video source to external (0x05 0x00)
unfreeze (0x1a 0x00)

  • The color bar test pattern is still shown, not the external video feed

set source to test pattern (0x05 0x01)
set custom checkerboard test pattern (0x0b 0x07 0x16 0x04 0x00 0x04 0x00)

  • The custom checkerboard test pattern is shown.

Can someone verify that everything above looks like the right procedure? Assuming the DSI clock is set to the correct value and the DSI data signals are correctly wired, is this configuration sufficient to get video output?

As a side note, I have noticed that, after setting the display size with 0x12, if I read it back with 0x13, it returns all zeros. This post reports similar behavior. I don't know how to interpret that, but I figure it's worth mentioning in case this is a related issue.

Thanks,
-Mark

  • Mark,

    Can you share your DSI timings? Also, please share what firmware you are using on the 3433.

    First impressions here are that you could have something wrong with your DSI input timings (meaning that the 3433 doesn't recognize it as DSI video and so ignores it).

    Regards,

    Philippe Dollo

  • Hi Philippe,

    Thanks for getting back to me. My understanding is that the firmware version is returned by the 0xd2 command, which gives me 4.4.0. If that's not what you're looking for, please let me know.

    Regarding the DSI timings, that definitely is one thing I'm still trying to confirm. The host SoC is an Allwinner R16 (apparently also the same as the A33), and the user manual is not clear about the DSI clock rate. When I can confirm that I am using the correct value, I will post it here.

    Thanks,
    -Mark

  • No problem. Please keep us in loop on the timings.

    As for the firmware version, I specifically refer to the link you used to download it. Common sources are the FW Selector Tool (http://software-dl.ti.com/dlp/pico-fw-selector/) or the EVM tool folder.

    Regards,

    Philippe Dollo

  • Hi Philippe,

    Looks like the DSI bus clock is at 200 MHz, which is what the DLP is set to, so that must not be it.

    Regarding the firmware, can that be upgraded via i2c? As I mentioned, the SoC is an Allwinner R16 running linux. How would I flash the firmware?

    Thanks,
    -Mark

  • Mark, 

    Yes, you can update the firmware using I2C. One of the ways to do that would be using GUI - (https://www.ti.com/tool/DLPLCRD-GUI)

    Let us know if you have any additional queries.

    Regards,

    Mayank

  • Hi Mayank,

    I'm not sure how I would do that. The GUI is a Windows application, but the DLPC is on a board with an ARM SoC. This is not an evaluation board. Could you provide some information on what i2c commands are used? Is there documentation for this?

    Thanks,
    -Mark

  • Hello Mark,

    Let me look into what commands will allow you to update the firmware for an ARM SoC.

    I will be back to you with an answer by end of day Thursday.

    Regards,

    Austin

  • Hello Mark,

    We apologize for the delay.

    We are continuing to investigate potential methods to program your ARM SoC through I2C commands.

    Kindly,

    Austin

  • Hello Mark,

    Please try this I2C command procedure to flash your drive:

    Erase Flash:

    • Write Flash Data Type Select (DEh): To select the flash block that you want to erase/read/write
    • Write Erase Flash Data (E0h): Starts the flash erase of all sectors of data type selected
    • Read Short Status (D0h):  Periodically send this command until the Flash Erase Complete bit is 0 (indicating flash erase completed)

    Write Flash:

    • Write Flash Data Length (DFh): To specify the length you want to read/write
    • Write Flash Update Precheck (DDh): Optional step, can be called to ensure that the Data Length specified will fit in the block the Data Type selected
    • Write Flash Start (E1h): Sends writes up to 1024 bytes of data; Writing begins at first address of data type selected
    • Write Flash Continue (E2h): If the data being written is > 1024 bytes, call Write Flash Continue until all data is sent; Writing begins after address of last data written

    You will need to wait between Write Flash Start and continual Write Flash Continue commands to allow each command to finish executing.

    Additionally, you may consider purchasing a Devasys driver if you have any issue communicating with your board.

    Please let us know if you have any further questions.

    Regards,

    Austin