Die DOG-M Display Serie von Electronic Assembly sind sogenannte Display-on-Glass LCD-Displays die sehr kompakt und preiswert sind. Hier folgt jetzt ein Beispiel wie man diese an der Cortex-CPU von ST STM32F103RB betreiben kann. Ich verwende das EA DOG-M162 Display mit 2 Zeilen a 16 Character oder auch das DOG-M163 mit drei Zeilen. Das nachfolgende Bild zeigt das Display auf einem Experimentierboard als 2-zeiliges 162er Display oder als 3-zeiliges 163er Display:
Die meisten CPUs werden mit 3.3V betrieben - daher wird hier auch nur darauf eingegangen wie man diese Displays unter 3.3V betreibt und programmiert. Zunächst muss man wissen, dass das Display bei unterschiedlichen Betriebsspannungen unterschiedlich initialisiert werden muss, sonst schaltet sich die integrierte Ladungspumpe nicht ein und das Display bleibt dunkel.
Hier kommt das wichtigste - die Initialisierungssequenz des DOGM 162/163 für SPI Mode bei 3.3V:
0x39 0x1C 0x55 0x6D 0x74 0x38 0x04 0x01 0x06
Für die Initialisierung des SPI Busses benötigt man ebenfalls umfangreiche Einstellungen und es bedarf auch zusätzlicher Funtionen wenn man mehrere SPI-Devices auf demselben Bus betreiben will.
Die Programmierung der SPI1 Clock erfolgt durch den folgenden Befehl:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC| RCC_APB2Periph_SPI1, ENABLE);
Im Beipielprogramm wird dies richtig programmiert.
Entwickelt und getestet habe ich das Programm auf dem STM32 Olimexino Board von Olimex.
Der Anschluss an den Prozessor erfolgt nach folgendem Ausschnitt aus dem Datenblatt des Displays:
Der Anschluss an das Olimexino STM32-Board erfolgt über die SPI1 Schnittstelle und ist wie folgt:
* SPI Connections STM32F103 DOG-M Connections
* D6 : PA8 CS nc
* xD10 : PA4 SPI1 NSS RS Pin 39 yellow
* xD11 : PA7 MOSI1 SI Pin 28 white
* D12 : PA6 MISO1 nc - Display data cannot be read back
* xD13 : PA5 SCK CLK Pin 29 blue
Unter dem folgenden Link findet sich ein Beispielprogramm sowie eine DOGM Library für den STM32 Prozessor. Eigentlich einfach zu benutzen - man benötigt nur wenige Funktionen:
dogm_display_string(char *string) um einen Text auszugeben und
void dogm_cursor( uint8_t row, uint8_t column ) um vorher den Cursor an die richtige Stelle zu setzen.