SPI Telegramm senden / Empfangen

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren