Forum: Mikrocontroller und Digitale Elektronik EA-DOGM 3.3V mit SPI funktioniert nicht


von Switcher (Gast)


Angehängte Dateien:

Lesenswert?

Ich versuche bisher vergeblich, ein EA-DOGM-Display an einem STM32 zum 
laufen zu bringen. Das Display ist ein DOGM162W. Angeschlossen habe ich 
es via SPI, so wie im Attachment gezeigt. Ursprünglich hatte ich R/W auf 
H, habe es jetzt aber versuchsweise fix auf L verdrahtet.

Die SPI-Signale sehen ok aus (siehe Bildschirmphoto vom Oszi, hier 
Ausgabe von 0x38), d.h. die Ansteuerung funktioniert soweit ich das 
Überblicke korrekt.

Als Initialisierungssequenzen habe ich bereits alles mögliche 
ausprobiert (die aus der EA-Dokumentation, die aus dem SZ7036 
Datenblatt, und einige hier aus dem Forum).

Die Ansteuerung lief ursprünglich Tabellengesteuert, gegenwärtig 
verwende ich um Fehler zu vermeiden diesen langsamen und langen Code:
1
void my_lcd_init162(void)
2
{  
3
  HAL_Delay(200);
4
  HAL_GPIO_WritePin(LCD_RESET_GPIO_Port, LCD_RESET_Pin, GPIO_PIN_RESET);
5
  HAL_Delay(200);
6
  HAL_GPIO_WritePin(LCD_RESET_GPIO_Port, LCD_RESET_Pin, GPIO_PIN_SET);
7
  HAL_Delay(200);  
8
  my_lcd_write_command(0x38);
9
  HAL_Delay(2);
10
  my_lcd_write_command(0x39);
11
  HAL_Delay(2);
12
  my_lcd_write_command(0x14);
13
  HAL_Delay(2);
14
  my_lcd_write_command(0x55);
15
  HAL_Delay(2);
16
  my_lcd_write_command(0x6D);
17
  HAL_Delay(200);
18
  my_lcd_write_command(0x78);
19
  HAL_Delay(2);
20
  my_lcd_write_command(0x38);
21
  HAL_Delay(2);
22
  my_lcd_write_command(0x0f);
23
  HAL_Delay(2);
24
  my_lcd_write_command(0x01);
25
  HAL_Delay(2);
26
  my_lcd_write_command(0x06);
27
  HAL_Delay(2);  
28
}

An der Ladepumpen-Pins messe ich Spannungen um die 150mV, und sehe keine 
Anzeichen, dass sie laufen würde. Es liegt also nicht einfach daran, 
dass ich die ausgegebenen Zeichen nicht sehe.

Bin kurz vor dem Aufgeben, aber vielleicht hat jemand noch einen Tipp 
zur Fehlereingrenzung?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ich poste dir mal meine Initsequenz - und ja, die funktioniert, ist aber 
für AVR:
1
// send a command to the DOGM162 
2
// its just like sending data but with the RS Pin low. 
3
void lcd_command(const uint8_t n) {
4
   LCD_PORT &= ~(1<<LCDRS);    // command registers
5
   lcd_out(n);
6
   LCD_PORT |= (1<<LCDRS);    // deselect command registers  
7
   _delay_ms(2);
8
}
9
// now init the LCD with SPI bitbanging
10
void lcd_init(void) {
11
   LCD_PORT &= ~(1<<LCDCS);  // select LCD
12
  _delay_us(5);
13
   LCD_PORT |= (1<<LCDCS);    // deselect LCD
14
   _delay_us(5);
15
//   theFlags.doubleWidth = FALSE;
16
   lcd_command(0x39);     // Function Set
17
   _delay_ms(100);
18
   lcd_command(0x39);     // Function Set again
19
   _delay_ms(50);
20
   lcd_command(0x1C);     // Bias
21
   lcd_command(0x51);    // PWR
22
   lcd_command(0x6A);    // Follower
23
   _delay_ms(100);              // wait for power to come up
24
   lcd_command(0x7C);    // Contrast
25
   lcd_command(0x38);           // Function Set
26
   lcd_command(0x0C);    // On, no cursor
27
//   lcd_command(0x01);    // clr LCD  
28
   lcd_command(0x06);    // Entry mode set
29
   _delay_ms(20);    // wait
30
}

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Da fehlt VIN -> VCC.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Peter D. schrieb:
> Da fehlt VIN -> VCC.

Jo, ich wollte auch gerade noch hinzufügen, die Beschaltung ist nach 
Datenblatt '3,3V SPI' mit den beiden Kondensatoren, sonst klappt nix.

von Werner (Gast)


Lesenswert?

Wo sind die 3,3V am Vin?

von Switcher (Gast)


Lesenswert?

Danke, das war das Problem! Jetzt läuft das Ding!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.