Benötigt aber nicht vorhanden: 8xSPI, was tun?

Gast #6797791
Lesenswert?

Huhu,
angenommen ich hab 8 Sensoren welche über eine SPI Schnittstelle 
verfügen und ich möchte einen STM32 Mx Cortex verwenden.

Auf der Webseite von ST finde ich nur STM32 mit maximal 6xSPI.

Besagter, geheimer Sensor, verfügt nicht über eine "Chip Select"-Leitung 
sondern nur SCLK und MISO.
Ebenfalls unterstützt dieser Sensor kein "Daisy Chaining".

CLK beträgt ca. 10MHz.

Was tun?
#6797795
Lesenswert?

Der Clock kann 10MHz betragen, oder muss ?

Man kann bei langsameren Peripherien auch pins im Bitbang Mode 
betreiben. Einfach das Pin Timing, welche in der Geschwindigkeit nach 
unten nicht begrenzt ist nachbilden. Ausser eben man benoetige die 
Geschwindigkeit fuer die Daten des Peripherals.
Alternativ : Einen Mux an die drei Pins MISO, MOSI und Clock. Dabei aber 
das Ruhepotential des Clocks pro Peripheral beachten.
Gast #6797862
Lesenswert?

Danke für die Rückmeldungen :) Ja es ist in der Tat ein hypothetisches 
Problem. Mich interessierte ob Ihr, also die Profis, das ähnlich lösen 
würdet wie ich als Laie oder ob Ihr mit speziellen Tricks/ICs daher 
kommt.

Den Multiplexer auf MISO empfinde ich als schöne Lösung.

Die 10MHz waren ein relativ hoher SCLK der mir schon begegnet ist und es 
wäre im Idealfall dann natürlich auch wünschenswert diesen voll 
auszuschöpfen aber ggf. muss man dann runter gehen :)

Ich hab mal noch bei Microchip geschaut die haben sogar bis 12xSPI im 
Angebot :)
Gast #6797874
Lesenswert?

SPI schrieb:
> Die 10MHz waren ein relativ hoher SCLK der mir schon begegnet ist und es
> wäre im Idealfall dann natürlich auch wünschenswert diesen voll
> auszuschöpfen

Wie willst Du denn 10MB ne Sekunde sinnvoll verarbeiten?

Bei soviel Sensoren und ohne csl ist paralleles bitbanging das 
einfachste. Din ist einfach einen Port einlesen und die 8 Bit auf 8 Byte 
verteilen.

Ausgerollt sind das ein paar Takte pro empfangenem sensorbit. Und das 
Timing ist eh völlig unkritisch.
Moderator (Firma: Titel) Persönliche Seite #6797915
Lesenswert?

SPI schrieb:
> Besagter, geheimer Sensor, verfügt nicht über eine "Chip Select"-Leitung
> sondern nur SCLK und MISO.
Das ist üblicherweise eine schlechte Idee.

Wie erkennt besagter geheimer Sensor dann den Telegramm-Anfang? Wie 
machst du da den Frame-Sync? Wwie erkennt dein Sensor, dass er mit dem 
nächsten Takt das erste Bit des Datentelegramms schicken soll?

Oder ist dann nach dem ersten ESD-Spike auf der Taktleitung fürderhin 
den Rest vom Tag alles um 1 Bit versetzt?
Gast #6797992
Lesenswert?

SPI schrieb:
> angenommen ich hab 8 Sensoren welche über eine SPI Schnittstelle
> verfügen und ich möchte einen STM32 Mx Cortex verwenden.
>
> Auf der Webseite von ST finde ich nur STM32 mit maximal 6xSPI.

Du weißt, dass SPI ein Bus ist, auf dem mehrere Sensoren sitzen können?
Es ist normalerwiese nicht erforderlich, zur Kommunikation mit 8 
Sensoren über SPI auch 8 SPI Schnittstellen vorzuhalten.
Gast #6798004
Lesenswert?

Lothar M. schrieb:
> Wie erkennt besagter geheimer Sensor dann den Telegramm-Anfang? Wie
> machst du da den Frame-Sync? Wwie erkennt dein Sensor, dass er mit dem
> nächsten Takt das erste Bit des Datentelegramms schicken soll?

Dieses Spielchen ist doch schon vom allseits beliebten HX711 bekannt, es 
gibt auch noch weitere Sensoren, die auf CS verzichten. Finde ich 
persönlich auch nicht toll, gibt es aber trotzdem.

Holziges Protokoll beim HX711, die Anzahl der CLKs steuert den Chip.
Gast #6798075
Lesenswert?

Paralleles Bitbanging wäre in diesem Fall tatsächlich am Einfachsten.

Wenn nicht genug Pins zur Verfügung stehen, könnte man aber den CS immer 
noch durch ein UND-Gatter hinzufügen (ist das die Lösung mit dem 
erwähnten 47xx?).

Auch wenn der Sensor so oder so eine miese Wahl ist, wie Lothar schon 
erläutert hat. Hat das Ding wenigstens einen Time-Out, sodaß er nach 
kurzer Wartezeit wieder "im Takt" liegt?
Moderator (Firma: Titel) Persönliche Seite #6798082
Lesenswert?

