Samstag, 6. März 2021

SPI displays am Raspberry Pi mit fbcp-ili9341

Über den Adafruit Raspberry Pi Video Looper soll die Simulation einer Kompakt-Kassette auf einem kleinen SPI-Display abgespielt werden. Da im Linux-Kernel 5 framebuffer nicht mehr unterstützt wird suchte ich eine Alternative. Und die heißt fbcp-ili9341.



die git-Seite des Projektes:

fbcp-ili9341

 Das display an sich wäre mit LCD-show schnell installiert. Aber der Pi Video Looper kann nur auf dem HDMI-Port ausgeben. Wir brauchen also eine Spiegelung des HDMI Monitors auf das SPI-Display, und das ist bei Raspberry Pi OS nur noch mit fbcp-ili9341 möglich.

Die Einrichtung geschieht folgendermaßen:

erst müssen wir den verwendeten Chipsatz recherchieren. Es handelt sich in dem Fall um dieses Modul:

 


Auf dieser Seite wurde ich fündig:

Raspberry Pi Stack Exchange

wir wissen nun daß es sich im Beispiel um einen ili9486 Chip handelt.

Entsprechend den Anweisungen bei git installieren wir nun erst mal die Grundsoftware fbcp-ili9341:

sudo apt-get install cmake
cd ~
git clone https://github.com/juj/fbcp-ili9341.git
cd fbcp-ili9341
mkdir build
cd build

dann bauen wir uns die cmake Parameter zusammen

cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON -DUSE_DMA_TRANSFERS=OFF ..

Das Leerzeichen und die 2 Punkte am Ende des strings sind wichtig und gehören dazu. Der divisor von 40 ist evtl. recht hoch gewählt. Wir könnten später mit kleineren Werten optimieren. Den DMA-Transfer musste ich aber abschalten, sonst fror die Wiedergabe auf dem SPI-Display ein.

nach dem Ausführen der cmake Anweisung geht es weiter mit:

make -j


lt. Anleitung kann der Treiber nun mit:

sudo ./fbcp-ili9341

erst mal testweise gestartet werden. Bei mir erschien aber kein Inhalt auf dem display. Erst als ich den  Aufruf in die rc.local eingebunden habe:

sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &

 



 für meine Kassettensimulation muss ich die Bildschirmskalierung aufheben. Um neue Parameter einzugeben wird der fbcp-Dienst mit sudo pkill fbcp beendet. Jetzt kann cmake mit den geänderten Parametern wieder ausgeführt werden, danach wieder make -j ausführen und unser Treiber kann wieder gestartet werden.

cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON -DUSE_DMA_TRANSFERS=OFF -DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ON ..

 Jetzt haben wir nur noch einen Bildschirmausschnitt, der vom Massstab her aber etwas zu groß geraten ist. Abhilfe schaffen wir durch Änderung der HDMI-Auflösung mit sudo raspi-config.


hier mit 640x480. Die Skalierung ist jetzt etwas zu klein.

  

Besser sieht es aus mit 720x480:


 

 Jetzt schalten wir noch die Bildschirm-Statistik ab, weil sie störend ist.

der komplette string sieht jetzt so aus:

cmake -DSPI_BUS_CLOCK_DIVISOR=40 -DWAVESHARE35B_ILI9486=ON -DUSE_DMA_TRANSFERS=OFF -DDISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING=ON -DSTATISTICS=0 ..


Die Größenverhältnisse sind jetzt realistisch und das Display kann in ein Kassetttenfach eingebaut werden.

ich habe noch eine weitere Anleitung gefunden:

SPI TFT LCD - Kernel 5




Keine Kommentare:

Kommentar veröffentlichen