Wir verbinden das SPI LCD ILI9341-Display mit dem Banana Pi BPI-M64-Einplatinencomputer oder einem anderen Computer des Armbian-Betriebssystems

LCD SPI ILI9341 Bananen-Pi BPI-M64



Der Beitrag enthält Anweisungen zum Anschließen eines TFT-LCD-Displays am beliebten ILI9341-Controller an einen Einplatinencomputer auf Basis von Armbian OS mithilfe eines Gerätebaum-Overlays, ohne mit einem Tamburin zu tanzen. Im Internet gibt es viel Material darüber, wie verschiedene LCD-Bildschirme an den Raspberry Pi angeschlossen werden können. Aber was ist, wenn Sie keinen Raspberry Pi haben und einen kostengünstigen LCD-Bildschirm an die SPI-Schnittstelle anschließen möchten? Alles was du brauchst ist ein Armbian-fähiges Board. Der von Armbian OS unterstützte Board-Katalog enthält Boards: Asus, Pine64, Hardkernel, Orange Pi, Banana Pi usw. Derzeit enthält der Katalog mehr als 114 Boardmodelle. Die Unterstützung für verschiedene sofort einsatzbereite Geräte wird angekündigt. Verfügbar für den Anschluss: 4G / LTE-Modems, USB-WLAN, USB-Bluetooth, USB-Ethernet, Scanner-DVB-Tuner usw. Alle diese Karten können problemlos an das SPI-LCD-Display ILI9341 angeschlossen werden.Ich frage, wie man das unter cat umsetzt.





Viele Single-Board-Computer verfügen über einen HDMI-Ausgang, aber das Anschließen eines Vollbildschirms mit HDMI-Eingang ist für ein kleines Projekt teuer genug. Insbesondere, wenn es erforderlich ist, die minimale Funktionalität der Interaktion mit dem Benutzer zu implementieren, ein Terminal zum Drucken von Dokumenten, das den aktuellen Status einer laufenden Anwendung anzeigt. Für solche Aufgaben können Sie LCD HD44780-Zeichenanzeigen auf der I2C-Schnittstelle verwenden. Sie sind recht billig und praktisch. Gleichzeitig sind sie in ihrer Funktionalität sehr eingeschränkt. Es ist unmöglich, die Linux-Konsole und die native Benutzeroberfläche der Anwendung auf diesen Bildschirmen anzuzeigen. Außerdem kann der LCD-Bildschirmbereich nicht als Informationseingabefeld verwendet werden. LCD-Bildschirme auf der SPI-Schnittstelle eignen sich perfekt zur Lösung dieser Probleme. Ein 3,5-Zoll-Display mit einer Widerstandsschicht kann für 9,57 USD (einschließlich Versand) erworben werden.Auf dem LCD-Bildschirm können die Linux-Konsole und das X11-Subsystem angezeigt werden. Daher ist die Verwendung von SPI-LCD die beste Option in Bezug auf Funktionalität und Kosten.



Anzeige ILI9341 2,2 Zoll 2,2 "SPI TFT



Der ILI9341-Controller dient zur Steuerung des TFT-Panels. Für den ILI9341-Controller werden Panels mit einer Diagonale von 2,2 bis 3,2 Zoll und einer Auflösung von 240 x 320 geliefert. Einige LCDs werden mit einer Widerstandsschicht versehen.

Wir werden ein 2,4-Zoll-SPI-LCD-ILI9341-Modul ohne Widerstandsschicht an einen Banana Pi BPI-M64-Einplatinencomputer anschlieĂźen.



BerĂĽcksichtigen Sie die Eigenschaften und die Pinbelegung des SPI LCD ILI9341 2,4 Zoll



  • 2,4-Zoll-Farbbildschirm, unterstĂĽtzt 65K-Farben
  • Auflösung 320X240
  • SPI-Verbindungsschnittstelle
  • SD-Kartensteckplatz verfĂĽgbar
  • Modulstromversorgung 3,3V ~ 5V
  • Logiksteuerspannung 3,3 V (TTL)


LCD-Verbindungsstifte

Nummer Pin-Etikett Beschreibung
einer VCC 5V / 3,3V Stromeingang
2 GND Boden
3 CS LCD-Chip-Auswahlsignal, Low-Level-Freigabe
vier RESET LCD-Reset-Signal, Low-Level-Reset
fĂĽnf DC / RS LCD register / data selection signal,high level: register, low level: data
6 SDI(MOSI) SPI bus write data signal
7 SCK SPI bus clock signal
8 LED Backlight control, high level lighting,if not controlled, connect 3.3V always bright
9 SDO(MISO) SPI bus read data signal, if you do not need to the read function, you can not connect it


Zur Steuerung der Hintergrundbeleuchtung wird die Kontaktnummer 8 - LED verwendet . Die maximale Spannung von 3,3 V entspricht der maximalen Helligkeit der gesamten VCC-Versorgung. Wenn die Bildschirmhelligkeit auf 50% eingestellt werden muss, muss an die LED eine Spannung von 1,65 V angelegt werden. Um die Helligkeit der Hintergrundbeleuchtung programmgesteuert zu steuern, muss der LED-Pin mit dem GPIO-Analogausgang des Einplatinencomputers verbunden werden. Wenn nur digitale Ausgänge verfügbar sind, ist nur die Option zum Ein- oder Ausschalten der Hintergrundbeleuchtung des Bildschirms verfügbar.



Basierend auf den Eigenschaften des LCD-Bildschirms werden die folgenden Anforderungen an einen Einplatinencomputer gestellt:



  • VerfĂĽgbarkeit der SPI-Schnittstelle
  • Logikspannung an Pin 3.3V (die meisten Karten)
  • Sie benötigen zwei weitere (RESET, DC / RS) freie GPIO-Pins


Was fĂĽr ein armbianisches Biest bist du und welche Art von Single-Board-Computer brauchst du?



Die Seite armbian.com/download enthält eine Vielzahl von Einplatinencomputern. Unter dem Gesichtspunkt der einfachen Verbindung ist es besser, eine Karte mit einem 40-poligen GPIO-Anschluss zu wählen, der mit Raspberry Pi 3 kompatibel ist. Wenn Sie beispielsweise das SPI LCD ILI9341 2,4 Zoll an die Banana Pi BPI-M64-Karte anschließen und Orange Pi PC, dann sind die Nummern der physisch verbundenen GPIO-Pins gleich (nicht zu verwechseln mit den Namen der Prozessorkontakte, sie sind unterschiedlich und für die Konfiguration weiter erforderlich). Wenn der Einplatinencomputer nicht auf dem Allwinner-Prozessor basiert, müssen Sie möglicherweise weitere Parameter in der Datei ändern: sun50i-a64-spi-ili9341-led-always-on.dts (wird weiter unten im Text beschrieben).



ArmbianIst die beliebteste Linux-Distribution fĂĽr Single-Board-Computer, die auf einem ARM-Prozessor basiert. Die Liste der unterstĂĽtzten Boards ist riesig: Orange Pi, Banana Pi, Odroid, Olimex, Cubieboard, Roseapple Pi, Pine64, NanoPi usw. Die Armbain-Distribution basiert auf Debian und Ubuntu.



Nach dem Erscheinen des Raspberry Pi in der Welt beschlossen chinesische Hersteller, sich auch der Open Hardware Source-Bewegung anzuschließen, und stellten viele verschiedene Boards her. Die Softwareunterstützung war jedoch äußerst schwach. Das Armbian-Projekt wurde ins Leben gerufen, um dieses Problem zu lösen. Im Moment ist Armbian bereits 7 Jahre alt, 114 Boardmodelle werden unterstützt, die Unterstützung für verschiedene sofort einsatzbereite Geräte wurde angekündigt. Verfügbar für den Anschluss: 4G / LTE-Modems, USB-WLAN, USB-Bluetooth, USB-Ethernet, Scanner-DVB-Tuner usw.



Um Armbian auf einem Einplatinencomputer auszuführen, müssen Sie ein Image von der Site herunterladen und dann auf eine microSD-Karte kopieren, von der Sie später booten müssen. Wenn die Karte über ausreichend eMMC-Speicher verfügt, kann das Betriebssystem über das Dienstprogramm armbian-config problemlos zusammen mit dem Bootloader von der microSD-Karte auf den eMMC-Speicher übertragen werden.



