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
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
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.
hallo achim, interessiert mich jetzt nur mal so. wofür brauchst du so viele messwerte? was willst du machen? mfg raoul4
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.)
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
@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
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.
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
"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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.