SPI Pegelwandler 3.3V µC an 5V IC

Gast #2408331
Lesenswert?

Ich habe hier ein 3.3V µC und muss nun ein 5V IC über SPI verbinden.

Da habe ich auf der Seite:
http://www.mikrocontroller.net/articles/Pegelwandler#AVR_SPI_.28SDC.2FMMC.29

einige Infos gefunden.

Ansich Fragt der µC den Slave IC ab, braucht es hierfür einen 
bidirektionalen Level Shifter?


Ich habe hier mal versucht die Richtung der Signale zusammen zu fassen.
Ist das so Richtig?
Was mache ich mit IRQ?


Anschluesse am µC (atxmega-A4) -> Level Shifter -> 5V IC

SS ->  ??  -> CS  (Chip Select)
MOSI -> ?? -> DIN
MISO <- ?? <- DOUT
SCK -> ?? -> SCLK

IRQ??



IRQ:
The interrupt request output (IRQ) is an open-drain, active low logic
output. The IRQ output goes active low when one or more
interrupt events have occurred. A status register
indicates the nature of the interrupt.


Datenblatt:
http://datasheets.maxim-ic.com/en/ds/MAX3372E-MAX3393E.pdf

5 Volt IC:
http://www.analog.com/en/analog-to-digital-converters/energy-measurement/ade7758/products/product.html
Gast #2408650
Lesenswert?

Die Datenrichtungen sehen OK aus.

IRQ geht i.d.R. vom Slave an den Master. Der Slave kann damit dem Master 
melden, dass was besonderes passiert ist und der Master bitte per SPI 
Details anfragen soll.

Ich sehe keinen Bedarf an bidirektionalen Pegelwandlern. Der 5V Slave 
müsste auch zufrieden sein, wenn er vom 3.3V µC Master Signale auf den 
entsprechend mit 3.3V getriebenen SPI Leitungen (SS, SCK, MOSI) bekommt.

Wenn der 5V Slave selber sendet (MISO, IRQ), kann ein Spannungsteiler 
als Pegelwandler den 3.3V µC Master schützen.
Gast #2408915
Lesenswert?

@Krapao,

die Idee hatte ich auch, nur ich bin mir nicht
sicher ob das Funktioniert, laut atxmega Datenblatt sind bei
3.3V min 2.6V als High Wert angegeben.
(bei 3V sinds sogar nur noch 2.1V)

Der 5V IC benötigt aber mindestens 2.4V.

Wird das nicht etwas knapp?

Treffen die GPIO Werte im atxmega Datenblatt überhaupt auf SPI zu?

Wie verhalten sich die Widerstände bei höheren Geschwindigkeiten?

Atxmega:

                             IOH = -8 mA, VCC = 3.3V 2.6 3.0
VOH Output High Voltage GPIO IOH = -6 mA, VCC = 3.0V 2.1 2.7
                             IOH = -2 mA, VCC = 1.8V 1.4 1.6

5V IC:

LOGIC INPUTS
  DIN, SCLK, CLKIN, and CS
  Input High Voltage, VINH 2.4 V min  DVDD = 5 V ± 5%
  Input Low Voltage, VINL  0.8 V max  DVDD = 5 V ± 5%
  Input Current, IIN       ±3  A max  Typical 10 nA, VIN = 0 V to DVDD
  Input Capacitance, CIN   10  pF max
Gast #2409465
Lesenswert?

Michi schrieb:
> die Idee hatte ich auch, nur ich bin mir nicht
> sicher ob das Funktioniert, laut atxmega Datenblatt sind bei
> 3.3V min 2.6V als High Wert angegeben.
> (bei 3V sinds sogar nur noch 2.1V)
>
> Der 5V IC benötigt aber mindestens 2.4V.
>
> Wird das nicht etwas knapp?

Ich würde mich Krapao anschließen.

Das bedeutet, dass der 3.3V µC mindestens 2.6V (bzw. 2.1V) als 
High-Signal erwartet, nicht dass er selber "nur" so viel als High 
ausgibt. Er versucht natürlich die vollen 3.3V auszugeben. Was am Ende 
der Leitung ankommt ist ne andere Frage, sollte aber nicht so viel 
weniger sein. Also immer noch genug für den 5V µC, um es als High zu 
erkennen.

Ich hab das selber schon öffters so gemacht (3.3V Signal an 5V µC, bzw. 
mit Spannungsteiler in die andere Richtung) ohne Probleme.
Gast #2409920
Lesenswert?

Bernd Rüter schrieb:
> Zurück nehme ich einen Spannungsteiler aus 18k und 33k um aus einem
> 5V-Signal wieder ein 3,3V-Signal zu machen.

Imho etwas hochohmig. Es hat zwar noch niemand über die Geschwindigkeit 
geschrieben, mit der das SPI-Interface laufen soll (oder hab ich's nur 
überlesen?), aber ich würde da eher 1k8 und 3k3 nehmen - oder noch 
weniger. Selbst diese Kombination wird bei 10MHz schon grenzwertig sein.
Gast #2413913
Lesenswert?

mal abgesehen von dem Spannungsteiler.

Macht es Sinn, gerade wenn der zweite IC (SPI Master) ein 5V IC ist, 
Widerstände
an den (MOSI/MISO/SCK) Leitungen zu verwenden? z.B. 1k8 oder kleiner.
Oder ist dies unnötig?


Ich rede hier nicht von den Widerständen die genommen werden bei ISP 
Programmierung um  zu verhindern das einer der Slaves die Datenleitungen 
Steuert. vgl. Appnote AVR042 / AVR910
Der ATXMega wird ueber PDI Programmiert

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