Wenn Sie ein IoT-Projekt mit Armbian erstellen, können Sie im Gegensatz zum Raspberry Pi Boards auswählen, die sich in der Leistung und einer Reihe von Peripheriegeräten unterscheiden. Beispielsweise haben alle Versionen des Raspberry Pi nur einen Ethernet-Port. Wenn Sie jedoch einen Router mit mehreren Ethernet-Ports herstellen müssen, sind aus der Liste der unterstützten Armbian-Karten folgende Modelle geeignet: Helios64, Espressobin, Bananapi R2 usw.



UnterstĂĽtzte SoC



  • Allwinner A10, A20, A31, H2 +, H3, H5, H6, A64
  • Amlogic S805 und S905 (Odroid-Boards), S802 / S812, S805, S905, S905X und S912 (Gabel von @ balbes150)
  • Actionsemi S500
  • Freescale / NXP iMx6
  • Marvell Armada A380
  • Rockchip RK3288 / RK3328 / RK3399
  • Samsung Exynos 5422


Schaltplan SPI LCD ILI9341 2,4 Zoll zum Banana Pi BPI-M64 (Raspberry Pi 3 GPIO-Anschluss)



Die SPI-Schnittstelle des LCD-Bildschirms ist mit SPI1 des Banana Pi BPI-M64 verbunden. CS-, RESET-, DC / RS-Kontakte können an beliebige digitale Pins angeschlossen werden.



Verbindungsstifttabelle:

LCD-Nummer LCD-Etikett PIN-Nummer am Banana Pi BPI-M64 (Raspberry Pi 3 GPIO-Anschluss)
einer VCC 1 oder 2 (wenn Sie maximale Helligkeit benötigen, kontaktieren Sie Nr. 2 bei 5V)
2 GND 39 oder irgendein anderer Grund
3 CS 24
vier RESET achtzehn
fĂĽnf DC / RS 22
6 SDI (MOSI) 19
7 SCK 23
8 LED 1 oder ein beliebiger freier GPIO bei 3,3 V.
9 SDO (MISO) 21


