Forum: Mikrocontroller und Digitale Elektronik Einziger SPI Slave daueraktivieren?


von Elektroniker (Gast)


Lesenswert?

Hallo,

spricht was dagegen den einzigen SPI Slave dauerzuaktivieren?
Also low_activ_slave_select direkt auf die Masse zu legen?

Gruß

von Al3ko -. (al3ko)


Lesenswert?

Nein, spricht nichts dagegen.

Gruß,

: Bearbeitet durch User
von jo mei (Gast)


Lesenswert?

Al3ko -. schrieb:
> Nein, spricht nichts dagegen.

Wenn's nicht funktionieren braucht dann stimmt das.

Sonst kann sehr wohl was dagegen sprechen. Denn manche, wenn nicht
sogar viele Slaves, brauchen die CS Flanken damit sie wissen wann
es losgeht und wann es aufhört.

von g457 (Gast)


Lesenswert?

> spricht was dagegen den einzigen SPI Slave dauerzuaktivieren?

Das machen nicht alle Tschipps mit, einfach im Datenplatt nachlesen.

HTH

von Cyblord -. (cyblord)


Lesenswert?

Al3ko -. schrieb:
> Nein, spricht nichts dagegen.
>
> Gruß,

Doch natürlich kann es etwas dagegen sprechen. Viele SPI Slaves nutzen 
CS für die Synchronisation. Erwarten also z.B. vor einem neuen Kommando 
erstmal eine CS Flanke. CS dauerhaft aktiv geht hier nicht.
Kommt also stark auf den Slave an.

von Al3ko -. (al3ko)


Lesenswert?

jo mei schrieb:
> Denn manche, wenn nicht
> sogar viele Slaves, brauchen die CS Flanken damit sie wissen wann
> es losgeht und wann es aufhört.

Oh, danke für die Aufklärung. Dann nehme ich meine vorige Aussage 
natürlich zurück.

Gruß,

von jo mei (Gast)


Lesenswert?

Al3ko -. schrieb:
> Oh, danke für die Aufklärung.

Seit 11 Jahren hier angemeldet (mit mehr als 1000 Beiträgen)
und keine Ahnung wozu ein Chip Select gut sein soll?

von Al3ko -. (al3ko)


Lesenswert?

jo mei schrieb:
> Seit 11 Jahren hier angemeldet (mit mehr als 1000 Beiträgen)
> und keine Ahnung wozu ein Chip Select gut sein soll?
;)

von Elektroniker (Gast)


Lesenswert?

Verstehe. Die Synchronisation wäre ein Punkt.
Dann müsste der Slave aber auch angeben, wie weit auseinander
die SS Flanke und erste Datenflanke sein dürfen und der Master
darf das einhalten :)

Beim Master ist CS ein normaler IO Pin und nicht Teil der SPI Peripherie
wie CLK,MOSI,MISO. Die Zeitpunkte wann die Software CS setzt und ein 
Byte zum Transfer reinschiebt, sind mehr oder weniger losgekoppelt.
Auf der anderen Seite kann ein Master nicht n-Pins für CS vorhalten.

Gruß

von Cyblord -. (cyblord)


Lesenswert?

Elektroniker schrieb:
> Dann müsste der Slave aber auch angeben, wie weit auseinander
> die SS Flanke und erste Datenflanke sein dürfen und der Master
> darf das einhalten :)

Nö muss er nicht. Und ist auch nicht üblich.

> Beim Master ist CS ein normaler IO Pin und nicht Teil der SPI Peripherie
> wie CLK,MOSI,MISO. Die Zeitpunkte wann die Software CS setzt und ein
> Byte zum Transfer reinschiebt, sind mehr oder weniger losgekoppelt.

Die Zeit spielt auch keine Rolle sofern das setzen von CS jedesmal vor 
der Übertragung stattfindet und danach CS wieder gelöscht wird.

von Wolfgang (Gast)


Lesenswert?

Elektroniker schrieb:
> Beim Master ist CS ein normaler IO Pin und nicht Teil der SPI Peripherie
> wie CLK,MOSI,MISO. Die Zeitpunkte wann die Software CS setzt und ein
> Byte zum Transfer reinschiebt, sind mehr oder weniger losgekoppelt.

Nein, diw Software muss die Signale so erzeugen, dass es dem 
erforderlichen Timing für den/die Slaves entspricht.
CS und Transfer in nicht synchronisierte Tasks zu packen, wird kräftig 
in die Hose gehen.

von Elektroniker (Gast)


Lesenswert?

Ja, Wolfgang ich stimme Dir zu. Ich hatte vor mich hin laut überlegt.
Die FW auf dem Master muss die Timings einhalten.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Elektroniker schrieb:
> spricht was dagegen den einzigen SPI Slave dauerzuaktivieren?
Kommt auf den Slave drauf an.

