Hallo,
ich habe da ein merkwürdiges Phänomen festgestellt:
Wenn ich den TPIC (5 hintereinander) über SPI ansteuere, dann werden die
Daten einmal übernommen, aber ein anderes mal nicht.
Wenn ich nun folgendes mache,
1 | uint8_t Ones[5] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
|
2 | uint8_t Zeros[5] = {0x00, 0x00, 0x00, 0x00, 0x00};
|
3 |
|
4 | while (1)
|
5 | {
|
6 | SPI_Write(Ones);
|
7 | delay(500);
|
8 |
|
9 | SPI_Write(Zeros);
|
10 | delay(500);
|
11 | }
|
dann sollte der STM32 eigentlich die TPICS auf high und low schalten.
Macht er aber nicht: Es kommt einmal high und danach geht alles auf low,
wo es dann auch bleibt.
Wenn ich aber folgendes mache,
1 | while (1)
|
2 | {
|
3 | uint8_t Data[5]
|
4 |
|
5 | for (i = 0; i < 5; i++) data[i] = 0xFF;
|
6 | SPI_Write(Data);
|
7 | delay(500);
|
8 |
|
9 | for (i = 0; i < 5; i++) data[i] = 0x00;
|
10 | SPI_Write(Data);
|
11 | delay(500);
|
12 | }
|
dann wechselt er schön zwischen high und low - also genau so, wie es
sein sollte.
Meine Frage lautet nun: Wo liegt das Problem?
Ich vermute, dass es irgendwie mit dem Speicher zu tun haben muss. Die
SPI-Funktionen kann man wohl als Fehlerquelle ausschließen, würde ich
sagen.
Da ich aber neu bin beim STM32 (bzw. allgemein beim ARM), bin ich im
Moment etwas sprachlos.
Vielleicht kann mir ja jemand weiterhelfen.
Gruß Peter