STM32 - Problem mit TPIC und SPI

Gast #4216915
Lesenswert?
• ▲
▼
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
#4217002
Lesenswert?
• ▲
▼
@ Peter (Gast)

>Wenn ich den TPIC

WELCHE? Da gibt es verdammt viele ICs, die mit TPIC anfangen!

>while (1)
>{
>SPI_Write(Ones);
>delay(500);

>SPI_Write(Zeros);
>delay(500);
>}

Grundfalsch. Wo wird das Chip Select angesteuert?

>Meine Frage lautet nun: Wo liegt das Problem?

Bei dir. Du missachtest die Netiquette. Poste mal einen Schaltplan 
und VOLLSTÄNDIGEN Code als Anhang.

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

Ich nicht.
#4217005
Lesenswert?
• ▲
▼
Peter schrieb:

> Die
> SPI-Funktionen kann man wohl als Fehlerquelle ausschließen, würde ich
> sagen.

Hast du die geschrieben?

Dann würde ich erst mal nichts ausschliessen.

Und wenn du sie nicht selbst geschrieben hast, dann frag dich mal woher 
die Funktion wissen soll, wie gross dein Datenarray ist. An dem was die 
Funktion bekommt, kann sie das nicht erkennen. Eine Funktion, die 
irgendwo ausgibt und als FUnktionsargument ein Array bekommt mit 
keinerlei Vorgaben woran die Funktion das Ende des Arrays erkennen kann, 
ist höchst ungewöhnlich. Da fingen bei mir sofort die Alarmglocken an zu 
leuten.
Gast #4217055
Lesenswert?
• ▲
▼
Falk B. schrieb:
> Grundfalsch. Wo wird das Chip Select angesteuert?

Karl H. schrieb:
> Und wenn du sie nicht selbst geschrieben hast, dann frag dich mal woher
> die Funktion wissen soll, wie gross dein Datenarray ist. An dem was die
> Funktion bekommt, kann sie das nicht erkennen.

Das ist doch nur symbolisch dargestellt, um die Unterschiede 
aufzuzeigen.
Einmal verwende ich zwei einmalig initialisierte Arrays. Und das andere 
Mal eben nur ein Array, der immer wieder neu geschrieben wird.

Chips Select und Datenlänge sind durchaus in den eigentlichen Funktionen 
vorhanden. Wobei bei den TPIC (was spuckt eigentlich Google aus bei 
TPIC?) 6b595 eh am Ende nur kurz ein Bitwackler benötigt wird.

Ich dachte, diese Informationen lassen erste Rückschlüsse zu. Da ich 
mich da wohl getäuscht habe, werde ich dann morgen mal den Hammer raus 
holen und die Dateien hochladen.

Dann aber keine Beschwerden es sei so viel zu Lesen.^^

Gruß, Peter
#4217071
Lesenswert?
• ▲
▼
@ Peter (Gast)

>Das ist doch nur symbolisch dargestellt, um die Unterschiede
>aufzuzeigen.

Was soll das? Mit solchem Käse kann NIEMAND etwas anfangen! Siehe 
Netiquette!!!

>Chips Select und Datenlänge sind durchaus in den eigentlichen Funktionen
>vorhanden. Wobei bei den TPIC (was spuckt eigentlich Google aus bei
>TPIC?) 6b595 eh am Ende nur kurz ein Bitwackler benötigt wird.

Na wenn das so ist, kannst du ja dein Problem spielend alleine finden.
Gast #4217473
Lesenswert?
• ▲
▼
JUCHEI, ich habe den Fehler gefunden.

Vielen Dank für die freundliche Unterstützung!

Wonko schrieb:
> Peter schrieb:
>> (was spuckt eigentlich Google aus bei TPIC?)
>
> TPIC - Turkish Petroleum International Company Ltd.

Soso, und was spuckt die Suchfunktion von mikrocontroller.net aus?

Falk B. schrieb:
> @ Peter (Gast)
>
>>Wenn ich den TPIC
>
> WELCHE? Da gibt es verdammt viele ICs, die mit TPIC anfangen!

Wenn ich einen Kaffee-Haag trinke, dann fragt mich auch keiner wieviel 
Koffein da drinnen ist.

Ein bischen mitdenken wird schon vorrausgesetzt.

Gruß Peter

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.