Connexions de bus SPI - pour boucler ou ne pas boucler?

9

J'ai une question concernant la connexion physique d'un bus SPI.

J'ai un maître SPI (un périphérique PIC32) et un certain nombre d'esclaves (dans ce cas, des périphériques PIC16). J'écris uniquement aux esclaves, et le protocole s'occupe de ce que l'on fait quand, donc il n'y a pas de signaux MISO ou SS à craindre et je ne fais que mettre en parallèle les lignes de données et d'horloge avec tous les esclaves. La longueur totale du bus ne dépasse pas quelques pieds (disons 60 cm) et je fais fonctionner le SCK à 8 MHz.

Maintenant, le placement physique des périphériques esclaves (qui sont en fait des nœuds d'interface sur d'autres cartes) est tel que le bus SPI boucle directement vers le maître afin qu'il soit possible de connecter les deux extrémités de chaque boucle à MOSI et SCK respectivement.

Le diagramme suivant montre ce que je veux dire - je parle des connexions en pointillés rouges - et la question est: est-ce une bonne chose de le faire ou non?

Bus SPI

J'ai du courant et de la masse pour faire un voyage similaire, et c'est évidemment - et manifestement - utile car cela minimise la chute de tension causée par les esclaves. Cependant, je n'ai aucune idée si c'est une bonne ou une mauvaise chose de faire la même chose avec ces lignes de signaux. Dois-je plutôt autoriser une sorte de terminaison - des résistances à la masse (?) - ou peut-être des résistances en série pour supprimer les réflexions, ou quoi?

Je l'ai essayé à la fois avec et sans connecter les points, pour ainsi dire, et il n'y a pas de différence fonctionnelle et aucun changement que je peux voir sur la portée, mais peut-être que si elle était un peu plus longue que 60 cm ou un peu plus rapide que 8 MHz, J'aurais un problème? Je suis donc à la recherche de conseils sur ce qu'il faut faire pour éviter les ennuis si quelque chose change.

Bien que cette question me préoccupe particulièrement pour un bus SPI de 60 cm @ 8Mhz, existe-t-il des principes généraux pour d'autres situations? Peut-être que les tractions sur un bus I2c devraient être placées différemment?

Tout lien vers du matériel de lecture approprié serait également le bienvenu - je n'ai rien trouvé qui couvre cette question spécifique.

Roger Rowland
la source
Je ne sais pas trop quel problème vous essayez de résoudre avec cette connexion
PlasmaHH
@PlasmaHH Eh bien, c'est vraiment ma question - je n'ai pas de problème à résoudre mais j'ai cette option. Je sais que ça aide avec les lignes électriques, je ne sais pas si ça aide avec les lignes de signaux. Est-ce une question stupide? Peut-être que je réfléchis trop.
Roger Rowland
J'ajouterais que dans l'idéal, un PCB à 4 couches et des avions Vdd et Vss dédiés seraient une bonne idée ici pour plusieurs raisons, ainsi que des bouchons de dérivation dédiés très proches de chaque appareil.
rdtsc
1
IMO Je ferais la connexion que vous proposez en rouge et vous débarrasser de la connexion de l'esclave 3 à l'esclave 4.
lucas92

Réponses:

9

Boucle en arrière? NON. Si la ligne est suffisamment longue pour nécessiter une terminaison (plus longue que risetime * c / 10 environ), conduisez-la suffisamment pour terminer la terminaison correctement et faites correspondre la ligne et la terminaison raisonnablement bien. Si la ligne est suffisamment courte pour ne pas nécessiter de terminaison, elle n'aura pas besoin de la conductivité «supplémentaire» que vous semblez rechercher avec la connexion en boucle.

Une résistance série? NON. Ce style de terminaison de source ne fonctionne que pour un récepteur à un seul point à la fin de la ligne. Aux points antérieurs de la ligne, vous obtenez la pire forme d'onde possible pour vos récepteurs, qui est une étape à demi-tension, suivie d'une pause, suivie d'une autre étape à pleine tension.