Wenn der LED-Pin mit dem digitalen GPIO-Ausgang verbunden ist, mĂĽssen Sie zum manuellen Einschalten der Hintergrundbeleuchtung eine logische "1" (zum Einschalten oder "0" - zum Ausschalten des Bildschirms angeben.



SPI LCD ILI9341 Anschlussplan:

LCD SPI ILI9341 Bananen-Pi BPI-M64



Banana Pi BPI-M64 Einplatinencomputer



Banana Pi BPI-M64 ist ein 64-Bit-Quad-Core-Mini-Single-Board-Computer, der als Open-Source-Lösung geliefert wird. Der Kern des Systems ist ein Allwinner A64-Prozessor mit 4 Cortex-A53-Kernen mit einer Frequenz von 1,2 GHz. Das Board enthält 2 GB DDR3 SDRAM 733 MHz RAM und 8 GB eMMC.



Das Wichtigste für eine erfolgreiche SPI-LCD-Verbindung ist, den Namen der Kontakte für die SPI-Schnittstelle zu kennen. Ihre Anzahl und ihr Name hängen vom Prozessormodell ab. Für diese Aufgabe ist das Allwinner A64-Datenblatt erforderlich. Die Banana Pi BPI-M64-Wiki-Seite zeigt die Pinbelegung des 40-poligen GPIO-Anschlusses, von dem wir den Namen der Pins erfahren: PD2, PD3 usw.

40 PIN GPIO von Banana pi BPI-M64
GPIO-Pin-Name Standardfunktion Funktion2: GPIO Funktion3
CON2-P18 PD4 PD4
CON2-P19 SPI1-MOSI PD2 UART4-TX
CON2-P21 SPI1-MISO PD3 UART4-RX
CON2-P22 PC0 PC0
CON2-P23 SPI1-CLK PD1 UART3-RX
CON2-P24 SPI1-CS PD0 UART3-TX


Zusätzlich zum Namen des Kontakts muss die Seriennummer dieses Kontakts auf dem Prozessorzweig ermittelt werden. Diese lässt sich leicht anhand der Formel berechnen: (Position des Buchstabens im Alphabet - 1) * 32 + Ausgabeposition . Berechnen wir die Beinnummer fĂĽr den PD2-Pin. Der erste Buchstabe wird da nicht gezählt P - PORT, die Position des Buchstabens D im Alphabet = 4, wir erhalten (4-1) * 32 + 2 = 98. Der  Kontakt mit dem PD2-Etikett entspricht dem 98. FuĂź auf dem Prozessor, dann wird es benötigt um den Gerätebaum zu konfigurieren.



Gerätebaum (DT) unter Linux



Ein Gerätebaum (DT) ist eine Linux-Datenstruktur, die aus benannten Knoten und Eigenschaften besteht, die Hardware beschreiben, die durch Abfragen der Hardware nicht erkannt werden kann. Der Baum sollte den Namen des Kernprozessors, seine Speicherkonfiguration und alle Peripheriegeräte (intern und extern) enthalten. DT wird nicht zur Beschreibung von Software verwendet, obwohl das Auflisten von Hardwaremodulen das Laden von Treibermodulen bewirkt.



Das Herz eines jeden Entwicklungs- oder Einzelplatinencomputers ist der SoC. Der SoC verfügt über viele Stifte (Beine) zum Anschließen von Stromleitungen und verschiedenen Geräten.



Allwinner V3s



Die Pins können miteinander verbunden werden, um eine Schnittstelle wie MIPI DSI (MIPI Display Serial Interface) zu bilden. Die MIPI-DSI-Schnittstelle dient zum Anschluss von LCD-Panels und wird in Smartphones und Tablets aktiv verwendet. Wenn Sie jedoch nicht vorhaben, ein Display über MIPI DSI an das Gerät anzuschließen, können diese Leitungen durch Ändern des DT für andere Zwecke verwendet werden. Im Gegensatz zur x86-Architektur können SoC-basierte Systeme nicht alle Geräte im Plug-and-Play-Modus vollständig identifizieren. Daher muss explizit angegeben werden, welche Pins für Schnittstellen verwendet werden und welche Geräte an diese Schnittstellen angeschlossen sind.



Vor dem Aufkommen von DT waren Geräteinformationen unter Linux ein wesentlicher Bestandteil des Kernels, und im Falle einer Änderung der Zusammensetzung von Peripheriegeräten musste das Systemabbild neu erstellt werden. Dies war äußerst unpraktisch, und daher wurde die Beschreibung der Peripheriegeräte in Konfigurationsdateien verschoben, die auf der logischen Ebene in einem Baum gesammelt werden. Bei Branch handelt es sich um ein Gerät mit einer Angabe des Treibers, der für den Betrieb dieses Geräts erforderlich ist.



Nach der Verwendung von DT war es nicht erforderlich, für jeden Satz von Peripheriegeräten ein individuelles Image zu erstellen. Jetzt reicht es aus, ein Image zu erstellen, eine Reihe von Treibern für verschiedene Geräte einzuschließen und für jedes Gerät einen eigenen DT zu erstellen.



Gerätebaum-Overlays



Gerätebaum - Overlays - Fügen Sie das Prinzip der überlappenden Vorrichtungsschichten auf die DT. Wenn die Konfiguration die UART-Schnittstelle beschreibt, mit der Bluetooth verbunden war, und Sie Bluetooth durch ein GPS-Modul ersetzen müssen, können Sie die vorhandenen Bluetooth-Einstellungen nicht löschen, sondern eine zusätzliche Ebene für das GPS-Modul hinzufügen, die die vorherigen Einstellungen überschreibt.



Die folgenden Begriffe werden fĂĽr die Arbeit mit DT verwendet:

DT Gerätebaum
DTB (* .dtb) Gerätebaum-Binärdatei
DTBO (* .dtbo) Gerätebaum-Binärdatei für Overlay
DTC Gerätebaum-Compiler
DTO Gerätebaum-Overlays
DTS (* .dts) Quelldatei für den Gerätebaum
FDT Abgeflachter Gerätebaum , Binärformat in einer .dtb- Datei


Die Hardwarekonfiguration wird in DT-Quelldateien (.dts) beschrieben und anschließend zur endgültigen Verwendung auf dem System in DT-Binärdateien (.dtb) kompiliert. Sie können auch das umgekehrte Verfahren zum Dekompilieren * ausführen. dtb bis *. dts ist ein Compiler / Decompiler auf dem System vorhanden. Die DTO-Implementierung umfasst das Aufteilen, Erstellen, Partitionieren und Ausführen von Gerätebäumen.



Linux-Gerätebaum-Bootloader







DT-Freigabe



DT ist in zwei Teile unterteilt:



  • Haupt-DT (Hauptgerätebaum) . Wird vom SoC-Entwickler bereitgestellt und ist die Standardeinstellung. In diesem Fall wird Allwinner vom Entwickler des Allwinner A64-Prozessors bereitgestellt.
  • Overlay DT (Overlay-Gerätebaum) . Die spezifische Konfiguration des Kartenherstellers umfasst die Peripheriegeräte, die sich auf der Karte befinden. Die Banana Pi BPI-M64-Karte wird von SinoVoip Co., bereitgestellt.


Das Thema Gerätebaum-Overlays unter Linux ist groß genug, um den Beitrag nicht in ein mehrbändiges Werk von Lenin zu verwandeln. Weitere Informationen finden Sie in der Veröffentlichung Arbeiten mit GPIO am Beispiel des Banana Pi BPI-M64. Teil 2. Gerätebaum-Overlays.



DTS-Formgebung fĂĽr SPI LCD ILI9341 2,4 Zoll



Die Tests wurden mit dem Image Armbian_20.08.2_Bananapim64_bionic_current_5.8.6_minimal.img.xz durchgefĂĽhrt , das auf Ubuntu 18.04.5 LTS (Bionic Beaver), Linux-Kernel 5.8.6 basiert. uname: Linux bananapim64 5.8.6-sunxi64 # 20.08.2 SMP Fr 4. September 08:52:31 MESZ 2020 aarch64 aarch64 aarch64 GNU / Linux.



Armbian verfügt bereits über einen Treiber für ILI9341. Sie müssen daher lediglich eine DTS-Gerätebeschreibungsdatei erstellen, diese im DTBO-Format kompilieren und den SBC neu starten. Wie das Sprichwort sagt: Einfach!



Um eine DTS-Datei zu generieren, mĂĽssen Sie den Link zu dem gpiochip herausfinden, in dem sich die SPI-Schnittstelle befindet. Ă–ffnen Sie dazu das Armbian-Terminal und fĂĽhren Sie den Befehl cat / sys / kernel / debug / gpio aus::



root@bananapim64:~# cat /sys/kernel/debug/gpio
gpiochip1: GPIOs 0-255, parent: platform/1c20800.pinctrl, 1c20800.pinctrl:
 gpio-120 (                    |bananapi-m64:red:pwr) out hi
 gpio-142 (                    |bananapi-m64:green:u) out lo
 gpio-143 (                    |bananapi-m64:blue:us) out lo
 gpio-166 (                    |cd                  ) in  lo ACTIVE LOW
 gpio-233 (                    |usb0_id_det         ) in  hi IRQ

gpiochip0: GPIOs 352-383, parent: platform/1f02c00.pinctrl, 1f02c00.pinctrl:
 gpio-354 (                    |reset               ) out hi ACTIVE LOW
 gpio-356 (                    |shutdown            ) out hi
 gpio-357 (                    |host-wakeup         ) in  lo
 gpio-358 (                    |device-wakeup       ) out hi

gpiochip2: GPIOs 510-511, parent: platform/axp20x-gpio, axp20x-gpio, can sleep:

      
      





Dieser Befehl listet alle verfügbaren GPIochip-Geräte und die betroffenen Pin-Nummern im Betriebssystem auf. Im vorherigen Abschnitt wurde für den SPI1-MOSI- Pin, den Namen des PD2-Pins, die Prozessor-Leg-Nummer bestimmt - 98. Basierend auf dem erhaltenen Ergebnis fällt die Nummer 98 auf den GPIO-Bereich 0-255, der dem entspricht gpiochip1- Chip : GPIOs 0-255, übergeordnet: Plattform / 1c20800. pinctrl, 1c20800.pinctrl . Um eine DTS-Datei zu generieren, müssen Sie außerdem den Link zu 1c20800.pinctrl herausfinden .



Erstellen wir eine DTS-Datei mit dem Namen: sun50i-a64-spi-ili9341-led-always-on.dts (basierend auf der dts-Datei fĂĽr die Orange Pi-PC -Karte ):



/dts-v1/;
/plugin/;

/ {
	compatible = "allwinner,sun8i-h3";	

  fragment@0 {
    target = <&pio>;
    __overlay__ {
      ili9341_pins: ili9341_pins {
        pins = "PD4", "PC0"; /*RESET, DC_RS*/
        function = "gpio_out", "gpio_out" ;
      };
    };
  };
  
  fragment@1 {
    target = <&spi1>;
    __overlay__ {
      status = "okay";      
      cs-gpios = <&pio 3 0 0>; /* PD0 */

      ili9341: ili9341@0 {
        compatible = "ilitek,ili9341";
        reg = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&ili9341_pins>;
        spi-max-frequency = <16000000>;
        rotate = <90>;
        bgr;
        fps = <25>;
        buswidth = <8>;
        reset-gpios = <&pio 3 4 1>; /*RESET=PD4*/
        dc-gpios = <&pio 2 0 0>; /*DC_RS=PC0*/
        /*led-gpios = <&pio 2 4 0>; LED=PC4*/
        debug = <0>;
      };
    };
  };
};

      
      





Betrachten Sie den Inhalt:



  • fragment@0 — /soc/pinctrl@1c20800, &pio. GPIO PD4", «PC0 gpio_out .
  • &pio — GPIO /soc/pinctrl@1c20800, . Armbian : /boot/dtb-5.8.6-sunxi64/allwinner/sun50i-a64-bananapi-m64.dtb.  DTS, : $ dtc -I dtb -O dts sun50i-a64-bananapi-m64.dtb -o sun50i-a64-bananapi-m64.dts
  • fragment@1 — /soc/spi@1c69000, &spi1.
  • status = „okay“ —   SPI1
  • cs-gpios = <&pio 3 0 0>; /* PD0 */ — CS SPI1.
  • <&pio 3 0 0>  — , &pio gpioiochip1 , P , PORT, D — 3 (: — 1), 0 3 , 0 PD0, 0 — , 0 (  0 — , 0; 1 — , 1).
  • compatible = „ilitek,ili9341“ —
  • pinctrl-0 = <&ili9341_pins> — fragment@0
  • spi-max-Frequenz = <16000000> - SPI-Schnittstellenfrequenz
  • drehen = <90> - Bildausrichtung, Drehung um 90 Grad, je nachdem, wie Sie das Display positionieren möchten.
  • fps = <25> - Bilder pro Sekunde
  • reset-gpios = <& pio 3 4 1> - RESET-Pin = PD4
  • dc-gpios = <& pio 2 0 0> - DC_RS pin = PC0


Platzieren wir die Datei im Pfad / boot / dtb / allwinner / overlay. Dann kompiliert die .dts-Datei zu .dtbo:



$ dtc -O dtb -o sun50i-a64-spi-ili9341-led-always-on.dtbo sun50i-a64-spi-ili9341-led-always-on.dts

      
      





Starten wir das Dienstprogramm zur Kartenkonfiguration: $ armbian-config. Gehen Sie zum MenĂĽ: System> Hardware und aktivieren Sie die Ebene (Overlay): spi-ili9341-led-always-on . Nach dem Neustart der Karte befindet sich die Linux-Konsole auf dem SPI-LCD-Bildschirm:



LCD SPI ILI9341 Bananen-Pi BPI-M64





Midnight Commander und Htop auf SPI LCD
Midnight Commander

LCD SPI ILI9341 Banana Pi BPI-M64



Htop

LCD SPI ILI9341 Banana Pi BPI-M64





Kontaktname

FĂĽr alle Allwinner-Prozessoren entspricht das Kontaktaufzeichnungsformat der Form cs-gpios = <& pio 3 0 0> , fĂĽr andere Prozessoren ist das Kontaktaufzeichnungsformat anders.



Lösung von Problemen



Wenn das Bild nicht auf dem LCD angezeigt wird, fĂĽhren Sie den folgenden Befehl aus: $ dmesg | grep -E 'ili9341'.



Die Konsole sollte die folgenden Informationen enthalten:



root@bananapim64:/boot/dtb-5.8.6-sunxi64/allwinner# dmesg | grep -E 'ili9341'
[    5.733989] fb_ili9341: module is from the staging directory, the quality is unknown, you have been warned.
[    5.734718] fb_ili9341 spi0.0: fbtft_property_value: buswidth = 8
[    5.734731] fb_ili9341 spi0.0: fbtft_property_value: debug = 0
[    5.734737] fb_ili9341 spi0.0: fbtft_property_value: rotate = 90
[    5.734744] fb_ili9341 spi0.0: fbtft_property_value: fps = 25
[    6.119287] graphics fb0: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB buffer memory, fps=25, spi0.0 at 16 MHz

      
      







Konfigurieren des SPI-LCD für die Xfce-Benutzeroberfläche und das X11-Subsystem



FĂĽr die Linux-Konsolenausgabe reicht es aus, eine DTS-Datei hinzuzufĂĽgen, und das war's, fĂĽr die Grafikausgabe reicht es jedoch nicht aus.



1) Installieren Sie XORG und XFCE:



$ sudo apt-get update
$ sudo apt-get install xorg
$ sudo apt-get install xfce4

      
      





2) Für den Allwinner-Prozessor müssen Sie zusätzlich den GPU-Treiber installieren - fbdev:



$ sudo apt-get install xserver-xorg-video-fbdev

      
      





3) Löschen Sie alle Konfigurationsdateien entlang des Pfads /etc/X11/xorg.conf.d (wenn keine Dateien vorhanden sind, dann großartig).



4) Erstellen Sie eine Konfigurationsdatei entlang des Pfads /usr/share/X11/xorg.conf.d / 99-fbdev. Conf und platzieren Sie das folgende Snippet darin:



Section "Device"  
  Identifier "myfb"
  Driver "fbdev"
  Option "fbdev" "/dev/fb0"
EndSection

      
      





Wobei / dev / fb0 das SPI-LCD-Gerät ist. Wenn ein HDMI-Panel an die Karte angeschlossen ist, gibt es möglicherweise zwei Geräte / dev / fb0 und / dev / fb1.



Wir starten die grafische Oberfläche mit dem Befehl: startx oder startxfe4:



LCD SPI ILI9341 Bananen-Pi BPI-M64





Wenn Sie direkt zur grafischen Oberfläche wechseln müssen, müssen Sie zusätzlich die Pakete installieren:



$ sudo apt-get remove tasksel
$ sudo apt-get remove xubuntu-desktop

      
      





Um den Start nur der Konsole zurĂĽckzugeben, mĂĽssen Sie den Autostart des Dienstes display-manager.service deaktivieren



$ sudo systemctl disable display-manager.service

      
      





Lösung von Problemen



Wenn die grafische Oberfläche nicht gestartet wird, müssen Sie zur Lösung der Probleme das X11-Ereignisprotokoll mit dem folgenden Befehl anzeigen:



$ cat /var/log/Xorg.0.log

      
      





Ergebnis



Für die Installation und Konfiguration von SPI LCD ist keine Kompilierung von Modulen aus dem Quellcode erforderlich, was die Installation erheblich vereinfacht. Die Hauptsache ist, die Kontakte sorgfältig freizulegen, und alles wird sofort funktionieren. Die gesetzten Ziele wurden erfolgreich erreicht.



RoadMap



  1. Anschließen eines größeren 3,5-Zoll-Displays am ILI9488-Controller.
  2. Konfigurieren der Touch-Oberfläche für Xfe.
  3. Anzeige nur einer grafischen Anwendung auf dem SPI-LCD mit dem X11-Subsystem aus dem Docker-Container (Lösung für öffentliche Terminals, Kioske, POS-Terminals).


Die Datei sun50i-a64-spi-ili9341- led-always-on.dts und andere Holz-Overlay-Dateien sind im Katalog GitHub Banana-Pi-BPI-M64 / dt-Overlays / verfĂĽgbar



All Articles