Traslare da 3v3 a 5v

Feb 20, 2010 55 Replies

Devo interfacciare una flash SPI ad un uC. Il problema è che la flash lavora a max 3.6V, mentre il uC va a 5V (non posso scendere perchè altrimenti non può andare al massimo della velocità, e poi tutto il resto dell'elettronica lavora a 5V). So che esistono integrati dedicati (tipo il MAX3392, apposta per SPI), ma non ho molto spazio sulla scheda (che verrà montata a mano, quindi niente contenitori sub-micrometrici, massimo un sop) e vorrei cavarmela con qualche componente discreto, soprattutto visto che non ho bisogno di velocità stratosferiche (il tutto comunica su RS232). Ho partorito la soluzione nel Fidocad allegato. Idee/commenti/insulti?



Ringrazio in anticipo



Pasu



[FIDOCAD] RV 65 90 25 30 0 RV 115 30 155 90 0 MC 85 60 0 0 080 FCJ TY 85 50 4 3 0 0 0 * 2k2 TY 95 65 4 3 0 0 0 * MC 80 40 1 0 080 FCJ TY 90 50 4 3 0 0 0 * TY 85 40 4 3 0 0 0 * 10k LI 85 60 65 60 0 LI 80 50 80 60 0 LI 95 60 115 60 0 MC 85 70 0 0 080 FCJ TY 80 70 4 3 0 0 0 * 22k TY 95 75 4 3 0 0 0 * MC 100 75 1 0 080 FCJ TY 105 80 4 3 0 0 0 * 33k TY 95 85 4 3 0 0 0 * LI 95 70 115 70 0 LI 100 70 100 75 0 LI 85 70 65 70 0 MC 80 40 3 0 010 MC 100 85 0 0 040 TY 75 25 4 3 0 0 0 * +5V MC 135 30 3 0 010 MC 45 30 3 0 010 TY 40 15 4 3 0 0 0 * +5V TY 30 40 4 3 0 0 0 * uC TY 140 40 4 3 0 0 0 * Mem TY 130 15 4 3 0 0 0 * +3V3 TY 50 55 4 3 0 0 0 * SDI TY 50 65 4 3 0 0 0 * SDO TY 120 55 4 3 0 0 0 * SDO TY 120 65 4 3 0 0 0 * SDI MC 45 90 0 0 040 MC 135 90 0 0 040

Dimenticavo. Ho letto di gente che mette soltanto una resistenzina in serie su ogni linea, ma non mi sembra molto igienico. Inoltre l'ingresso SPI del uC è triggerato, il che vuol dire una Vih di 3.5V con alimentazione a 5V...

di nuovo

P.

Anche se non vai veloce, calcola quanto tempo ci vuole a caricare la capacità di ingresso tramite le resistenze, perché tieni conto che il clock non ne è influenzato, il che corrisponde a un delay negativo del clock. Verifica che il setup time sia rispettato.

Boiler

Fatto pi=F9 di una volta con resistenze 2.2 - 3.3 kohm ed =E8 andato beno= ne.

Altra possibile soluzione =E8 quella di mettere uno zener da 3.3V al post= o=20 della res da 33k (con l'altra resistenza dimensionata opportunamente).

Immagino ti serva lo stesso stratagemma sulla linea di clock.

my 2 cents

Pasu ha scritto:

se non serve che la singola linea sia bidirezionale allora farei così:

- l'uscita sdo della flash spi la puoi collegare direttamente all'ingresso del micro dato che il Vih-min del micro è di solito

0.7*vdd=3,5V per gli ingressi che fanno capo alla i2c/spi integrata (controlla il ds del tuo micro però)

- l'uscita sdo del micro la puoi collegare (metodo semplice) alla sdi della flash con una R=5,6k e basta; al max metti in parallelo alla R un C=47pf se ti serve pilotare a frequenza elevata (non è il tuo caso cmq)

se serve bi-direzionalità allora bisogna scomodare un mos per una soluzione ad hoc

-ice-

M74HCT08M1R (ST)

VIH High Level Input Voltage =3D 2.0V (Min.)

VIL Low Level Input Voltage =3D 0.8 (Max.)

Vcc =3D 4.5V to 5.5V

Piccio.

Senz'altro. In effetti mi sa che abbasserò quelle 22k/33k come suggerisce Andromeda. Tanto la corrente non la pago mica io :-p

P.

Vuoi dire che non ho inventato niente? Uff :-) In effetti forse 22k/33k sono eccessivi...

Ci avevo pensato, ma oltre a dover ordinare lo zener, così a naso (segue contributo dalla regia col profilo del naso di Pasu) ho pensato che la capacità da caricare aumentasse a dismisura... Mi faccio due conti.

Certo, non l'ho messo per non appesantire il disegno.

Grazie

P.

È proprio questo il problema. Se la flash esce con 3.3V (ammesso che vada rail to rail) non ce la faccio a farcela.

Vabbè, penso possiamo permettercela un paio di resistenze in più :-)

