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.

DLPC2607: Sequence of I2c commands for configuring parallel interface source .

Part Number: DLPC2607


Hello ,

I am trying to use the DLP2000EVM to project an image via the parallel interface (RGB888).

I am using an evaluation board from cypress to provide the I2C commands and the image source.

However I am not able to get any image output.

The sequence of I2c commands i sent were:

Address Data

(0xA3) 0x00 0x00 0x00 0x01 //-> Freeze buffer

(0xA6) 0x00 0x00 0x00 0x01 //--> Curtain Enable - default screen to black

(0x0B) 0x00 0x00 0x00 0x00 //-->Input Source Selection: Parallel interface
(0x0C) 0x00 0x00 0x00 0x13 //--> Input Resolution Selection -WVGA-800 landscape
(0x0D) 0x00 0x00 0x00 0x02 //--> Output Format Selection RGB888 24bit
(0xAF) 0x00 0x00 0x00 0x10 //--> Bus Polarity Control (VSYNC = LOW; HSYNC = LOW; DATA_EN = HIGH; PIXCLK = RIS_EDGE)
(0xB2) 0x00 0x00 0x00 0x01 //--> PDM PDATA and DATEN are masked and ignored when PDM = 0
(0xB3) 0x00 0x00 0x00 0x01 //--> PDM Enabled

(0x19) 0x00 0x00 0x08 0x59 //-->Video frame Rate 60Hz

(0x1E) 0x00 0x00 0x00 0x01 //--> Sequence sync Mode - locked to VSYNC

After sending these commands , i could observe the DLP's default image pattern cut-off but its not projecting the images from the source.

I checked the source image by connecting it to a LCD TFT display.

Kindly let me know if I wrongly configured some registers or if I am doing something wrong.

Thanks!

