STM32F: SPI "Halbduplex"

Gast #1521324
Hallo Zusammen,

leider finde ich keine Doku zu Std-Library 3.1 von STM - die einzige 
"Doku" ist ein Doxygen-Schrott in Form einer Windows-Hilfedatei, die 
einzig aus einer "Auflistung" besteht - ohne erklärende Texte- was mir 
in diesem Fall nicht weiterhilft.

Meine Frage:
In den mitgelieferten Beispielen wird SPI nur "Simplex" oder Vollduplex 
benutzt.
Mir geht es darum, von einem SPI-Slave (ENC28j60) Daten zu empfangen.
Muss ich dafür für jedes zu empfangende Byte auch eines aussenden (z.b. 
"0"), damit am der CLK-Leitung "gewackelt" wird, oder geht das anders ?
Eigentlich soll das ganze via DMA laufen.

Muchas Gracias für erhellende Antworten :-)
#1521495
ARM-Neuling schrieb:

> Mir geht es darum, von einem SPI-Slave (ENC28j60) Daten zu empfangen.
> Muss ich dafür für jedes zu empfangende Byte auch eines aussenden (z.b.
> "0"), damit am der CLK-Leitung "gewackelt" wird, oder geht das anders ?

Was SPI angeht musst du das, so arbeitet SPI aus Sicht des Masters. Wie 
es die Lib dazu hält weiss ich nicht, da ich die nicht verwende. Deren 
Code ist die ultimative Doku.

Edit: Reingesehen: SendData und ReceiveData der Lib sind nur triviale 
Wrapper um die entsprechenden Registerzugriffe, d.h. im Master gehört zu 
jedem ReceiveData ein vorheriges SendData. Dessen Daten sind ggf. 
schnuppe.

> Eigentlich soll das ganze via DMA laufen.

Dann benötigst du 2 DMA Kanäle für die Transfers, einen raus und einen 
rein. Unabhängig davon wie herum die Daten fliessen. Allerdings kannst 
du für beide Kanäle den gleichen Puffer verwenden oder den jeweils 
unproduktiv mitlaufenden Kanal auf nicht-inkrementierend stellen.

Achtung Falle: Wenn der sendende DMA-Kanal durch ist, sind noch nicht 
alle Bytes empfangen. Das ist der Grund, weshalb auch bei 
ausschliesslichem Senden ein DMA für den Empfang sinnvoll ist: Der 
Transfer ist erst dann durch, wenn das Empfangs-DMA durch ist, erst dann 
darf SS abgeschaltet werden. Einen Automatismus für's Abschalten von SS 
gibt es beim STM32 leider nicht.
#1521685
Es gab mal ein super PDF Dokument zur V2.0... leider finde ich die 
nichtmehr.. hat die Doku zur Lib noch irgendwer gesichert? Soweit ich 
bisser drübergestolpert bin, hat sich die Bibilothek nicht großartig 
verändert (ausgenommen CMSIS Kram)

Michael
Gast #1521710
Das Problem ist, die Library ist ohne Doku eigentlich nahezu wertlos - 
Wenn man eh jedesmal in den Quelltext gucken muss, der auch noch etwas 
unübersichtlich aufgrund der vielen #ifdef ist, man dort aber auch keine 
sinnvollen Kommentare findet.

Also muss man als Einsteiger erforschen, was denn da passiert, dazu muss 
man dann die Registerbelegung kennen oder nachschlagen... Und dann kann 
mans auch gleich komlett selbst schreiben.
Dann ist wenigstens der Lernfaktor höher :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.