Terminazione bus SPI e resistori pull-up


12

Il mio microcontrollore (serie ATMEL) deve comunicare con un dispositivo slave utilizzando il protocollo SPI. Sto progettando l'hardware. La velocità massima del bus SPI è di 1 MHz. La distanza tra master e slave è inferiore a 50 mm.

Q1) Devo aggiungere la terminazione in serie sul bus SPI per evitare la riflessione a questa velocità SPI (1MHz)? In tal caso, come devo calcolare il suo valore e dove devo posizionare la resistenza di terminazione - vicino al master o vicino allo slave?

D2) Ho visto altri progetti di riferimento in cui a volte le persone usano resistori pull-up su tutti i segnali SPI, a volte solo su alcuni segnali (CS o MISO) e a volte nessuno. Abbiamo bisogno di resistori pull-up sui segnali SPI (poiché la porta SPI è una configurazione push-pull)? L'unica volta in cui i pin fluttueranno è fino a quando il microcontrollore non ottiene la sua potenza e può impostare i pin come uscite. Quindi dovrei usare resistenze pull-up o cosa succederà se non uso resistenze pull-up nel mio progetto?

Risposte:


20
  1. A 1 MHz e 50 mm (2 pollici) non sono necessarie terminazioni. Hai normali segnali digitali integrati e nemmeno molto veloci.
  2. Non hai bisogno di pullup o pulldown su linee SPI. Se utilizzate, le linee SPI sono sempre guidate in modo esplicito in entrambe le direzioni. Tuttavia, può essere utile inserire un pulldown (o pullup) sulla linea MISO. Questo perché questa linea è guidata da uno slave solo quando viene affermata la sua linea di selezione slave. Quando il bus non viene utilizzato, tutte le linee di selezione slave sono di solito non assegnate, quindi MISO galleggia. Il valore di dati arbitrari è irrilevante poiché nulla sta osservando il suo valore a meno che non sia selezionato uno slave, ma tensioni intermedie su questa linea possono indurre il ricevitore nel master ad assorbire corrente eccessiva o eventualmente a oscillare. Di solito metto un pulldown di 100 kΩ su MISO per questo motivo. Mantiene la linea innocua quando non in uso. Puoi anche usare un pullup, purché tutti gli schiavi rimangano alimentati anche quando non sono in uso.

3
Un motivo importante per mettere un pullup sui pin CS / SS è assicurarsi che tutti gli slave rimangano deselezionati quando il master è in reset o in fase di avvio. In tal caso, i suoi pin sono di solito hi-Z e quindi fluttuanti, il che potrebbe comportare la selezione di più slave e il pilotaggio del bus MISO (con conseguente cortocircuito). Forse questa sarebbe un'utile aggiunta a questa risposta?
Matthijs Kooijman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.