Venkat S

  • Venkatesan,

    Thanks for your log above. I'll review it and provide feedback. In the meantime, can you share what you are using to source your video data? In addition, please share your video timing spec if available.

    Best Regards,
    Philippe Dollo
  • Hello Philippe,

    Thanks for the quick response despite the holiday season! Much appreciate it!

    I am rendering images stored in the flash using the Cypress Graphic engines. Basically they are all images that the graphic drivers access from the flash periodically and sends it via the RGB888 interface.

    My Timing Spec is as follows :

    pixelClock Freq:         -            33.33MHz

    horDisplayPeriod:       -           800u (Horizontal display period - active display area)

    horPulseStart:             -           832U (Horizontal sync pulse start position)

    horPulseEnd               -           912U (Horizontal sync end position)

    horTotal                       -          1056U (Total pixels per line)

    vertDisplayPeriod       -           480U  (Vertical display period - active display area)

    vertPulseStart             -           500U (Vertical sync pulse start position)

    vertPulseEnd              -           512U (Vertical sync end position)

    vertTotal                      -           525U (Total lines per frame)

    syncPolarity                -           HSYNC_ACTIVE_LOW  |  VSYNC_ACTIVE_LOW |  DE_ACTIVE_HIGH | PIX_CLK_RIS_EDGE

    Thanks & Regards,

    Venkatesan S.

  • Venkatesan,

    I noticed that your code above never re-enabled buffer swapping function at the end. It stays frozen the whole time. I suggest you start by only issuing most critical commands (source select, resolution, color space) and add additional commands once you confirm that the system is working.

    Do you still encounter this problem without freeze?

    Best Regards,
    Philippe Dollo
  • Hello Philippe,

    I did notice later that I forgot to unfreeze buffer, so I issued a command - (0xA3) 0x00 0x00 0x00 0x00 , at the end of the sequence to do it. But the output was still the same, blank screen.

    I will also check by reordering the sequence as suggested. 

    I also have a doubt in the wiring. I mapped the data, control and power lines to the DLP in the following way:

    RGB888 DLP I2C -Cyp DLP
    B0 Data_0 (45) 3V3 VINTF(3)
    B1 Data_1 (46) SCL EXT_SCL(19)
    B2 Data_2 (43 ) SDA EXT_SDA(20)
    B3 Data_3 (44) GND GND (1)
    B4 Data_4 (41)
    B5 Data_5 (42)
    B6 Data_6 (39)
    B7 Data_7 (40)
    G0 Data_8 (37)
    G1 Data_9 (39)
    G2 Data_10 (36 )
    G3 Data_11 (34)
    G4 Data_12 (35)
    G5 Data_13 (33)
    G6 Data_14 (31)
    G7 Data_15 (32)
    R0 Data_16 (15)
    R1 Data_17 (16)
    R2 Data_18 (11)
    R3 Data_19 (12)
    R4 Data_20 (17)
    R5 Data_21 (14)
    R6 Data_22 (13)
    R7 Data_23 (19)
    RGB_CLK PCLK (28)
    HSYNC HSYNC (29)
    VSYNC VSYNC (27)
    DE DATAEN(30)
    GND GND(45)

    Are these correct? 

    And what should I do with the HOST_PRESENTZ pin and the PROJ_ON_EXT pin?

    Thanks and Regards,

    Venkatesan S.

  • Venkatesan,

    This pinout mapping you have chosen is actually not correct. The pinout mapping for the RGB888 video follows the same format as the one described here:
    elinux.org/24bit_LCD_for_BBB

    So, Data0 is actually R3, Data1 is R4, and so on. Try reconfiguring your system as such and trying again. HOST_PRESENTZ is supposed to be driven low when the DLP is connected to an external host processor, such that you can then control the system's on-off state with PROJ_ON_EXT. You should be able to leave these disconnected.

    Best Regards,
    Philippe Dollo
  • Hello Phiippe,

    Happy New year!

    I apologize for the delayed response. 

    I tried the new pin mapping (image attached) and also reordering the commands as suggested (Source Selection ->resolution->color space -> Bus Polarity control ).  I left the HOST_PRESENTZ and PROJ_ON_EXT unconnected.

    However, it still didn't work. I am just getting the default dlp intro screen.

    I checked the pins with a scope and the signals seem to be properly transmitted to the dlp from the cypress board.

    Should I configure any other i2c commands (like the sequence_sync mode, PDM or video frame rate) for parallel source input? 

    Thanks & Regards,

    Venkatesan S.

  • Venkatesan,

    Your pin mapping setup above looks to be good. In this case, your issue is probably video output configuration. As I understand, you are still sending the same commands in sequence as listed at the top of this thread. Is that correct?

    If so, what do you see when setting the system from splash screen input to parallel video input? Does the splash screen remain visible or does some kind of content appear?

    In addition to the above, is it possible to generate any alternative video output specifications from your host processor? If so, you can try a native 854x480 configuration. Doing so would mean that you can minimize additional configuration steps and better isolate the problem.

    Let me know about the above. Thanks for your attention.

    Best Regards,
    Philippe Dollo
  • Hello Philippe,

    I had partial success by changing to native 854x480 configuration. First I'll summarize the parameters I used, just to avoid the confusion on the current system state.

    The command sequence I used are as follows (in the same order):

    1. Input Source Selection: Parallel source :-  0x0B 0x00 0x00 0x00 0x00

    2. Input Resolution Selection - WVGA-854*480 landscape :- 0x0C 0x00 0x00 0x00 0x19

    3. Output Format Selection  RGB888 :- 0x0D 0x00 0x00 0x00 0x02

    4. Bus Polarity Control (VSYNC = LOW; HSYNC = LOW; DATA_EN = HIGH; PIXCLK = RIS_EDGE) :- 0xAF 0x00 0x00 0x00 0x10

    5. PDM Enabled :- 0xB3 0x00 0x00 0x00 0x01

    6. PDM config - PDATA and DATEN are masked and ignored when PDM :- 0xB2 0x00 0x00 0x00 0x00 

    7. Video Frame Rate = 60Hz :- 0x19 0x00 0x00 0x08 0x59 

    As suggested I also changed the display parameters to suit 854x480:

    RESOLUTION - H: 854
    RESOLUTION - V :480
    PIX CLK (MHz) :30
    LINE RATE (KHz): 34

    I used the DLPC2607 data sheet to make sure the parameters are within specified range


    Parameters -Value
    tp_vsw  - 7
    tp_vbp  - 28
    tp_vfp  - 10
    tp_tvb  - 38

    tp_hsw -  24
    tp_hbp  - 10
    tp_hfp  - 10
    tp_thh  - 20

    With these values once i send the command the splash screen disappears and I get a white screen (which is the background color for my image i want to display).

    However the entire image does not show up. It is as if only the top portion of the background is visible.

    And if I change the images, I don't see any response from the projector.

    Sometimes sporadically a red screen appears.

    Maybe i need to configure some other parameter also via i2c or the display timing parameters needs to be adjusted?

    Thanks & Regards,

    Venkatesan S.

  • Venkatesan,

    Did you confirm that your host processor requires some of these additional settings? For instance, you have made some configuration settings for PDM, bus polarity, etc. Have you tried testing with just the default reset values? The minimum configuration commands that you would need for a generic host processor is:

    1. Input Source Selection: Parallel source :- 0x0B 0x00 0x00 0x00 0x00
    2. Input Resolution Selection - WVGA-854*480 landscape :- 0x0C 0x00 0x00 0x00 0x19

    If your host processor documentation gives directions on custom configuration, can you share said documentation here?

    Best Regards,
    Philippe Dollo
  • Hello Philippe,

    I was able to find the issue... Finally !
    The problem was the format used for the input resolution selection. It is 19 decimal and not 0x19 ( :-|)

    The DLPC2601 Programmer's guide had examples which addressed the 0x0C Register with hex values for the corresponding resolutions (see snip below)


    However it seems it's not the case.


    I am still a bit confused as it is still a bit misleading as the data section is mentioned as 5 bits long (4:0) but has defined values up to 35.
    A colleague pointed out the discrepancy and we tried 19 decimal instead of hex and vola! It works!

    Once again thanks for all your support despite the Holiday season! I really appreciate it!

    PS: Maybe you could clarify the register data length discrepancy?. Just out of curiosity... I am closing this thread as resolved :)

    Thanks & Regards,
    Venkatesan S.