40x SPI-Chipselect?

Gast #4015038
Lesenswert?

Hallo,

für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige, 
verwende ich 40! ICs für PT100 mit SPI-Schnittstelle. Es ist sowohl 
Schreib- als auch Lesezugriff nötig.

Wie kann ich am besten die 40x Chip Select auf nur einen einzigen 
wandeln?

Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO 
durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes 
Chipselect.

Kennt evtl. jemand einen geeigneten Baustein?

Gruß,
Paule
Gast #4015074
Lesenswert?

JojoS schrieb:
> LTC2983 ist ein Chip für 20 Sensoren,

Aber nur auf den 1. Blick:
Beitrag "Re: ca. 100 PT1000 Messwiderstände messen"

Paul K. schrieb:
> Wie kann ich am besten die 40x Chip Select auf nur einen einzigen
> wandeln?

Das finde ich ungeschickt, zumal dann alle Leitungen mit Ausnahme von 
/CS parallel liegen.
Wie genau muß denn die Temperaturmessung sein? Gingen auch PT1000?
Dann wäre es möglich, per µC mehrere Kanäle (<= 8) zu messen und dann 
von nur noch fünf Einheiten die Daten einzulesen.
#4015091
Lesenswert?

Falk Brunner schrieb:
> Man kann z.B. 5 Stück 74HC138 und bissel andere Logik nehmen, um einen 1
> aus 40 Dekoder zu basteln. Dann braucht man aber 6 IO Pins.

Also 5 Pins mehr, als bei der 74HC164 Lösung.

Beim 74HC164 braucht man nur eine extra Taktleitung. Als Datenleitung 
für die einzuschiebende 0 kann man MOSI mitbenutzen.

Zwischenzeitliche /CS interessieren einen SPI-Slave nicht, solange SCK 
ruhig bleibt.
Gast #4015105
Lesenswert?

Hallo Zusammen

und wenn man einen 74hC595 nimmt, dann braucht man 2 Zusätzliche 
Leitungen zum SPI dazu und hat den Vorteil, dass der CS ruhig bleibt bis 
die Schieberegister geladen sind....

Gruß Thomas
Gast #4015154
Lesenswert?

Wieso nimmt man dann nicht gleich einen MCU mit mindestens 50 GPIOs?

Paul K. schrieb:
> Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO
> durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes
> Chipselect.

Verstehe ich nicht ganz? Ist SPI nicht ein BUS der für sowas vorgesehen 
ist?
Nimm doch einfach einen ATmega1280 oder so...
(Firma: TravelRec.) Persönliche Seite #4015165
Lesenswert?

Paul K. schrieb:
> für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige,
> verwende ich 40! ICs für PT100 mit SPI-Schnittstelle.

Bei der Anforderung hätte ich auf I2C oder etwas Eigenes 
zurückgegriffen. Auf diese Weise kann man zum Beispiel die entsprechende 
Menge ATTinies an den Bus hängen, die dann alle separat ihre PT100 
Messung machen und die Daten nach Aufforderung an den Mastercontroller 
schicken.
Gast #4015203
Lesenswert?

Hallo,

entweder du dekodierst 6 Adressen auf 40 x CS, die Standardlösung. Oder 
du schiebst die 40 Bit durch entsprechend viele Schieberegister. Wenn du 
keinen wahlweisen Zugriff brauchst, kannst du 1 einzelnes Bit bei jedem 
Zugriff um eins weiterschieben, brauchst also zwischen 2 Slaves bloss 
einen Clk-Puls.

An der Tatsache dass man 40 Leitungen braucht führt so oder so kein Weg 
vorbei.

Georg
#4015206
Lesenswert?

Paul K. schrieb:
> 40! ICs für PT100 mit SPI-Schnittstelle

