LCD Controller S1D13781 über SPI mit STM32F407-DISC1

OP #7682939
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
}
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren