ILI9341 TFT auf alten raspi B v2.0 läuft nicht

  • hallo und moin!

    ich bekomme einen TFT nicht zum laufen

    ich habe folgenden TFT: http://www.lcdwiki.com/2.2inch_SPI_Mo…341_SKU:MSP2202

    ich schliesse das teil an einem raspi B v2.0 an (revision 000f) (an einem 000e habe ich auch probiert)


    als OS habe ich bullseye LITE ohne X mit aktuellesten updates

    Problem war bei der angabe der pinnumern im overlay! man muss die GPIO-Nummern nehmen und nicht die gezählten Stiftnummern!!

    folgenderweise habe ich die verkabelung gemacht (habe sie auch schon 3mal ab und wieder angesteckt):
    - TFT (blau, VCC) -> Pin 1 (3,3V)
    - TFT (lila, GND) -> Pin 6 (GND)
    - TFT (grau, CS) -> Pin24 (CEO)
    - TFT (weiss, RST) -> Pin22 (GPIO 6)
    - TFT (schwa, DC/RS) -> Pin18 (GPIO 5)
    - TFT (braun, MOSI) -> Pin19 (MOSI)
    - TFT (rot, SCK) -> Pin23 (SCLK)
    - TFT (orange, LED) -> Pin12 (GPIO1)
    - TFT (MISO) -> nicht angeschlossen

    ich aktiviere folgenden overlay im /boot/config.txt

    Code
    dtparam=spi=on
    dtoverlay=fbtft,spi0-0,ili9341,bgr,reset_pin=22,dc_pin=18,led_pin=12,rotate=90

    gleich die erste frage: sind die pinnummern die wirklichen nummern die man auf der gpio-leiste hat also 1-26 bei den alten raspis?

    zweite frage die spi0-0 stelle ich deswegen auf 0, weil die alten raspis nur eine SPI schnittstelle haben und die neueren raspis haben 2 SPI-schnittstellen?

    mit
    sudo vcdbg log msg
    kann man ja ansehen was das overlay laden macht:

    Code
    001347.832: brfs: File read: /mfs/sd/overlays/fbtft.dtbo
    001431.197: Loaded overlay 'fbtft'
    001431.213: dtparam: spi0-0=true
    001444.786: dtparam: ili9341=true
    001450.635: dtparam: bgr=true
    001456.671: dtparam: reset_pin=22
    001471.540: dtparam: dc_pin=18
    001486.412: dtparam: led_pin=12
    001501.449: dtparam: rotate=90

    schmeisst zumindest keinen fehler...

    mit
    cat /proc/fb
    zeigts mit 2 framebuffer devices an:
    0 BCM2708 FB
    1 fb_ili9341

    mit
    con2fbmap 1
    console 1 is mapped to framebuffer 1

    allerdings ist nach dem starten, die console zu framebuffer 0 gemapped, am anfang der probiererei war das auch immer an framebuffer 1 gemapped, jetzt hab ich irgendwas umgestellt und er geht auf den framebuffer 0...mit

    con2fbmap 1 1

    stelle ich es auf den frambuffer 1 um, aber das hilft auch nichts, bekomme trotzdem keine anzeige.

    HDMI kabel habe ich mal angeschlossen mal nicht, das macht keinen unterschied...

    allerdings wenn ich hochstarte, sehe ich am TFT nichts, ausser die hintergrundbeleuchtung was auch maximum aufgedreht ist...was ich möchte ist einfach die konsole auf dem TFT sehen bzw. ich möchte die raspi-camera aufnahme als video darstellen.

    ich habe jetzt 6h herumprobiert und bin mit meinen ideen am ende...

    natürlich könnte der TFT kaputt sein...was ich aber nicht glaube, habe sie heute nagelneu ausgepackt...einen baugleichen habe ich an einem arduino im einsatz, dert macht was er soll

    Danke für eure hilfe...

    Edited 2 times, last by keulemaster: kleine ergänzungen hinzugefügt (February 4, 2024 at 10:56 AM).

  • Moinsen,

    Ich hoffe du hast den SPI Bus in der rapsi-config aktiviert ?

    In der 26 Pin Version gehören zum SPI BUS:
    - MOSI = Pin 18 / GPIO 24
    - MISO = Pin 16 / GPIO 23
    - SCLK = Pin 12 / GPIO 18
    - CS0 = Pin 22 / GPIO 25

    Dieses Display ist nach meiner Kenntnis nicht geeignet als sekundäres Display eine skaliertes Duplikat des HDMI-Ports anzuzeigen. Als reines sekundäres Display mittels einer der bekannten Bibliotheken für C/C++ oder Python angesprochen angesprochen, funktionieren diese Displays problemlos.. Allerdings ist der Bildaufbau eher sehr gewöhnungsbedürftig langsam. Zumal du auf den älteren PI-Boards nicht die maximale Takt- bzw. Übertragungsrate von 10 MHz ausspielen kannst. Das Display selber bzw. dessen Bildcontroller kann unter optimalen Bedingungen mit einer SCLK Clockrate von bis zu 10 MHz angesteuert werden. Langsamer geht auch und immer, wirkt sich aber sehr drastisch auf den Bildaufbau und damit die / eine mögliche Bildwiederholrate aus.

    Dennoch als eigenständiges Primärdisplay von einer eigenen Anwendung aus direkt angesprochen, ist das Display durchaus brauchbar, wenn man keine hoch aufwendigen Animationen mit einer gigantischen FPS Rate wiedergeben will.
    Je nach Füllgrad auf dem Display sind nur unter 5 FPS wirklich garantiert realisierbar. ( Das sind meine Erfahrungen. Wobei ich sagen muss, das meine Codes wahrscheinlich nicht immer die schnellsten, und auf Laufzeitoptimierung getrimmten Codes sind. )

    Franky

  • Moin keulemaster,

    gleich die erste frage: sind die pinnummern die wirklichen nummern die man auf der gpio-leiste hat also 1-26 bei den alten raspis?

    Noe, die Pin-Nummer sind nicht die GPIO-Nummern. Da solltest du dir mal einen Plan besorgen.
    In der Overlays sind die GPIO-Nummer einzutragen!!

    - TFT (weiss, RST) -> Pin22 (GPIO 6)
    - TFT (schwa, DC/RS) -> Pin18 (GPIO 5)

    - TFT (orange, LED) -> Pin12 (GPIO1)

    Nach meinen Kenntnisstand gibt es bei den 26-poligen Leisten keine GPIO6, GPIO5 und GPIO1. Da hast du was durcheinander gebracht.

    Franky07 Bei welcher Version des Raspberry Pi wurde denn die Revision1 verwendet?

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Guten Morgen!

    erstmal vieln Dank für euere nächtliche prompte Hilfe!!!

    habe euere Hinweise bedacht und folgende verkabelung durchgeführt:

    - TFT (blau, VCC) -> Stift 1 (3,3V)
    - TFT (lila, GND) -> Stift 6 (GND)
    - TFT (grau, CS) -> Stift24 (GPIO8 = CEO)
    - TFT (weiss, RST) -> Stift22 (GPIO25) -> also reset_pin=25 in overlay
    - TFT (schwa, DC/RS) -> Stift18 (GPIO24) -> also dc_pin=24 in overlay
    - TFT (braun, MOSI) -> Stift19 (GPIO10 = MOSI)
    - TFT (rot, SCK) -> Stift23 (GPIO11 = SCLK)
    - TFT (orange, LED) -> Stift16 (GPIO23) -> also led_pin=23 in overlay
    - TFT (MISO) -> nicht angeschlossen

    spi0-0 im overlay bedeutet dass man an GPIO8=SPI0-CE0 das CS vom TFT anschliessen muss

    und es funktioniert!!!! JUCHU!!!

    mein Fehler war dass ich die stiftnummern im overlay eingetragen habe und nicht diese Broadcom GPIO-nummern..

    bernd hats gesagt:

    Quote

    In der Overlays sind die GPIO-Nummer einzutragen!!

  • Moin keulemaster,

    danke für die Rückmeldung!!

    Viel Spass noch bei deinem Projekt.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Bernd666

    ich will eine camera bauen. jetzt stehe ich vor der frage ob ich mit fbcp schaffe libcamer-vid am schirm darzustellen (heute noch nicht geschafft) oder über python gehe und pygame wie bei einem adafruit projekt gesehen. habe mich noch nicht entschieden.

    hast sowas schon mal gemacht? (libcamera-vid als endloschleife am TFT ausgeben?

  • Moin keulemaster,

    mit Kameras an RPi habe ich noch nix zutun. Damit auch noch nichts mit libcamera.
    Ich befürchte aber, das du einige Teile von X nachinstallieren musst.

    73 de Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    ich habe ein 2.8" kapazitives Touch aus China. Habe es so angeschlossen:

    Code
    dtoverlay=fbtft,spi0-0,ili9341,reset_pin=25,dc_pin=24,led_pin=18,rotate=270

    leider sind die Farben invertiert. Das fbtft Layout komplett durchforstet, da gibt es keinen Befehl die Farben zu invertieren. "bgr" auch schon probiert, auch wenn es wenig damit zu tun hat. Was könnte ich noch versuchen?

  • das ist ok.

    keine ahnung ob bei falscher verkabelung ein invertiertes bild daherkommen kann...

    du könntest noch dein eigenes "overly" kompilieren: https://github.com/juj/fbcp-ili9341

    ich betreibe meins mit der software...

    aber sonst habe ich keine ideen....

    Das läuft leider auch nicht. Ich habe einen PI2B 1.1 das Display über SPI am Kabel.

    Alles nach Anleitung und es gebe dort sogar den Parameter zum Farben invertieren. Allerdings spuckt es mir nach dem Start diesen Fehler aus.

    Code
    vc_dispmanx_display_open failed! Make sure to have hdmi_force_hotplug=1 setting in /boot/config.txt

    Die /boot/config.txt wurde aber bereits vorher bearbeitet

    Code
    hdmi_group=2
    hdmi_mode=87
    hdmi_cvt=320 240 60 1 0 0 0
    hdmi_force_hotplug=1

    das nützt leider alles nix. Na ja, werde dann mal weiter schauen, trotzdem danke.

  • ich habe das so compiliert:

    Code
    cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25 -DGPIO_TFT_BACKLIGHT=23 -DSPI_BUS_CLOCK_DIVISOR=8 -DSINGLE_CORE_BOARD=ON -DARMV6Z=ON -DBACKLIGHT_CONTROL=ON -DDISPLAY_ROTATE_180_DEGREES=ON ..

    und config.txt:

    Code
    	`hdmi_force_hotplug=1`
        `hdmi_group=2`
        `hdmi_mode=87`
        `hdmi_cvt=320 240 60 1 0 0 0`
        `dtoverlay=vc4-fkms-v3d`
        `max_framebuffers=2`
        `disable_overscan=1`
        `gpu_mem=128`

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!