Was sind denn das für ICs, die Du benutzt? D.h. jeweils ein PT100 hängt 
an einem dieser ICs?
Und Du willst alle 40 ICs dannn durch einen Master-IC (AVR?) steuern und 
jeweils die CS Leitungen vom Master-IC durchsteuern und die Messwerte 
dann per SPI auslesen?

Mit einem Port-Extender (MCP23017 et al.) oder einem TQFP64 AVR (z.B. 
ATMega644 oder ATMega128) als Master-IC ist das auch machbar. Diese 
haben 53 frei GPIOs und können die 40 CS der Reihe nach adressieren.
Gast #4015305
Lesenswert?

Paul K. schrieb:
> Hallo,
>
> für ein Temperaturmessgerät, was ich für mein Hobbyprojekt benötige,
> verwende ich 40! ICs für PT100 mit SPI-Schnittstelle. Es ist sowohl
> Schreib- als auch Lesezugriff nötig.
>
> Wie kann ich am besten die 40x Chip Select auf nur einen einzigen
> wandeln?
>
> Ich möchte nicht die Variante von SPI benutzen, bei der MOSI bzw. MISO
> durchgeschliffen wird, sondern wirklich für jedes IC ein eigenes
> Chipselect.
>
> Kennt evtl. jemand einen geeigneten Baustein?
>
> Gruß,
> Paule

Servus Paule

wie mein Vorredner schon sagte, würde ich auch den MCP23S17 nehme. Der 
SPI Portexpander hat 2 volle 8 Bit Ports, somit hast du mit einem 
Baustein 16 GPIO, mit zwei 32 und mit drei 48 - das sollte dann reichen.

Empfehle dir wegen Platzbedarf die SMD Variante.

Wenn Du dann 3 solcher Bausteine im Einsatz hast, können die GPIO's lese 
und auch schreibend eingesetzt werden, auch als multipli, darunter 
verstehe ich, du kannst mit einem Instruct Byte mehrere GPIO 
gleichzeitig verändern.

write(0x25)

d0=1
d1=0
d2=1
d3=0
d4=0
d5=1
d6=0
d7=0

Ansteuern tust die SPI expander ganz einfach über seine Adresse, du 
kannst acht solcher gleichen Bausteine einsetzen, sie unterscheiden sich 
über die Adresse die man über A0 A1 A2 setzen kann.

Alle drei auf GND gezogen, ist das der Baustein 0
A0 auf Vcc+ gezogen ist das der Baustein 1
A0 und A1 auf Vcc+ Baustein 2
usw

Wenn du einen GPIO einlesen willst, und du weisst, welchen du einlesen 
willst, z.B den des Baustein 3 Port A Bit3
dann schreibst einfach

Value = SPI_READ(Device, GPIO);

Wenn du dir schöne Defines anlegst,

..
#define Regler19 SPI_READ(Device3,GPIOA3);
#define Regler20 SPI_READ(Device3,GPIOA4);
#define Regler21 SPI_READ(Device3,GPIOA5);
#define Regler22 SPI_READ(Device3,GPIOA6);
#define Regler23 SPI_READ(Device3,GPIOA7);
..

ist das ein klacks

ReadValue = Regler19;

und schreiben?

routine anlegen fürs schreiben, und dann genauso.

;-)
#4016043
Lesenswert?

Ich würde auch entweder einen größeren uC nehmen oder aber mit einem 2. 
uC einen "Treiber" bauen. Müsste dann wohl ein TQFP64/QFN64 sein. Der 
muss ja ansich nichts können. Dem kannst du via SPI, I2C, UART oder auch 
1wire sagen, welche Leitung er aktiv schalten soll. Es ginge natürlich 
auch mit 2 uCs in DIP28/SOIC28/SSOP28... Dann würde ich aber I2C nehmen.

Gibt es denn einen Grund, weshalb du nicht alle ICs in Reihe schalten 
kannst?

Vielleicht gibt es solche RTD2Digital ICs ja auch mit I2C? Oder mit SPI, 
dann aber mit der Möglichkeit, mehrere Pt100 zu messen.

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