www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32F: SPI "Halbduplex"


Autor: ARM-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: ARM-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klasse Antwort !
Super, vielen Dank, das hilft mir erstmal weiter.

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fragt sich nur ob da mehr drin stand, oder ob das der gleiche Kram nur 
mit anderem Fileformat war.

Autor: ARM-Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ARM-Neuling schrieb:

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

Willkommen im Club!

Autor: Michael B. (bubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in dem V2.0 PDF war es eigentlich wirklich gut beschrieben, was welches 
Flag macht.. sogar mit kurz erläuterten Beispielen... ärgert mich gerade 
das ich das ncihtmehr finde

Autor: Michael B. (bubi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habs gefunden :)
Im Firmwarearchive von 2.0.. :) Warum es so eine Doku nicht auch für 3.0 
gibt :( Glaub aber die ist zum großteil kompatibel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.