Questo è l'unico vantaggio dell'SPI!

P.

Geniale. Ho passato il pomeriggio a cercare traslatori di livello ma non avevo pensato ad usare un comune 74HC... Il fatto è che questo mi risolve il problema solo in una direzione (oppure mi sfugge qualcosa?), dovrei comunque mettere le 6 resistenze per le linee (ck,sdi e cs) di ingresso alla flash :-(

Apprezzo la genialità comunque

P.

Il 20/02/2010 17.59, Pasu ha scritto:

presente! ma solo per atrezzatura uso interno, non per produzione, anche se...

per un uC a 5V con una M25P10 ho fatto cosi', i livelli sono compatibili

[FIDOCAD] MC 75 30 0 0 115 MC 85 30 1 0 170 MC 75 15 1 0 200 MC 85 20 1 0 170 MC 85 40 1 0 170 MC 75 40 1 0 200 LI 85 15 35 15 0 LI 85 55 65 55 0 LI 75 40 95 40 0 LI 75 30 95 30 0 LI 85 15 85 20 0 LI 85 50 85 55 0 TY 55 10 4 3 0 0 0 * +5V TY 95 25 4 3 0 0 0 * Flash_Vcc TY 95 35 4 3 0 0 0 * Flash_gnd TY 60 50 4 3 0 0 0 * GND SA 75 30 0 SA 85 30 0 SA 85 40 0 SA 75 40 0 SA 75 15 0 SA 75 55 0 TY 90 45 4 3 0 0 0 * 100n TY 60 30 4 3 0 0 0 * 10K MC 25 55 3 0 115 TY 25 60 4 3 0 0 0 * 1K MC 160 35 3 0 115 TY 160 40 4 3 0 0 0 * 1K MC 25 25 3 0 115 TY 25 30 4 3 0 0 0 * 1K MC 25 40 3 0 115 TY 25 45 4 3 0 0 0 * 1K MC 35 15 0 0 115 TY 20 15 4 3 0 0 0 * 100K TY 10 20 4 3 0 0 0 * /CS TY 10 35 4 3 0 0 0 * CK TY 10 50 4 3 0 0 0 * D TY 180 30 4 3 0 0 0 * Q LI 35 25 45 25 0 LI 45 40 35 40 0 LI 35 55 45 55 0 LI 160 35 150 35 0 LI 25 25 20 25 0 LI 25 40 20 40 0 LI 25 55 20 55 0 LI 175 35 170 35 0 SA 35 25 0

saluti

--=20 lowcost

cut...

Dipende se gli ingressi della FLASH sono 5V tollerant. Potresti usare anche un 74ACT125 con lo stesso proposito. Colegando di ogni gate l'ingresso con l'enable otterresti degli open- collector che abbinati ad un forte pull-up risolverebbero la connessione micro-to-FLASH. Almeno in questo modo il livello "0" =E8 garantito

[FIDOCAD] MC 90 90 0 0 670 EV 101 92 103 94 LI 102 94 102 100 LI 102 100 90 100 LI 90 100 90 90 LI 90 90 70 90 LI 110 90 130 90 SA 90 90 MC 90 115 0 0 670 EV 101 117 103 119 LI 102 119 102 125 LI 102 125 90 125 LI 90 125 90 115 LI 90 115 70 115 LI 110 115 130 115 SA 90 115 MC 90 140 0 0 670 EV 101 142 103 144 LI 102 144 102 150 LI 102 150 90 150 LI 90 150 90 140 LI 90 140 70 140 LI 110 140 130 140 SA 90 140 EV 96 52 98 54 LI 97 54 97 60 MC 110 50 0 1 670 LI 110 50 130 50 LI 90 50 70 50 MC 97 60 0 0 040 RV 70 35 25 155 RV 130 35 170 155 MC 115 75 3 0 010 MC 115 75 1 0 080 SA 115 90 LI 115 85 115 90 SA 115 115 LI 115 110 115 115 MC 115 100 1 0 080 MC 115 100 3 0 010 SA 115 140 LI 115 135 115 140 MC 115 125 1 0 080 MC 115 125 3 0 010 TY 117 66 5 3 0 0 0 * +5 TY 118 91 5 3 0 0 0 * +5 TY 117 116 5 3 0 0 0 * +5 TY 80 35 5 3 0 0 0 * 74ACT125 (5V) TY 39 92 5 3 0 0 0 * uC (5V) TY 133 92 5 3 0 0 0 * FLASH (3.3V)

Piccio.

Errata corrige: ho indicato i pull-up fissati a 5V anzich=E9 3V3 della FLASH.

[FIDOCAD] MC 90 90 0 0 670 EV 101 92 103 94 LI 102 94 102 100 LI 102 100 90 100 LI 90 100 90 90 LI 90 90 70 90 LI 110 90 130 90 SA 90 90 MC 90 115 0 0 670 EV 101 117 103 119 LI 102 119 102 125 LI 102 125 90 125 LI 90 125 90 115 LI 90 115 70 115 LI 110 115 130 115 SA 90 115 MC 90 140 0 0 670 EV 101 142 103 144 LI 102 144 102 150 LI 102 150 90 150 LI 90 150 90 140 LI 90 140 70 140 LI 110 140 130 140 SA 90 140 EV 96 52 98 54 LI 97 54 97 60 MC 110 50 0 1 670 LI 110 50 130 50 LI 90 50 70 50 MC 97 60 0 0 040 RV 70 35 25 155 RV 130 35 170 155 MC 115 75 3 0 010 MC 115 75 1 0 080 SA 115 90 LI 115 85 115 90 SA 115 115 LI 115 110 115 115 MC 115 100 1 0 080 MC 115 100 3 0 010 SA 115 140 LI 115 135 115 140 MC 115 125 1 0 080 MC 115 125 3 0 010 TY 117 66 5 3 0 0 0 * +3V3 TY 118 91 5 3 0 0 0 * +3V3 TY 117 116 5 3 0 0 0 * +3V3 TY 80 35 5 3 0 0 0 * 74ACT125 (5V) TY 39 92 5 3 0 0 0 * uC (5V) TY 133 92 5 3 0 0 0 * FLASH (3.3V)

Piccio.

lowcost:

LOL! Meno male che non ho scritto insulti :-p

Purtroppo dovrà andare in produzione. E so per esperienza che questa gente (il cliente) è maestra nel far andar storte le cose che possono andar storte.

Colpito e affondato. La mia è una M25P16 :-)