Aber es ist bei SPI prinzipiell vorgesehen (und sinnvoll ist es 
allemal) den SS# zur Frame-Synchronisation zu verwenden.
Denn wenn der Slave dauernd aktiv ist, und auch nur 1 einziger Spike auf 
der Clockleitung auftritt (Stichwort EMV z.B. durch brachiale Blitze, 
brutzelnde Lichtschalter und Keineanhungwasweißichalles), dann läuft der 
Slave ab diesem Zeitpunkt evtl. um 1 Takt "versetzt" und macht völligen 
Mist.

Elektroniker schrieb:
> Dann müsste der Slave aber auch angeben, wie weit auseinander
> die SS Flanke und erste Datenflanke sein dürfen und der Master darf das
> einhalten :)
Ja, das steht im Datenblatt. Und der Master "darf" das nicht einhalten, 
sondern er "muss" es einhalten, denn sonst "könnte" es funkionieren oder 
auch nicht.

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

Es gibt SPI-Slaves, die synchronisieren auf das erste 1-Bit, z.B. 
MM5450.
Da reichen dann 2 Leitungen (SCK, MOSI), um ihn anzusteuern.
https://www.microchip.com/wwwproducts/en/MM5450

von A. S. (Gast)


Lesenswert?

Elektroniker schrieb:
> Auf der anderen Seite kann ein Master nicht n-Pins für CS vorhalten.

warum nicht? Wenn es nur ein Dutzend Slaves sind, reichen oft IO-Pins. 
Wenn es deutlich mehr sind, geht auch jede beliebige 1 aus n 
Dekodierung, ein Schieberegister oder ein Latch am Daten/Adressbus. Bei 
I2C ist meist eher Schluss.

Bei modernen komplexen Prozessoren gehören die CS mit zur Peripherie, so 
dass per DMA und Auftragspuffer ganze Speicherbereiche mit verschieden 
SPI-Devices ausgetauscht werden können. Bis hin zu Flash-Bausteinen, die 
wie internes Flash direkt ausführbaren Programmcode enthalten können.

von A. S. (Gast)


Lesenswert?

Peter D. schrieb:
> Es gibt SPI-Slaves, die synchronisieren auf das erste 1-Bit, z.B.
> MM5450.
> Da reichen dann 2 Leitungen (SCK, MOSI), um ihn anzusteuern.

Wobei das dann aber Exoten sind, da z.B. das erste Bit "verloren" ist 
und eine feste Anzahl an Bits notwendig ist. Das ist nichts, was man 
sich für z.B. einen Speicher wünscht.

Beitrag #6354164 wurde von einem Moderator gelöscht.
von Toby P. (Gast)


Lesenswert?

Elektroniker schrieb:
> spricht was dagegen den einzigen SPI Slave dauerzuaktivieren?

Kommt auf den Chip an. Alle die ich kenne (sind nicht sehr viele) kommen 
ohne CS aus. Die meisten synchronisieren auf den Takt per Timeout, 
andere über nen Bitwechsel auf MOSI wenn der Takt läuft. Es gibt auch 
welche da kannst du das aus den MISO Daten erkennen.

Mit CS kann man z.B. auch keine SPI Kette aufbauen, d.h wenn der Takt 
durch mehrere Chips läuft, oder du brauchst nen extra Optokoppler bei 
galvanischer Trennung.

Also Datenblatt lesen.

von Maxe (Gast)


Lesenswert?

Die SPI-Schnittstelle baut doch urspruenglich auf einem Schieberegister 
auf. Die Daten werden reingetaktet und der Wert bei fallender Flanke von 
CS aus dem Schieberegister gelesen/gelatcht/gesampelt.

von c-hater (Gast)


Lesenswert?

Elektroniker schrieb:

> spricht was dagegen den einzigen SPI Slave dauerzuaktivieren?
> Also low_activ_slave_select direkt auf die Masse zu legen?

Ja. Das "slave select" hat neben der offensichtlichen Funktion bezüglich 
der Busarbitrierung noch eine weitere: Den Datenaustausch auf 
Protokollebene zu synchronisieren. Es gibt gewisse Ausnahmen, die 
theoretisch ohne diese Synchronisation auskommen könnten, aber in der 
Praxis sorgt der erste Störglitch auf Taktleitung (woher auch immer 
eingestreut) für das ultimative Ende der Show (bis zum nächsten 
Power-Cycle).

Sprich: wer das versucht, muss sich seines Layouts, der Versorgung und 
der EM-Umgebung SEHR sicher sein, sonst fällt er jämmerlich auf die 
Schnauze...

von Toby P. (Gast)


Lesenswert?

c-hater schrieb:
> Sprich: wer das versucht, muss sich seines Layouts, der Versorgung und
> der EM-Umgebung SEHR sicher sein, sonst fällt er jämmerlich auf die
> Schnauze...

Einspruch, s. mein Posting weiter oven

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.