Forum: Mikrocontroller und Digitale Elektronik Chip Select nach jedem Byte


von Milton (Gast)


Lesenswert?

Hallo,

ich sehe es immer häufiger, dass bei manchen SPI Slaves (z. B. bei 
einigen ethernetbasierten Protokollchips) nach jedem Byte auf der SPI 
erwarten, dass man den CS setzt/rücksetzt.
Ist gerade beim Senden von vielen Daten nervig, da man das ganze quasi 
als ineffiziente for-Loop aufziehen muss.

Dass es gemacht werden muss, weil der Hersteller es vorschreibt und es 
sonst nicht funktioniert ist klar. Aber weiß jemand, warum das aus Sicht 
des Herstellers notwendig ist?

von B. W. (yesitsme)


Lesenswert?

Hast du mal das Datenblatt für solch einen Chip?

von MaWin (Gast)


Lesenswert?

CS nach irgendwann einmal loszulassen, zum Beispiel nach einem ganzen 
Datenpaket, ist sinnvoll. Damit werden die Transceiver neu 
synchronisiert. Falls der Empfänger zum Beispiel eine Taktflanke durch 
eine Störung nicht mitbekommen hat.

Dies nach jedem Byte zu tun, ist allerdings sehr ungewöhnlich.

von Peter D. (peda)


Lesenswert?

Milton schrieb:
> Aber weiß jemand, warum das aus Sicht
> des Herstellers notwendig ist?

Da Du den Chip nicht nennst, mußt Du den Hersteller fragen.
Die Hellseher sind grad in Urlaub.

von Milton (Gast)


Lesenswert?

Peter D. schrieb:
> Milton schrieb:
>
>> Aber weiß jemand, warum das aus Sicht
>> des Herstellers notwendig ist?
>
> Da Du den Chip nicht nennst, mußt Du den Hersteller fragen.
> Die Hellseher sind grad in Urlaub.

Beispielsweise der netX90.

von A. S. (Gast)


Lesenswert?

Milton schrieb:
> Beispielsweise der netX90.

Hast Du auch ein Beispiel, wo ein Datenblatt Deine These untermauert? 
Vielleicht sogar mit einem Link? Ich sehe das bei dem netX90 nicht.

von Rolf M. (rmagnus)


Lesenswert?

Milton schrieb:
> Beispielsweise der netX90.

Aha, "Kleinster Multiprotokoll SoC"…
Das ist kein SoC, sondern ein µC. Und das "Datenblatt" hat drei Seiten 
und ist eigentlich ein Werbe-Prospekt. Wo findet man denn da etwas, das 
man auch wirklich als Datenblatt bezeichnen kann?

von Andreas M. (amesser)


Lesenswert?

Milton schrieb:
> Peter D. schrieb:
>> Milton schrieb:
>>
>>> Aber weiß jemand, warum das aus Sicht
>>> des Herstellers notwendig ist?
>>
>> Da Du den Chip nicht nennst, mußt Du den Hersteller fragen.
>> Die Hellseher sind grad in Urlaub.
>
> Beispielsweise der netX90.

Das ist Unsinn. Der netX90 ist kein "Netzwerkcontroller" sondern ein SoC 
für industrielle Kommunikationsanwendungen. Die Kernaufgabe ist nicht 
das Versenden von Netzwerktelegrammen. (Kann er auch, aber dafür wohl 
etwas überdimensioniert) Das SPI Interface ist nicht optimal, aber 
mitnichten muss man nach jedem Byte das CS Signal loslassen, sondern 
genau das Gegenteil ist der Fall. Ich zitiere mal aus dem Ref-Manual:

| ... The chip-select signal must permanently remain active during
| an access sequence (an inactive chip-select will terminate a transfer).

Das übliche Interface zu dem Chip ist auch nicht SPI. Normalerweise 
implementiert man seine Applikation auf dem im netX90 integrierten 
Cortex-M4. (Er hat zwei, einen für die Applikation, einen für die 
Protokollfirmware - die kommt von uns)

Der Chip hat übrigens nicht nur zwei Cortex-M4 sondern noch 10 weitere 
Cores und zwei integrierte Ethernet Phys ich würde also nicht unbedingt 
von einem "µC" sprechen. Um genau zu sein ist es ein Software-Defined 
Switch mit für Industrieaufgaben ausgesuchten Peripherien.

Rolf M. schrieb:
> und ist eigentlich ein Werbe-Prospekt. Wo findet man denn da etwas, das
> man auch wirklich als Datenblatt bezeichnen kann?

https://kb.hilscher.com/pages/viewpage.action?pageId=112430702

: Bearbeitet durch User
von A. S. (Gast)


Lesenswert?

Milton schrieb:
> Ist gerade beim Senden von vielen Daten nervig, da man das ganze quasi
> als ineffiziente for-Loop aufziehen muss.

Hast Du denn schon mit einem solchen Chip gearbeitet? Oder war das eine 
rein theoretische Frage. Oder nimmst Du so einen Chip gerade in Betrieb.

von Rolf M. (rmagnus)


Lesenswert?

Andreas M. schrieb:
> Rolf M. schrieb:
>> und ist eigentlich ein Werbe-Prospekt. Wo findet man denn da etwas, das
>> man auch wirklich als Datenblatt bezeichnen kann?
>
> https://kb.hilscher.com/pages/viewpage.action?pageId=112430702

Danke.

von Fpgakuechle K. (Gast)


Lesenswert?

Milton schrieb:
> Aber weiß jemand, warum das aus Sicht
> des Herstellers notwendig ist?

Damit es auch mit 8 bit CPU/µC funktioniert?! SPI stammt aus dem Jahre 
1987.

>Ist gerade beim Senden von vielen Daten nervig, da man das ganze quasi
>als ineffiziente for-Loop aufziehen muss.

Aus Sicht eines Hardware-Entwicklers ist das beschriebene bit-banging an 
sich ineffektiv (aber flexibel). Besser ist es, dedizierte 
SPI-Master-Hardware zu verwenden, die das ganze auch noch per DMA an der 
CPU vorbei transferiert.

https://de.wikipedia.org/wiki/Bit-Banging


> https://kb.hilscher.com/pages/viewpage.action?pageId=112430702
Auf seite 139 hat es ein timing diagramm für transfers ohne CS-wackler.

von A. S. (Gast)


Lesenswert?

Fpgakuechle K. schrieb:
> Damit es auch mit 8 bit CPU/µC funktioniert?! SPI stammt aus dem Jahre
> 1987.

Vielleicht der Begriff. SPI als Protokoll ist mindestens seit den 60ern, 
zumindest seit es Schieberegister gibt. Und schon damals war es ohne 
CS-toggle.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Hängt oft vom Slave ab. Manche Slaves latchen mit der steigenden Flanke 
von /SS die Daten intern in die Register.

von A. S. (Gast)


Lesenswert?

Matthias S. schrieb:
> Hängt oft vom Slave ab. Manche Slaves latchen mit der steigenden Flanke
> von /SS die Daten intern in die Register.

Ja. Aber genau da spielt man ja alle Daten erstmal ein und Deselect 
dann.

Ein Device, dass jedes Byte mit einem Deselect abschließt, braucht 
filigrane andere Mechanismen zur Kompensation um z.B. Steuerkommandos 
und Daten zu unterscheiden, mehr als 8-Bit-Werte zu übertragen oder 
überhaupt gezielt daten zu lesen.

Mit durchgehendem CS können die ersten 1,2 oder mehr Bytes als 
Steuerkommandos, Leseadresse oder was immer interpretiert werden. Bei 
dauerndem CS gibt es kein erstes, zweites, ... Byte.

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.