Non so se è un problema con la mia versione di FidocadJ, vedo dei pezzi sparsi... Ma così non vai sotto zero rispetto al riferimento che dai alla flash? confidi negli schottky interni?

P.

Purtroppo no, la flash che sto usando è una M25Pxx (xx=16,32,64,...) della ST.

Se avessi i componenti in casa proverei questa soluzione, ma visto che comunque dovrei acquistare, e visto che l'ingombro è lo stesso, a questo punto mi sa che vado per l'IC dedicato (che costa un fottio, Dio "benedica" l'RS). Ma tanto è solo un'opzione che viene montata solo su richiesta (leggi: una o due all'anno, prevedo) e comunque la macchina costa svariate migliaia di euri...

P.

Pasu ha scritto:

hai il rail fisso a 3,3v quindi...

quindi 3,3v < 0,7*5V = 3,5V = Vih

e Vin deve essere >= Vih

cos'è che mi sfugge?

A proposito di collettori aperti (ma per la connessione flash->uC) se ci metto un banale transistorino con la sua opportuna resistenza di collettore? Ok, otterrei i dati ribaltati, ma non mi sembra ci sia controllo di flusso sui dati di una SPI, vero?

Pasu ha scritto:

nulla in questo senso :) lo dicevo perchè in situazione simile ho alimentato il DSP spi (la tua è una flash spi ma non cambia il concetto) a 3,6V e ho collegato direttamente

per l'altro segnale mi serviva bidirezionale (lo usavo anche per altro oltre la spi) e ho piazzato un 2n7000

-ice-

Anch'io vedo dei pezzi sparsi. E' voluta la cosa, o c'=E8 un problema con FidoCadJ?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required