SPI Telegramm senden / Empfangen

Gast #4893215
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?
Gast #4893218
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.
Gast #4893230
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).
#4893245
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).
#4893256
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.
Moderator (Firma: Titel) Persönliche Seite #4893258
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.