H. schrieb:
> Dieses Spielchen ist doch schon vom allseits beliebten HX711 bekannt
Der behauptet von sich aber auch nicht, SPI-konform zu sein. Und er 
teilt ja wenigstens seinen eigenen Frame-Sync (= nächster Takt liefert 
das erste Bit) über eine fallende Flanke am Dout mit.

Wühlhase schrieb:
> Hat das Ding wenigstens einen Time-Out, sodaß er nach
> kurzer Wartezeit wieder "im Takt" liegt?
Oder kann man ihn mit einem MagicPattern/Startmuster synchronisieren?
Gast #6798162
Lesenswert?

Lothar M. schrieb:
> Allerdings hat ein richtiger SPI-Teilnehmer eben auch die dafür nötigen
> SlaveSelect-Leitungen, um einen der Slaves auszuwählen und das Telegramm
> zu synchronisieren.

Dafür braucht man aber nicht für jeden Teilnehmer eine eigene 
SPI-Schnittstelle, sondern es reicht ein eigener Chip-Select Pin 
(beliebiger GPIO)
(Firma: Schweigstill IT) Persönliche Seite #6798173
Lesenswert?

Oliver S. schrieb:
> Eigene CPU mit ARM-Core und ausreichend vielen SPIs backen.

Für viele Fälle interessant ist in solchen Fällen auch ein FPGA mit 
Softcore, z.B. ein Spartan/Artix/Virtex mit Microblaze. Oder auch gleich 
ein Zynq. Wenn man dann auch noch nicht einfach separate normale 
SPI-Blöcke instantiiert, sondern sich den passendem 100*SPI-Block 
zusammenklöppelt, kann man dank identischer Geschwindigkeiten auch noch 
alle in einer gemeinsamen Treiberinstanz bearbeiten statt 100 separate 
Interrupts zu verarbeiten.
Moderator (Firma: Titel) Persönliche Seite #6798175
Lesenswert?

Wolfgang schrieb:
> Dafür braucht man aber nicht für jeden Teilnehmer eine eigene
> SPI-Schnittstelle, sondern es reicht ein eigener Chip-Select Pin
Logisch, dafür ist der didizierte SS# Pin pro Slvae ja da.

Und letztlich muss man dann nur noch ausrechnen, ob die Übertragungsrate 
(samt SS# Umschaltung) hoch genug ist, um nacheinander alle Slaves in 
der nötigen Zeit einzulesen.

BTW: wenn ich da "8 Sensoren" höre, dann würde ich mir auch mal Gedanken 
um die räumliche Ausdehnung des gesamten Konstrukts und der Auswahl 
einer geeigneten Baudrate samt Leitungsterminierung machen...
Gast #6798329
Lesenswert?

Also rein auf das SPI nur mit CLK und MISO und das x 8 bezogen, wenn man 
jetzt einen anderen controller z.B. den rp2040 nimmt, sollte es doch mit 
einem eigenen PIO Programm theoretisch möglich sein Anzahl gpios / 2 
solcher Schnittstellen zu betreiben, solange man halt das Verhalten der 
slaves berücksichtigt timeout etc. Ohne Gewähr, hab erst vor ein paar 
Tagen angefangen mich mit den pi picos zu beschäftigen und soll auch 
keine Werbung für die sein.
Gast #6798565
Lesenswert?

SPI schrieb:

> Besagter, geheimer Sensor, verfügt nicht über eine "Chip Select"-Leitung
> sondern nur SCLK und MISO.
> Ebenfalls unterstützt dieser Sensor kein "Daisy Chaining".
>
> CLK beträgt ca. 10MHz.
>
> Was tun?

a) Den verfickten geheimen Sensor durch etwas tatsächlich Brauchbares 
ersetzen.
...
y) Den verfickten geheimen Sensor durch etwas tatsächlich Brauchbares 
ersetzen.
z) Den STM32 durch etwas etwas besser für die Zusammenarbeit mit so 
einer Ansammlung schwachsinnigster Sensoren geeignetes ersetzen. Z.B. 
ein FPGA. Als Multiplexer. Der STM32 redet dann bloß noch mit dem FPGA, 
der sich als standargerechte Versammlung von SPI-Devices präsentiert, 
mit 1xMOSI, 1xMISO und Nx/CS.

Also ich würde alles lieber machen als z)...
Moderator (Firma: Titel) Persönliche Seite #6798718
Lesenswert?

c-hater schrieb:
> Also ich würde alles lieber machen als z)...
z) wäre meine erste Wahl... ;-)
Ein kleiner MachXO2/3 macht locker die obigen 8 VSSI-Busse ("Very 
Specific Serial Interface") samt Timeout und/oder MagicPattern.
Und zum µC hin kann das FPGA ja ganz einfach über 1 einzigen 
artgerechten SPI mit allen üblichen Steuerleitungen angebunden werden.
Morgen Abend ist das Design fertig.
Gast #6798820
Lesenswert?

SPI schrieb:
> Danke für die Rückmeldungen :) Ja es ist in der Tat ein hypothetisches
> Problem. Mich interessierte ob Ihr, also die Profis, das ähnlich lösen
> würdet wie ich als Laie oder ob Ihr mit speziellen Tricks/ICs daher
> kommt.

So so, "ein hypothetisches Problem" also.
Also ob ich Langeweile hätte, um mich als Pausenclown vorführen zu 
lassen ...

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