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.

Outputting an image via VPIF

Other Parts Discussed in Thread: OMAP-L138

Hello,

 

I have problems on outputting an image (currently it consists of dummy data) via VPIF. I've choosed progressive output mode and here's my code to configure VPIF:

  #define IMAGE_X_BLANKING_SIZE 94
  #define IMAGE_Y_BLANKING_SIZE 45
  #define IMAGE_X_VALID_SIZE    752
  #define IMAGE_Y_VALID_SIZE    480

  #define IMAGE_X_SIZE (IMAGE_X_BLANKING_SIZE + IMAGE_X_VALID_SIZE)
  #define IMAGE_Y_SIZE (IMAGE_Y_BLANKING_SIZE + IMAGE_Y_VALID_SIZE)

  UChar image_to_display[IMAGE_Y_SIZE][IMAGE_X_SIZE];

  Void MAIN_InitLVDS()
  {
    Int x, y;
    Int counter = 0;


    vpif0_regs->DISPLAY[0].TLUMA = CSL_FMK(VPIF_C2TLUMA_TLUMA, (UInt32) image_to_display);
    vpif0_regs->DISPLAY[0].HCFG = CSL_FMK(VPIF_C2HCFG_EAV2SAV, IMAGE_X_BLANKING_SIZE) |
                                  CSL_FMK(VPIF_C2HCFG_SAV2EAV, IMAGE_X_VALID_SIZE);
    vpif0_regs->DISPLAY[0].VCFG0 = CSL_FMK(VPIF_C2VCFG0_L1, 0) |
                                   CSL_FMK(VPIF_C2VCFG0_L3, 0 + IMAGE_Y_BLANKING_SIZE);
    vpif0_regs->DISPLAY[0].VCFG1 = CSL_FMK(VPIF_C2VCFG1_L5, IMAGE_Y_SIZE);
    vpif0_regs->REQSIZE = CSL_FMKT(VPIF_REQSIZE_BYTES, 32);

    vpif0_regs->C2CTRL = CSL_FMKT(VPIF_C2CTRL_CLKEN, ENABLE) |
                         CSL_FMKT(VPIF_C2CTRL_CLKEDGE, RISE) |
                         CSL_FMKT(VPIF_C2CTRL_FIELDFRAME, FRAME) |
                         CSL_FMKT(VPIF_C2CTRL_INTRPROG, PROGRESSIVE);
   
    for (y = 0; y < IMAGE_Y_SIZE; y++)
    {
        for (x = 0; x < IMAGE_X_SIZE; x++)
        {
            if ((x < IMAGE_X_VALID_SIZE) && (y < IMAGE_Y_VALID_SIZE))
            {
                counter++;
            }
            image_to_display[y][x] = counter;
        }
    }
   
    vpif0_regs->C2CTRL = CSL_FINST(vpif0_regs->C2CTRL, VPIF_C2CTRL_CHANEN, ENABLE);

}

 

The problem is that if I measure the data output pins with an oscilloscope, nothing happens. The only thing I can see is the signal of VCLKOUT2. Who knows how to use the VPIF and how to configure? I just want to output the raw image data, so nothing special. But maybe Iam missing something (DMA configuration, trigger of DMA transfer)?

 

Any help on this issue would be very appreciated.

 

Thanks,

Steve

  • Hi,

     

    sorry I've just seen that this is the wrong forum for this post? Can someone move it to OMAP-L138 forum?

     

    Thanks,

    Steve

  • Hi Steve,

    several comments/suggestions:

    1. Please set L1 to 1, not 0.

    2. set C2CTRL.PIXEL to 1.

    3. make sure you've set the pinmux register properly.

    You can go to LogicPD website and download their example testcases.

    regards,

    Paul

  •  Hi Paul,

    Thanks for your answer. Tried the things you've mentioned under 1 and 2, also the pinmux registers should be set according to my requirements. Still nothing happens, also no interrupt or status flag is generated. Just nothing. I've tried outputting some data with LCDC module and this works as aspected, but since my other device listens and capures the data according to CLKOUT2 of the VPIF I have to use this module...

     

    Kind Regards,

    Steve

     

    Btw: Iam using the following signal path for CLKOUT2:

    PWM1A -> CLKIN2 -> CLKOUT2

    PWM1A output is short circuited with CLKIN2 input of the VPIF. VPIF than should route CLKIN2 to CLKOUT2. This works since I can measure the generated PWM on CLKOUT2.

  • Steve,

    At this moment, I would again recommend you to have a look at the logic PD testcases and use it as a reference. If you are using the EVM, you can actually run the loopback testcase. Even if you are not running this on an EVM, you can still see the display side working (seeing signals toggling at the data out lines). Note the testcase is using internal clock.

    http://www.logicpd.com/products/system-on-modules/zoom-omap-l138-evm/#related-products

    Just want to be sure that you have enabled PSC for the peripheral. Are you able to write to the peripheral registers? Please also double check pinmuxing.