Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 10 of 10

Thread: Driving large TFT/LCD displays

  1. #1
    Junior Member
    Join Date
    May 2021
    Posts
    6

    Driving large TFT/LCD displays

    Hi all, Still new to Teensy, and wondering if I can drive a large (say 1920 x 1080) TFT display with RGB interface, from a teensy 4.1, at some decent frame rate (say 30 FPS).
    Does the Teensy have some hardware peripheral to assist with this, or can/would it be done with raw processing power?

    Thanks.

  2. #2
    Senior Member+ MichaelMeissner's Avatar
    Join Date
    Nov 2012
    Location
    Ayer Massachussetts
    Posts
    4,088
    I don't know about a 1920x1080 display, but the Gamedunio Dazzler can drive a 720p (1280x720) display. The Dazzler is an add-on card. There are 4 variants, Teensy 4.0/4.1, Adafruit Feather, Raspberry Pi Pico, and Arduino:


    Note, even if you hold the screen as a single 8 bit quantity for each pixel, you will not be able to hold the display (2 megabytes) in SDRAM on any Teensy. Without breaking up the screen into smaller chunks, your only option is the Teensy 4.1 where you can solder either 2 8-megabyte PSram chips (that are reset on each power cycle), or 1 8-megabyte PSram chip and 1 8-megabyte Flash memory chip (the flash memory is preserved across power cycles). A single PSram chip would be enough to hold the entire display using the common 3 byte per pixel layout.

    Generally this is an area that the Raspberry Pi does better as it has more memory and a direct HDMI output. Perhaps combining a Raspberry Pi with a Teensy to do the real-time stuff on the Teensy and the graphics work on the Pi.

  3. #3
    In arduino, a TFT needs to have a graphics chip that is in charge of managing each pixel.

    The EVE 4 chips, specifically the BT817, could be a close option, the 10.1 "version has a 1280x800 resolution and the 7" version has a 1024x600 resolution. I think with some minor settings it might be possible to control them with a teensy 4 or 4.1 at good refresh rates.

    The 5 "(800x480) version of this chip has responded very well in a teensy 4, the library for gameduino 23x, has been adapted to use a 128 Gb microSD card connected by the SDIO port, for file management image (jpg and png), assets, cell arrangements and video in avi format; with SdFat beta library support
    Attached Thumbnails Attached Thumbnails Click image for larger version. 

Name:	TFT01.jpg 
Views:	24 
Size:	64.4 KB 
ID:	25039   Click image for larger version. 

Name:	TFT02.jpg 
Views:	20 
Size:	63.4 KB 
ID:	25040  

    Click image for larger version. 

Name:	TFT03.jpg 
Views:	23 
Size:	64.3 KB 
ID:	25041  

  4. #4
    Junior Member
    Join Date
    May 2021
    Posts
    6
    Quote Originally Posted by MichaelMeissner View Post
    ...I don't know about a 1920x1080 display, but the Gamedunio Dazzler can drive a 720p (1280x720) display...
    Too low resolution for what I'd like to do.


    Quote Originally Posted by MichaelMeissner View Post
    ... even if you hold the screen as a single 8 bit quantity for each pixel, you will not be able to hold the display (2 megabytes) in SDRAM on any Teensy. Without breaking up the screen into smaller chunks, your only option is the Teensy 4.1 where you can solder either 2 8-megabyte PSram chips (that are reset on each power cycle), or 1 8-megabyte PSram chip and 1 8-megabyte Flash memory chip (the flash memory is preserved across power cycles). A single PSram chip would be enough to hold the entire display using the common 3 byte per pixel layout.
    Right... this is what I was thinking... 5:6:5 RGB format (2bpp) would be good for me, and this works out to 4MB to hold a full display. I was specifically asking about the T4.1 because that last I remember, Teensys were 180Mhz Cortex and very little RAM. But the T4.1 being able to go up to 8MB is great, especially with 600Mhz.

    Most of what I'll be doing is graphics generated on the fly, in code, and in sections. So this will not be showing movies/video, but displaying control-system information. AIUI, the Teensy would calculate and generate the display in sections, and update each part of the display independently as data changes. I'm not sure though how fast a Teensy 4.1 can stream that data out to the display, and what mechanisms are in place to do that. On an STM32 for example, there is FMC, FSMC, LTDC, etc to handle fast data transfer to an LCD.


    Quote Originally Posted by MichaelMeissner View Post
    ...Generally this is an area that the Raspberry Pi does better as it has more memory and a direct HDMI output. Perhaps combining a Raspberry Pi with a Teensy to do the real-time stuff on the Teensy and the graphics work on the Pi.
    The problem with R-Pi's are that they have a significant boot time, which is a show-stopper here. I've seen people get this down to under 10 secs, but even that is a lot. And then that requires some power-management circuitry to handle graceful shutdown, etc. I went down the path of doing bare-metal R-Pi, and have had some success with it, but it's tedious, and still feels like a "workaround".

  5. #5
    Junior Member
    Join Date
    May 2021
    Posts
    6
    Quote Originally Posted by TFTLCDCyg View Post
    In arduino, a TFT needs to have a graphics chip that is in charge of managing each pixel.
    "Arduino" <cringe>.
    Or do you mean using a Teensy with the Arduino IDE?



    Quote Originally Posted by TFTLCDCyg View Post
    The EVE 4 chips, specifically the BT817, could be a close option, the 10.1 "version has a 1280x800 resolution and the 7" version has a 1024x600 resolution. I think with some minor settings it might be possible to control them with a teensy 4 or 4.1 at good refresh rates.
    ...
    AFAIK, they don't have one that will do 1920px.

  6. #6
    Senior Member
    Join Date
    Apr 2014
    Location
    Cheltenham, UK
    Posts
    365
    I must admit I have little knowledge about graphics output but some google sleuthing showed up eDP (Embedded Display Port).
    I don't know whether Teensy 4.1 is capable of being used here just floating the idea.

    Here and here(eDP: A better embedded display ecosystem) are a couple of links.

  7. #7
    I refer to the TFT, there are some that have a chip dedicated to pixel management, it is generally incorporated into the PCB in addition to the screen's controller chip itself. The advantage is that you can implement complex graphical environments, which take the burden off the MCU.

    In the EVE4 it is called a coprocessor, it is a 32-bit RISC 72 Mhz chip.

    These screens are called HMI, there are several that could potentially be used in the teensy 4 or teensy 4.1, however you have to work in the libraries, since almost all of them are focused on AVR or ARM-STM32 or have their own environment programming, which has nothing to do with the arduino IDE.

    Other examples are: TFT SmartGPU 2, which implement the graphics controller with a STM32F103 chip, or the 4DSystems Diablo or Picasso graphics chip, Nextion TFT, Stone TFT, etc. They are not cheap TFTs, and I have not seen at the moment any with the resolution you are looking for.

    PS: a teensy with a dedicated graphic chip would be very nice

  8. #8
    Senior Member
    Join Date
    Apr 2014
    Location
    Cheltenham, UK
    Posts
    365
    Quote Originally Posted by BriComp View Post
    I must admit I have little knowledge about graphics output but some google sleuthing showed up eDP (Embedded Display Port).
    I don't know whether Teensy 4.1 is capable of being used here just floating the idea.

    Here and here(eDP: A better embedded display ecosystem) are a couple of links.
    I have continued the sleuthing and have come up with this SN65DSI86 MIPI® DSI to eDP™ Bridge.

    Seems to be getting a bit closer, however it is obviously going to require quite a degree of work.
    I imagine this would be completely new to Teensy, but what a product to have!

    Now what is DSI?

  9. #9
    Senior Member
    Join Date
    Apr 2014
    Location
    Cheltenham, UK
    Posts
    365
    Ooh look, see page 68! Isn't this what you are looking for?

    There is Linux source code available for it (DSI) which might be a starting point.

  10. #10
    Junior Member
    Join Date
    May 2021
    Posts
    6
    DSI is yet another standard for display communication and AIUI runs on LVDS. Usual protocol on to of LVDS I've seen is FPD (which I don't know).
    eDP seems to be an embedded format of display port. Not familiar with that either.

    I started by looking at the displays that would work for this application, and it will be 1920x1080 or 1920x720 from just a handful of suppliers with very limited options.
    The displays at this level are mostly LVDS or RGB. I'm not sure which protocol on top of LVDS those are (I assume generic FPD if not specified otherwise), but RGB is a very straightforward and direct-connect format. I know on STM32's for example, talking to RGB displays is almost as simple as formatting the display in RAM, then using one of the high-speed peripherals to dump it to the display quickly. But those don't run at 600Mhz.

    So what I'm asking here is if a Teensy running at 600Mhz has the power and/or peripherals to work with displays of this size.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •