C-Berry Touch C-Berry Touch

Mittlerweile läuft dieses tolle Ding auch auf dem Pi 2.

In­halts­ver­zeich­nis

1. Technische Daten
2.Testsoftware
3. Strukturelle Anpassungen für Java Native Interface
4. Programmquellen



Technische Daten

8,89 cm (3.5") TFT Touch-Display mit SPI-Adapterboard

• integrierter Grafikcontroller RA8870 (unterstützt das Zeichnen von einfachen geometrischen Elementen wie z.B. Kreis, Rechteck, Linie)
• Anschlussmöglichkeit für eigene Erweiterungen durch separaten Erweiterungs-Port

TFT Modul
TFT Pixel 320 x 240
Modulgröße (LxBxT) 76,9 x 63,9 x 3,5 mm
Sichtbarer Bereich 72,88 x 55,36 mm
Aktiver Bereich 70,08 x 52,56 mm
Pixelgröße 0,219 x 0,219 mm
LCD-Typ TFT Color 65k, High brightness backlight, 550 cd/m²

TFT Adapter
Adaptergröße (LxBxH) 40 x 40 x 10,1 mm
Konverter 74VHC595

Zur Verfügung stehen


Testsoftware

Voraussetzung für die Testprogramme ist eine installierte Version der bcm2835 Bibliothek von Mike McCauley. Seit der Version 1.46 ist diese auch voll auf dem RPi2 funktionsfähig.

bcm2835 wird zu den Programmen gelinkt. Der Kern der Bibliothek besteht aus einem einzelnen C-File und kann auch direkt als Source mit eingebunden werden (s.u.)

Die grafischen Ausgaben funktionierten auf Anhieb einwandfrei. Nur das Einlesen des Touch-Screens machte Probleme. Als Problematisch stellte sich der Aufruf der Funktion bcm2835_delayMicroseconds (Wartezeit in µs) mit Werten von einigen tausend µs heraus. Schaut man sich die Versionshistorie von bcm2835 an, stellt man fest, dass es hier eine Reihe von Anpassungen gab, die zu einer Inkompatibilität mit den Testprogrammen führte. Wird dieser Aufruf durch einen Aufruf von bcm2835_delay (Wartezeit in ms) mit entsprechend reduzierten Werten aufgerufen, klappt alles einwandfrei. bcm2835_delayMicroseconds wird auch nur in dem Touch-Beispiel benutzt, so dass der Effekt erklärlich ist.

In zum Download bereitstehendes Archiv mit Testsoftware befindet sich ein zusätzliches Verzeichnis tft_test Pi2, in dem die notwendigen Anpassungen vorgenommen wurden und damit auf dem RPi2 einwandfrei läuft. 


Strukturelle Anpassungen für Java Native Interface

Im Endeffekt möchte ich den C-Berry auch über Java ansteuern können. Hierzu ist eine Schnittstelle zu den nativen Funktionen notwendig (Java Native Interface, JNI). Für diese Aufgabe sind die mitgelieferten Treiberfunktionen leider nicht gut strukturiert. Zum Betrieb muss die Anwendungssoftware Aufrufe auf alle Schichten (bmc2385, TFT, RA8870) des Modells durchführen. Will man diese Struktur beibehalten, müsste man alle Schichten an Java anbinden. Das ist sehr aufwendig und man müsste viele Funktionen implementieren, die man nicht benötigt. Man könnte natürlich auch nur die Kern-Funktionen von bcm2835 in Java einbinden und die anderen Schichten in Java implementieren. Auch hier ist viel Aufwand zu betreiben.

Ich habe mich dafür entschieden entschieden, die wenigen Funktionen, die schichtenübergreifend erfolgen, durch entsprechende Wrapper-Funktionen in der nächst höheren Schicht zu ersetzen. Als Ergebnis muss nur die Schicht RA8870 in Java eingebunden werden. Dort stehen alle typischerweise benötigten high-level Funktionen zur Verfügung. Ebenfalls habe ich bcm2385 als Source eingebunden, so dass die Applikation, so dass die Testapplikationen ohne zusätzliche Mittel erstellt und ausgeführt werden können.

Testprogramme mit strukturell angepassten Treiber-Modulen.

Schichtenmodell

In dem Archiv mit der Testsoftware sind die angepassten Treiber in dem Verzeichnis URS_SW zu finden.


Programmquellen

Archiv zum Download

Aufbau: