Forum: Mikrocontroller und Digitale Elektronik EA DOGS102-6 Display zeigt nichts an


von Torge (Gast)


Lesenswert?

Moin Moin,

ich versuche das Display DOGS102-6 von EA mit einem Tiva C Series uC 
(TM4C123GH6PM) zum laufen zu bekommen, es wird jedoch absolut nichts auf 
dem Bildschirm angezeigt.
Das Display ist wie im Datenblatt beschrieben mit drei 1uF Kondensatoren 
angeschlossen und bekommt eine Versorgungsspannung von 3,3V. SDA, SCK 
und CS0 sind korrekt an die SPI-Pins des Tiva angeschlossen und CD und 
RST an frei gewählte GPIO-Pins.
Die Initialisierung geschieht gemäß dem Beispiel aus dem Datenblatt und 
es soll oben links ein 4*4 Kästchen dargestellt werden.
Der Tiva ist mit SPI-Mode 3 konfiguriert und schickt die gesamten Daten 
(mit korrektem Takt und CD-Signal) richtig an das Display, wurde mit 
Oszi überprüft und es wird dennoch nichts angezeigt.

Meine Frage:
Wieso wird nichts angezeigt? Bzw. habe ich Irgendetwas übersehen?

In der Hoffnung auf schnelle Hilfe
Torge


Hier der verwendete Code:
1
#include "TM4C123GH6PM.h"
2
3
void cmd(unsigned char cmd) {
4
  //CD low setzen für CMD-Befehl
5
  GPIO_PORTA_DATA_R = 0x00;
6
7
  //Befehl senden
8
  while(!(SSI0_SR_R & 0x01));
9
  SSI0_DR_R = cmd;
10
}
11
12
void data(unsigned char data) {
13
  //CD high setzen für Daten
14
  GPIO_PORTA_DATA_R = 0x10;
15
16
  //Daten senden
17
  while(!(SSI0_SR_R & 0x01));
18
  SSI0_DR_R = data;
19
}
20
21
void main(void) {
22
  int i;
23
24
  //Einschalten
25
  SYSCTL_RCGCSSI_R |= 0x00000001;
26
  SYSCTL_RCGCGPIO_R |= 0x00000001;
27
28
  //Alternative Funktion (SPI)
29
  GPIO_PORTA_AFSEL_R = 0x0000002C;
30
  GPIO_PORTA_PCTL_R = 0x00202200;
31
32
  //Pin Konfiguration
33
  GPIO_PORTA_DEN_R = 0x0000007C;  //Digital Pin
34
  GPIO_PORTA_DIR_R = 0x00000050;  //Output Pin
35
36
  //SPI Konfiguration
37
  SSI0_CR1_R = 0x00000000;  //Ausschalten + Master
38
  SSI0_CC_R = 0x00000000;    //Systemtakt (16MHz)
39
  SSI0_CPSR_R = 0x00000002;  //SPI-Takt (8MHz)
40
  SSI0_CR0_R = 0x000000C7;  //SPI-Mode (3) + Datenlänge (8 Bits)
41
  SSI0_CR1_R = 0x00000002;  //Einschalten
42
43
  //Display Power-Up
44
  GPIO_PORTA_DATA_R = 0x00;  //Reset 0
45
  for(i=0;i<16000;i++);    //1ms warten
46
  GPIO_PORTA_DATA_R = 0x40;  //Reset 1
47
  for(i=0;i<80000;i++);    //5ms warten
48
49
  //Display Konfiguration
50
  cmd(0x40);
51
  cmd(0xA1);
52
  cmd(0xC0);
53
  cmd(0xA4);
54
  cmd(0xA6);
55
  cmd(0xA2);
56
  cmd(0x2F);
57
  cmd(0x27);
58
  cmd(0x81);
59
  cmd(0x10);
60
  cmd(0xFA);
61
  cmd(0x90);
62
  cmd(0xAF);
63
64
  //Testkästchen 4*4 oben links
65
  cmd(0x00);
66
  cmd(0x10);
67
  data(0x0F);
68
  cmd(0x01);
69
  cmd(0x10);
70
  data(0x0F);
71
  cmd(0x02);
72
  cmd(0x10);
73
  data(0x0F);
74
  cmd(0x03);
75
  cmd(0x10);
76
  data(0x0F);
77
  cmd(0xA4);
78
79
  while(1);
80
}

von holger (Gast)


Lesenswert?

void cmd(unsigned char cmd) {
  //CD low setzen für CMD-Befehl
  GPIO_PORTA_DATA_R = 0x00;

Du ziehst hier auch die Reset Leitung mit auf 0.
Bei data() auch.

von Torge (Gast)


Lesenswert?

Da sieht man den Wald vor lauter Bäumen nicht...
Muss dann natürlich
  //CD low setzen für CMD-Befehl
  GPIO_PORTA_DATA_R = 0x40;
und
  //CD high setzen für Daten
  GPIO_PORTA_DATA_R = 0x50;
sein.

Werde ich ausprobieren, vielen Dank dafür!

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.