Forum: Mikrocontroller und Digitale Elektronik LCD Controller S1D13781 über SPI mit STM32F407-DISC1


von Rahman U. (rahman_u)


Angehängte Dateien:

Lesenswert?

Hallo,
mein Problem ist ein kleiner jedoch grundlegender Teil eines größeren 
Projekts. Es geht darum, mit dem STM32F407-Disc1 über SPI mit dem 
LCD-Controller S1D13781 zu kommunizieren. Ich bin gleich zu Beginn 
gescheitert, d.h. ich kann zwar Daten wie Datenblatt des S1D13781 
beschrieben an den Controller senden, bekomme jedoch keine Antwort über 
die MISO-Leitung. Dieser bleibt durchgehend LOW. Danke im Voraus!

Verbindungen:

3,3V und GND für S1D13781 vom STM32-Disc gezogen

S1D13781  ->   STM32F407-DISC1

CLK       ->   CLK

MOSI      ->   MOSI

MISO      ->   MISO

CS        ->   beliebiger GPIO Output


Umgebung:

STM32CubeIDE  (SPI2 mit PB13, PB14 und PB15), der SPI und GPIO 
initialisieren sich von selbst durch "Generate Code", so dass ich da 
eher keine Probleme vermute.

Mein Funktionen zum Lesen von Registern (das Wichtigste):
1
uint32_t seReadReg16(uint32_t Index)
2
3
{
4
5
  uint32_t addr = Index |= 0x60800;  
6
7
8
// hier in dem Beispiel Index =0x02 zum Auslesen des Product Codes der 0x0050 zurückgeben soll (siehe Anhang)
9
10
  uint32_t value;
11
12
  Chip_Select(0);
13
14
  SET_ADDR(addr);
15
16
  value = GET_DATA();
17
18
  Chip_Select(1);
19
20
  return value;
21
22
}
23
24
void SET_ADDR(uint32_t addr)
25
26
{
27
28
  addr &= 0x00FFFFFF;
29
30
  addr |= 0xC0000000;
31
32
  uint8_t data[4];
33
34
  data[0] = (uint8_t)(addr >> 24);
35
36
  data[1] = (uint8_t)(addr >> 16);
37
38
  data[2] = (uint8_t)(addr >> 8);
39
40
  data[3] = (uint8_t)(addr);
41
42
  uint8_t dummy = 0;
43
44
  uint8_t received;
45
46
  HAL_SPI_TransmitReceive(&hspi2, data, &received, 4, HAL_MAX_DELAY);
47
48
  HAL_SPI_TransmitReceive(&hspi2, &dummy, &received, 1, HAL_MAX_DELAY);
49
50
}
51
52
uint16_t GET_DATA(void)
53
54
{
55
56
            uint32_t val;
57
58
      uint8_t received;
59
60
      uint8_t dummy = 0;
61
62
      HAL_SPI_TransmitReceive(&hspi2, &dummy, &received, 1, HAL_MAX_DELAY);
63
64
      val = (uint32_t) received;
65
66
67
      HAL_SPI_TransmitReceive(&hspi2, &dummy, &received, 1, HAL_MAX_DELAY);
68
69
      val |= (uint32_t) received << 8;
70
71
      return (uint16_t)val;
72
}

: Bearbeitet durch User
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.