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.

GPIO speed

Hello,
I am working on project connecting LCD with Build in driver (480x272 SSD1963)
so far i get good results, but i found that GPIO speed is just 2.5-3.3MHz
I was playing with PLL settings, but best i get is 3.3MHz (core runs on 1.2GHz, but i think that is not the way to go)
i use this function to print data t port:


HWREG(0x4804C13C) = (RGB_Code);

Any ideas how to make it faster ? ( i know that some one was able to get 25MHz )
some results:
http://www.youtube.com/watch?v=IdV_OXv1QtQ

  • Linas,

    Which is the SoC that you are using?

  • Beaglebone AM3359ZCZ

  • Linas,

    Why are you using GPIO to write data to LCD panel? Why don't you use LCD controller for the same?

  • two reasons:
    first i just get Beaglebone and that is quite big leap from msp430 and stm32f4, and i still trying to understand this SOC.
    This lcd panel have it's own frame buffer with PLL and so on, so i see LCD as RAM, and just write values to GRAM, and code was developed for STM32F4 so that was good start to make lcd work with beaglebone.
    Second, i have no idea how to make all config to make it work. Ultimate goal is to use samsung TFT panel and use baglebone external ram as frame buffer and DMA to refresh screen, so cpu would be free do do what i want. but that is long way to go with my knowledge

  • Linas,

    Since you have a remote frame buffer located on the panel, you have to use LIDD mode of LCD controller. It will take care of transferring the frame buffer to the panel's buffer. If you are using normal TFT panel, then you've to use Raster scan mode, where the LCD controller will drive the signals.

  • ok, you are right, beaglebone has similar interface like STM32F4 FSMC controller.
    I found that:
    LCD D0-D15: 16 bits of data/address lines
    LCD_VSYNC -> C/D
    LCD_HSYNC -> WR
    LCD_PCLK ->  RD
    LCD_AC_ENB_CS -> Chip Select 0
    LCD_MCLK -> Chip Select 1
    But i have no idea how to initialise this LIDD, and how to make command/data sending function to LCD controller
    Do you have any tips or something to get started ?
    I found definitions in hw_lcdc.h but have no idea what to do next
    Also, how mush faster it will going to be than configuration i have right now ?

  • It will be much better than your current interface for sure. I think you should be able to achieve at least 60fps. I'm not really familiar with Starterware. But it should be easy. You can try with the raster mode driver itself and try changing couple of registers to enable LIDD.

  • LIDD is too much for me.
    I just need to make GPIO toggle faster, that will do the trick for me, maybe later i will be able to connect it with proper controller
    Any ideas how to make GPIO toggle faster ? since i write data direcly to REG, it looks like fastest way, or i miss the point completely

  • Linas,

    If you want to achieve 30fps frame rate there is no other way. How much ever fast you toggle the GPIO you won't be able to render a complete frame in 33 milliseconds. Even if you manage to achieve that, ARM will be fully engaged for display driver alone. 

    LIDD is not that complex as you think. Its relatively easy. You've to spend time in understanding a bit that's all. The register configs required is too few.