Forum: Mikrocontroller und Digitale Elektronik 4 x SPI an einen Controller


von Achim Gayer (Gast)


Lesenswert?

Schau'n mer mal, ob jemand Bescheid weiß.

Möchte 4 Peripheriechips, die SPI können an einen Microcontroller
(PIC) ankoppeln.
Kann man natürlich über Bus machen.
Aber das wird zu langsam.

Deshalb Frage:
Kennt jemand einen Microcontroller (< 20 Euro), der mehrere SPI
Interfaces im Mastermode unterstützt ?

Oder kann ich digitale I/O vom PIC an SPI Peripherie hängen ?
Muss ich natürlich per Software die Bits kippen. Kann aber alle
4 Peripheriebausteine parallel ankoppeln.

Achim

von Manfred Glahe (Gast)


Lesenswert?

Hallo Achim,

bin mir nicht ganz sicher was Du genau meinst. Der PIC als Master
(MOSI)kann natürlich viele SPI Slave's gleichzeitig (paralell)
ansteuern. SCK und MOSI werden an alle Eingänge gelegt und mit einem
Portpin wird der CS\ aktiviert. Einlesen (MISO) geht natürlich nur
sequentiell.

MfG  Manfred Glahe

von Achim Gayer (Gast)


Lesenswert?

Eben um das parallele Einlesen geht es mir.
Jeder Peripheriebaustein kann so betrieben werden, dass er
ständig Daten bereitstellt. Jeder liefert 2000 bis 4000 Messwerte
pro Sekunde!

Ich will nicht alle 4 sequentiell durchtackern mit chipselect.
Das wird wahrscheinlich zu langsam. Selbst wenn es ginge kommt
man bei der dafür notwendigen Clockfrequenz in HF rein.

Ich denke da an 4 interrupt-gesteuerte SPI Treibersequenzen, die
unabhängig voneinander die Daten in den PIC reinpumpen.

von raoul4 (Gast)


Lesenswert?

hallo achim,
interessiert mich jetzt nur mal so. wofür brauchst du so viele
messwerte? was willst du machen?

mfg raoul4

von ERDI - Soft (Gast)


Lesenswert?

Das bringt dir doch nix. 4 mal SPI per Software zu realisieren ist
wesentlich langsamer als den CS umzuschalten.
Schließlich kannst du ja nicht 4 x SPI gleichzeitig auslesen. Dazu
bräuchtest du 4 Controller. Du wirst, egal wie, immer nur einen Chip
nach dem anderen ansprechen können, und da ist die Lösung mit CS (so
wie es eigentlich auch gedacht ist) wohl die beste. (Es sei denn, du
kennst nen µController, der wirkliches Multitasking macht.)

von Stefan Kleinwort (Gast)


Lesenswert?

Aslo ich sehe bei 4 * 4khz noch keine ernsthaften Timingprobleme, wenn
Du alle 4 an einen Bus hängst. Ich verwende SPI z.Zt. mit 2Mhz (an
einer NEC-CPU) und demnächst mit 8 Mhz.

Die SPI über I/O-Ports anzusteuern ist meiner Ansicht aber zu langsam,
bringt nur Nachteile gegenüber einer Buslösung.

Wenn Du trotzdem eine CPU mit 4 separaten SPI suchst, dann schau mal
den M16C an, der hat 5 UARTs, die meiner Erinnerung nach alle auch als
SPI arbeiten können.

Stefan

von Manfred Glahe (Gast)


Lesenswert?

@Achim

"Ich will nicht alle 4 sequentiell durchtackern mit chipselect."

Du hast leider über Deine SPI Quellen nicht sehr viel ausgesagt! Es
gibt z.B. die Möglichkeit alle Quellen synchron zu betreiben, wenn es
sich z.B. um gleiche Bausteine handelt wie z.B. 4 AD- Wandler. In
diesem Fall kann die Software SPI die Daten über den Pport eines
Controllers einlesen oder ausgeben (initialisieren der Bausteine usw.).
Diese Lösung habe ich in einem 8 Kanaligen/12Bit Datalogger/Oszi
eingesetzt und erreiche damit 400KHz/Kanal (ließe sich fast beliebig
beschleunigen).

MfG  Manfred Glahe

von Achim Gayer (Gast)


Lesenswert?

Es sind 4 gleiche Chips, die per SPI angesprochen werden und 24 bit (3
Bytes) Messdaten liefern.
Damit sie diese liefern, muss allerdings mind. 1 Command-Byte an diese
Chips rausgehen. Beim Auslesen der 3 Messdaten-Bytes reicht es, wenn
man weiter 'clocked' nachdem das LSB des jeweiligen Bytes abgerufen
wurde.

Heisst 400 KHz 400 Bit/sec ? Oder 400 Messwerte pro Sekunde ?
In meinem Fall müssten mindestens 2000 Messwerte pro Sekunde
reinlaufen.
Das heisst 1 Byte raus 3 Bytes rein für 4 Kanäle.
Also 16 bytes * 2000 = 32000 bytes pro Sekunde.
Das entspricht 256 KBit / sec.

von Manfred Glahe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Achim,

im Anhang zusätzlich eine weitere Steuerplatine mit dem HC11 Anschluß
für den Datalogger. Hier kannst du erkennen wie die 2 Byte
Initialisierung für die 4 DAC's 'erzeugt' werden und paralell an
alle weitergegeben werden (IC13A). Der SPI TAkt hat in dieser
Applikation für die ersten 4 BIT einen doppelt so hohen Takt um eine
synchronisierung von 12 auf 16 Bit zu erhalten zwischen AD und DA
Baustein.
Mit 400KHZ ist die Abtastrate (also 400K Meßwerte) gemeint. Die ADW's
sind hier nicht schneller ausgewählt worden weil dies Anwendung zur
Digitalisierung von Heuschreckengesang dient und das ist doppelt soviel
wie benötigt wird. Die Abtastrate hängt nur noch von der
Geschwindigkeit des eingesetzten µP's ab, Wandler gibt es bis 70MHZ
dafür.

Falls es Dir hilft, kann ich Dir auch den *.ass Teil zum HC11 noch
posten.

MfG  Manfred Glahe

von Peter D. (peda)


Lesenswert?

"Ich will nicht alle 4 sequentiell durchtackern mit chipselect.
Das wird wahrscheinlich zu langsam."

Aber genau das Gegenteil !!

Nur mit Hardware-SPI bist Du schnell. Du kannst ja nebenbei noch was
anderes machen, während das SPI rumschiebt.
Deshalb ist ja die Hardware da, um die CPU zu entlasten.


Mit Flanken-getriggerten Interrupts und Tot und Teufel hast Du soviel
Softwareaufwand, das kostet mindestens 10..100-fach mehr Rechenzeit.
Und mehrere Interrupts gleichzeitig ist ja besonders beim PIC sehr
kompliziert und fehlerträchtig.


Peter

von Mistral (Gast)


Lesenswert?

m16c62 hat 5 SPI

Gruss
Mistral

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.