Forum: Mikrocontroller und Digitale Elektronik SPI Telegramm senden / Empfangen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
Wenn ein Telegramm über spi gesendet wird, muss das ganze Telegeram auf 
einmal gesendet werden: also die bytes nacheinander ohne Pause, oder am 
besten den Slave kurze Zeit geben, das er sicher dieses Byte empfangen 
und gespeichert hat, bevor das nächste Byte gesendet wird?

von Stephan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
das steht im Datenblatt des IC. SPI ist ja eigentlich ein 
Schieberegister. Ich wüsste nicht wozu da Pausen kommen sollten sofern 
sie nicht vom IC benötigt werden für zB. A/D Wandlung.

von Martin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ein Teleram besteht aus 10 Bytes. Der Master kann dann die 10 Bytes ohne 
Pausen senden, Die SPI Schnittstelle hat auch Fifo-Speicher und sie 
sendet 4 Bytes sofort. Die Spi-SChnittstelle des Slaves hat kein 
Fifo-Speicher und kann auch nicht sofort das Byte vom Spi Buffer holen 
(andere Interrupts haben höhere Priorität).

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Wenn ein Telegramm über spi gesendet wird, muss das ganze Telegeram auf
> einmal gesendet werden: also die bytes nacheinander ohne Pause, oder am
> besten den Slave kurze Zeit geben, das er sicher dieses Byte empfangen
> und gespeichert hat, bevor das nächste Byte gesendet wird?

Kommt schwerstens auf den Slave an -> Datenblatt. Wenn die Gegenstelle 
ein selbst programmierter µC ist dann brauct man öfters eine Pause. Die 
meisten Hardware SPI Slaves eher nicht.

Gibt übrigens auch Mischformen: Der ADS1298 von TI braucht bis 4 MHz SPI 
Takt keine Pause zwischen Kommando Bytes, darüber muss man kurz warten 
(maximal verträgt er 10 MHz IIRC).

von Martin (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Kommunikation ist zwischen zwei pics, dann muss der Master doch 
Pausen tun.
Danke.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Die Spi-SChnittstelle des Slaves hat kein
> Fifo-Speicher und kann auch nicht sofort das Byte vom Spi Buffer holen
> (andere Interrupts haben höhere Priorität).

Hat der Slave denn DMA? Damit wäre man dann auch fein raus.

Ansonsten: Pause zwischen Bytes oder langsamen SPI Takt verwenden.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Die Kommunikation ist zwischen zwei pics, dann muss der Master doch
> Pausen tun.
Dafür ist SPI mit seinen gekoppelten Schieberegistern und der daraus 
resultierenden unbedingten Synchronität zwischen Master und Slave ein 
extrem ungünstig gewähltes Interface.

Ich hätte das mit einer seriellen Schnitte gemacht...

Jim M. schrieb:
> Hat der Slave denn DMA? Damit wäre man dann auch fein raus.
Auch nicht, weil der Master vermutlich so designt ist, dass er im selben 
Telegramm schon wieder eine "Antwort" erwartet.

SPI funktioniert nur dann gut und schnell, wenn der Master seine 
Anforderung "jetzt" schickt und dafür gleichzeitig die Antwort auf die 
"vorherige" Anforderung bekommt.

So wie z.B. beim AD-Wandler AD7490: dort wird im selben SPI Transfer der 
nächste zu wandelnde Kanal gesendet und die Daten der vorigen 
Anforderung empfangen.

: Bearbeitet durch Moderator

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]
  • [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.