Neil_UK
la source
Ok merci - pouvez-vous expliquer ce que vous entendez par "conduire assez fort" ? Vous voulez dire pas directement du PIC mais via MOSFET ou quelque chose? Aussi, pour "terminer correctement" , vous voulez dire des résistances à la terre? Je comprends le point concernant le temps de montée plutôt que la fréquence d'horloge déterminant le besoin de résiliation, pouvez-vous montrer le calcul de la règle générale? Temps de montée dans quelles unités? Quoi c/10?
Roger Rowland
@RogerRowland «assez fort» pour qu'il développe un bon niveau logique dans la charge de la terminaison. Une sortie uC peut être suffisamment forte, peut-être pas, dépend de la terminaison et de la force de son lecteur. Utilisez un tampon ou deux en parallèle si le courant du lecteur n'est pas suffisant. «Correctement» signifie l'impédance résistive shunt. Que ce soit à la terre, au rail médian ou au couplage CA, cela dépend du système. Si vous avez déjà 3 états du pilote, il doit être mis à la terre pour maintenir des niveaux logiques valides. Sinon, la terminaison sur le rail central charge moins le conducteur.
Neil_UK
@RogerRowland temps de montée en secondes, c vitesse de la lumière en m / seconde, donc le temps de montée * c en mètres, / 10 est un peu ondulé pour `` une fraction insignifiante du temps de montée présente simulé de manière simulée sur la ligne de signal ''
Neil_UK
Merci encore Neil, c'est vraiment utile! Je pense que je gagnerais à effectuer quelques expérimentations pour m'assurer que ce que vous avez dit s'enfonce - peut-être qu'un week-end pluvieux sera bien dépensé.
Roger Rowland
3

Le problème que je vois avec la topologie de boucle est qu'il est difficile de placer correctement les terminateurs pour supprimer les réflexions. cela n'a pas beaucoup d'importance à 8 MHz, mais pourrait être devenu un problème à des fréquences plus élevées ou avec des lignes plus longues.

Le seul cas où je vois où les lignes pointillées pourraient aider, c'est quand le délai de propagation du maître à SLAVE 6était inacceptable. Dans ce cas, vous devez connecter les lignes pointillées, mais rompre la boucle quelque part au milieu (disons entre SLAVE 3et SLAVE 4) et terminer chaque branche indépendamment.

Dmitry Grigoryev
la source
2

Avec des signaux rapides ou de longues lignes, la réflexion du signal devient un problème. Dans ces cas, vous devez terminer correctement la ligne en mettant une résistance reliant l'extrémité de la ligne et la masse (pas le début de la ligne). La terminaison fait que la ligne "semble électriquement infinie", donc le signal ne revient pas. La terminaison a parfois également besoin d'éléments LC pour contrer l'impédance réactive.

Cependant, pour votre cas, la terminaison n'est pas nécessaire (ligne courte pour votre vitesse de signal, en supposant que vous n'opérez pas dans un environnement électriquement bruyant). Voilà pourquoi vous ne voyez aucune différence. C'est également une mauvaise pratique de conception de boucler votre signal. Cela fait boucler le signal, introduisant du bruit dans votre circuit (et il boucle dans les deux directions). Il facilite également la capture du bruit RF dans vos lignes.

De plus, il est généralement mauvais de boucler les lignes de terre et d'alimentation. Le bruit de commutation numérique et les boucles de masse sont également présents et peuvent avoir un impact dramatique sur les circuits analogiques. Si nécessaire, vous pouvez utiliser des fourches Y (pas de connexion à l'extrémité) pour réduire la chute de tension. Si cela ne suffit pas, utilisez des traces plus larges (trace plus large -> moins de résistance -> moins de chute de tension).

Ronan Paixão
la source