Mehr als 2 SPI Chip Select?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich wollte mal fragen, ob es möglich ist mehr als 2 Chip Selects mit dem Pi zu benutzen und wenn ja wie? Ich habe nämlich mehrere Module, die ich (gleichzeitig) über SPI ansteuern möchte.
    Kann ich einen GPIO Pin einfach "missbrauchen"?

    LG
    mlt

  • ja, ich würde mit einem doppel Multiplexer 74HC4052
    http://www.nxp.com/documents/data_sheet/74HC_HCT4052.pdf
    die SPI und CLK vervielfachen, hier wären 4 möglich mit dem 2x 74HC4051 eben 8

    es gibt auch 16x
    http://www.nxp.com/documents/data_sheet/74HC_HCT4067.pdf

    welcher Kanal gilt wählt man binär mit den GPIO aus

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Ich habe mir mal so einen 74HC4052 bestellt. Nun wollte ich nochmal nachfragen, ob die Anschlüsse richtig sind:

    Code
    RPI         74HC4052  RPi
    (Ausgang)   2Y0  VCC  3V3
    (Ausgang)   2Y2  1Y2  (Ausgang)
    VCC         2Z   1Y1  (Ausgang)
    (Ausgang)   2Y3  1Z   VCC
    (Ausgang)   2Y1  1Y0  (Ausgang)
    GND         E    1Y3  (Ausgang)
    GND         VEE  S0   GPIO X
    GND         GND  S1   GPIO X

    Falls das stimmt, so stellt sich mir die Frage, warum die Ausgänge doppelt sind? Im Datenblatt steht ja, wenn z.B. S0 und S1 ein Low Signal bekommen => nY0 and nZ. Ist also nZ auch Low, so ist der Ausgang immer Null? Außerdem steht das "n" ja offensichtlich für 1 und 2, werden also 1Y0 und 2Y0 ein Ausgangssignal geben?

  • mach mal einen Schaltplan, bin zu müde um auf verbales zu philosophieren

    es kommt auch auf die Ansteuerung des slave an

    ob CE 0 oder 1 oder beide benutzt werden, ob es zusätzliche CS gibt.....

    ich kann das nicht für alle SPI pauschal beantworten.

    evtl. können SPI und Clk auch an alle gehen nur die CE0 CE1 CS müssten umgeschaltet werden.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (5. Oktober 2014 um 22:20)

  • das sind doch ZWEI 1aus4 Multiplexer

    die eine Gruppe heisst 1 die andere Gruppe 2 schau bitte genau hin.....

    und wir wollten ja SPI und CLK oder CE0 und CE1 multiplexen

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • ok, das bedeutet ich kann Gruppe 1 als CS und Gruppe 2 als CLK oder beide als CS?

    Und noch etwas: Ich kann ja für S0 und S1 GPIOs verwenden (und für Z0, Z1 am besten auch, um alle auf einmal an/abzuschalten)? Ich hatte erst gedacht, ich müsse den Multiplexer auch per SPI ansprechen, so wie etwa I2C Multiplexter mit I2C angesprochen werden.


  • Und noch etwas: Ich kann ja für S0 und S1 GPIOs verwenden (und für Z0, Z1 am besten auch, um alle auf einmal an/abzuschalten)? Ich hatte erst gedacht, ich müsse den Multiplexer auch per SPI ansprechen, so wie etwa I2C Multiplexter mit I2C angesprochen werden.

    für die Multiplexer benutzt du normale GPIO und stellst die Weichen VORHER so wie du sie brauchst

    ob du nun die CE0 oder CE1 oder die SPI und SCK multiplext kommt hat auf den Chip an der angesprochen wird, ich bin mal so frech und behaupte alle SCK und SPI out können an jeden Chip gelegt werden der Clock und SPI in haben will, welcher Chip nun angesprochen wird entscheiden ja CE0 oder CE1 und ggffs noch CS welche eh aus normalen GPIO gesetzt werden.

    Ich habe bis jetzt nur 3x SPI benutzt, 2x Display und 1x RFM12(b) aber noch nie am PI, egal jeder SPI wollte etwas andere select Signale, am Arduino, mal SS (slave select was wohl den CE0/1 entspricht) mal einfach nur CS aus einem Port, mal eine Kombinatin von allem.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (9. Oktober 2014 um 10:47)

  • eine letzte Frage stellt sich mir noch: Und zwar was passiert, wenn ich die Sinale der GPIOs ändere. Angenommen ich habe beide auf HIGH und damit bei nY0 ein Signal. Will ich jetzt bei nY3 ein Signal muss ich beide GPIOs auf LOW stellen. Falls ich S0 zu erst auf LOW stelle und danach S2, so erhalte ich doch für einen kurzen Augenblick bei nY1 eig Signal. Vor allem wenn ich die Y als Clock benutze könnte es doch Probleme geben, weil die flankengetriggert sind oder? Müsste ich dazu nicht E auch an einen GPIO setzen und vor dem Wechsel jedes mal auf HIGH setzen, GPIOs wechseln und dann wieder auf LOW(zumindest wenn S0 und S1 gewechselt werden)?

    Und noch etwas ist mir grade eingefallen: Sind nZ denn Ein oder Ausgänge? Denn in der Funktionen Tabelle stehen sie bei Channel on immer dabei.


  • eine letzte Frage stellt sich mir noch: Und zwar was passiert, wenn ich die Sinale der GPIOs ändere. ..... Vor allem wenn ich die Y als Clock benutze könnte es doch Probleme geben, weil die flankengetriggert sind oder? Müsste ich dazu nicht E auch an einen GPIO setzen und vor dem Wechsel jedes mal auf HIGH setzen, GPIOs wechseln und dann wieder auf LOW(zumindest wenn S0 und S1 gewechselt werden)?

    logisch, genau dazu ist E enable ! um zu bestimmen wann durchgeschaltet wird !

    Und noch etwas ist mir grade eingefallen: Sind nZ denn Ein oder Ausgänge? Denn in der Funktionen Tabelle stehen sie bei Channel on immer dabei.

    Das sind analog Schalter die können rein und raus

    also entweder von einem Eingang ein Signal auf einen der 4 Ausgänge zu legen, oder um ein Signal aus 4 auf 1 Eingang zu legen !

    zusätzliche 4 Ausgangs oder 4 Eingangssignale, dem Analogschalter ist die Signalrichtung egal !


    anders als bei normaler Logik, das macht es ja so schön einfach ! und diese Teile so vielseitig verwendbar. Somit kann auch ein GPIO entweder als IN oder OUT vervielfacht werden !

    OK bei den 4052 ist es gerade parig, man braucht 2 Adressen, einen Enable macht 3 GPIO um aus einem 4ten eben 4 zu machen, bei dem 8 zu 1 wirds interesanter, 3 Adressen, 1 enable macht 4 die zu 8 werden !

    aber alle Adressen können bei mehren Chips zusammengelegt werden, wer dann aktiv wird entscheidet Enable !

    Ergänzung,

    Der SPI Clock wird aber m.E. nur vor der Übertragung eingeschaltet, so das ein Timingproblem nicht auftreten sollte solange ich nur an den Weichen rumspiele.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (9. Oktober 2014 um 13:05)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!