Connessioni bus SPI: eseguire il loop o non eseguire il loop?


9

Ho una domanda relativa alla connessione fisica di un bus SPI.

Ho un master SPI (un dispositivo PIC32) e un numero di slave (in questo caso i dispositivi PIC16). Sto solo scrivendo agli slave, e il protocollo si prende cura di chi fa cosa quando, quindi non ci sono segnali MISO o SS di cui preoccuparsi e sto solo mettendo in parallelo i dati e le linee di clock con tutti gli slave. La lunghezza totale del bus non è più di un paio di piedi (diciamo 60 cm) e sto eseguendo l'SCK a 8 MHz.

Ora, il posizionamento fisico dei dispositivi slave (che in realtà sono nodi di interfaccia su altre schede) è tale che il bus SPI ritorna al master in modo che sia possibile collegare entrambe le estremità di ciascun loop rispettivamente a MOSI e SCK.

Il diagramma seguente mostra cosa intendo - sto parlando delle connessioni tratteggiate rosse - e la domanda è: è una buona cosa farlo o no?

Bus SPI

Ho potere e terra facendo un viaggio simile, e questo è ovviamente - e dimostrabilmente - utile perché minimizza la caduta di tensione causata dagli schiavi. Tuttavia, non ho idea se sia una cosa buona o cattiva fare lo stesso con queste linee di segnale. Dovrei invece consentire una sorta di terminazione - resistori a massa (?) - o forse resistori in serie per sopprimere i riflessi, o cosa?

L'ho provato sia con che senza collegare i punti, per così dire, e non c'è alcuna differenza funzionale e nessuna modifica che posso vedere sull'ambito, ma forse se fosse un po 'più lungo di 60 cm o un po' più veloce di 8 Mhz, Avrei un problema? Quindi sto cercando consigli su cosa fare che mi terranno fuori dai guai se qualcosa dovesse cambiare.

Sebbene questa domanda mi preoccupi particolarmente per un bus SPI da 60 cm a 8 Mhz, ci sono dei principi generali per altre situazioni? Forse i pull-up su un bus I2c dovrebbero essere posizionati diversamente?

Anche i collegamenti a materiale di lettura adeguato sarebbero i benvenuti - non ho trovato nulla che copra questa domanda specifica.


Non sono del tutto sicuro del problema che stai cercando di risolvere con questa connessione
PlasmaHH,

@PlasmaHH Bene, questa è davvero la mia domanda: non ho un problema da risolvere ma ho questa opzione. So che aiuta con le linee elettriche, non so se aiuta con le linee di segnale. È una domanda stupida? Forse sto pensando troppo.
Roger Rowland,

Aggiungo che idealmente, un PCB a 4 strati e aerei Vdd e Vss dedicati sarebbe una buona idea qui per diversi motivi, insieme a cappucci di bypass dedicati molto vicini a ciascun dispositivo.
rdtsc,

1
IMO
Farei

Risposte:


9

Tornare indietro? NO. Se la linea è abbastanza lunga da richiedere la terminazione (più lunga di risetime * c / 10 o giù di lì), guidala abbastanza forte da terminarla correttamente e abbina ragionevolmente la linea e la terminazione. Se la linea è abbastanza corta da non aver bisogno di terminazione, non avrà bisogno della conduttività "extra" che sembra stia cercando con la connessione loop-back.

Un resistore in serie? NO. Questo stile di terminazione della sorgente funziona solo per un ricevitore a punto singolo alla fine della linea. Nei punti precedenti della linea, si ottiene la peggiore forma d'onda possibile per i ricevitori, che è un passaggio a metà tensione, seguito da una pausa, seguito da un altro passaggio a piena tensione.


Ok grazie - puoi spiegare cosa intendi con "guidalo abbastanza forte" ? Intendi non direttamente dal PIC ma tramite MOSFET o qualcosa del genere? Inoltre, per "terminarlo correttamente" , intendi resistori a massa? Capisco il tempo di aumento del punto piuttosto che la frequenza di clock che determina la necessità di terminazione, puoi mostrare il calcolo completo della regola empirica? Tempo di salita in quali unità? Cosa c/10?
Roger Rowland,

@RogerRowland "abbastanza forte" in modo da sviluppare un buon livello logico nel carico della terminazione. Un output uC potrebbe essere abbastanza potente, potrebbe non dipendere dalla terminazione e dalla sua potenza del drive. Utilizzare un buffer o due in parallelo se non ha abbastanza corrente sull'unità. 'Correttamente' significa impedenza shunt resistiva. Che si tratti di terra, a metà binario o accoppiato CA, dipende dal sistema. Se si verifica il 3-stato del driver, deve essere a terra per mantenere validi livelli logici. In caso contrario, la terminazione sulla guida centrale carica di meno il conducente.
Neil_UK,

@RogerRowland tempo di salita in secondi, c velocità della luce in m / secondo, quindi risetime * c in metri, / 10 è un po 'handwavy per "una frazione insignificante del risetime presente simulataneuosly sulla linea del segnale"
Neil_UK

Grazie ancora Neil, questo è davvero utile! Penso che trarrebbero beneficio eseguendo un po 'di sperimentazione per assicurarsi che ciò in cui hai detto affonda - forse un fine settimana piovoso sarà ben speso.
Roger Rowland,

3

Il problema che vedo con la topologia ad anello è che è difficile posizionare correttamente i terminatori per sopprimere le riflessioni. questo non ha molta importanza a 8MHz, ma potrebbe essere diventato un problema a frequenze più alte o con linee più lunghe.

L'unico caso che vedo dove le linee tratteggiate potrebbero essere d'aiuto è quando il ritardo di propagazione da master a SLAVE 6era inaccettabile. In tal caso, collegheresti le linee tratteggiate, ma spezzerai il loop da qualche parte nel mezzo (diciamo, tra SLAVE 3e SLAVE 4) e terminerai ogni ramo in modo indipendente.


2

Con segnali veloci o linee lunghe, la riflessione del segnale diventa un problema. In questi casi, è necessario terminare correttamente la linea inserendo un resistore che collega la fine della linea e la terra (non l'inizio della linea). La terminazione rende la linea "elettricamente infinita", quindi il segnale non ritorna. La terminazione talvolta richiede anche elementi LC per contrastare l'impedenza reattiva.

Tuttavia, nel tuo caso, non è necessaria la terminazione (linea breve per la velocità del segnale, supponendo che non si operi in un ambiente elettricamente rumoroso). Ecco perché non vedi alcuna differenza. È anche una cattiva pratica di progettazione eseguire il looping del segnale. In questo modo si crea il loop del segnale, introducendo rumore nel circuito (e esso si muove in entrambe le direzioni). Inoltre, semplifica l'acquisizione del rumore RF nelle linee.

Inoltre, di solito è anche male collegare in loop le linee di terra e di alimentazione. Ci sono anche il rumore di commutazione digitale e i circuiti di massa e possono avere un impatto drammatico sui circuiti analogici. Se necessario, è possibile utilizzare le forcelle Y (nessuna connessione all'estremità remota) per ridurre la caduta di tensione. Se ciò non bastasse, utilizzare tracce più ampie (traccia più ampia-> meno resistenza-> minore caduta di tensione).

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.