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 | }
|