Quelles sont les préoccupations de conception pour la communication SPI hors carte?

8

Aperçu:

Je communique entre 3 cartes PCB personnalisées avec dspic33 sur eux en utilisant SPI. J'ai un maître et 2 esclaves, mais j'envoie aux deux esclaves les mêmes données (et je les laisse choisir à quoi prêter attention).

Configuration materielle:

Les deux esclaves ont des contrôleurs de moteur BLDC intégrés et le maître contrôle ces contrôleurs de moteur via SPI. Les fils sont acheminés à environ 3 pieds du maître à chaque esclave et les en-têtes sont des en-têtes SAMTECH de pas standard de 1 ". Chaque contrôleur de moteur a son propre régulateur de 3,3 volts qui exécute l'électronique dsPIC / LV. J'utilise un régulateur de contrôleur de moteur (permet de l'appeler A) pour alimenter également le SPI maître DSPIC. Pour l'autre contrôleur de moteur (permet de l'appeler B), je lance simplement les lignes SPI et la masse du maître. Le SPI clk fonctionne à 100 KHz

Arriver au point (enfin):

Sans aucun moteur en marche, tout fonctionne bien, toutes les données transitent comme prévu pour les deux esclaves. Cependant, lorsque je démarre les moteurs, Bslave n'obtient plus les données correctes. Il ramasse des horloges supplémentaires ou les fait tomber, je suppose que faire pour le bruit supplémentaire. En tout état de cause, ses sommes de contrôle commencent à échouer. Aslave fonctionne comme un champion quoi qu'il arrive.

1) Vous attendriez-vous à ce que tous ces appareils doivent fonctionner avec la même source de 3,3 volts? Si oui, pouvez-vous me convaincre en parlant de la boucle d'inductance plus longue et de la magie noire comme celle-ci.

2) Avez-vous une sorte de règle générale sur la vitesse à laquelle je peux m'attendre à pouvoir exécuter le SPI clk et à réussir avec une configuration matérielle telle que ci-dessus?

Mat
la source
La simulation est nécessaire pour estimer la vitesse à laquelle l'horloge pourra fonctionner. En supposant que vous ayez des planches à double ou simple couche, une bonne règle de base est de router une trace au sol ou un plan de cuivre au sol (sur la couche opposée) sous ou à côté des lignes SPI afin de réduire le bruit couplé dans les traces.
Steinar

Réponses:

5

J'ai exécuté SPI (horloge 2 MHz) à environ 5 m d'une boîte à une autre et je n'ai pas hésité à concevoir l'horloge et les données pour qu'elles soient une sortie équilibrée. Le câble (personnalisé) entre les deux utilisait également une paire torsadée et un écran sur les données et l'horloge.

J'ai également envoyé une alimentation isolée à la boîte distante via des convertisseurs cc-cc. Je n'ai pas eu assez de temps pour me tromper, donc ma solution était peut-être exagérée mais bon, ça a marché. Mon raisonnement derrière cette décision est que je ne voulais pas que des pics de «consommation actuelle» descendent les écrans de la paire torsadée. Les écrans n'étaient pas connectés à la masse à l'extrémité d'envoi du PC. Traitez les signaux numériques comme de précieux signaux analogiques pour obtenir les meilleures performances - ayez toujours votre écran terminé à l'extrémité de réception et si vous devez (pour une raison quelconque) terminer à contrecœur (également) à l'extrémité d'envoi.

Il s'agissait de transmettre 128 canaux de signaux analogiques à faible vitesse à une boîte de dérivation à partir d'un PC. Je soupçonne que si j'en avais besoin, je pourrais le faire fonctionner à une horloge de 20 MHz.

Andy aka
la source
Lorsque vous dites «écran», voulez-vous dire «blindage» lorsque vous vous référez au câble personnalisé?
JYelton
1
@JYelton au Royaume-Uni, cela s'appelle écran. Dans quel pays es-tu?
Andy aka
Je suis aux USA. L'un de mes meilleurs amis est britannique, nous avons donc souvent des discussions inhabituelles sur le choix des mots. :) Un "écran" pour moi est soit un écran ou un moniteur, soit le tissu en maille qui empêche les mouches de sortir de la maison lorsque la fenêtre est ouverte.
JYelton
@JYelton. Aha un tissu maillé qui garde les choses à l'extérieur. Cela ressemble à un écran pour moi LOL
Andy aka
Choisi comme réponse parce que c'est la seule réponse où 1) et 2) ont été abordés. Bien que, comme beaucoup l'ont suggéré, si je devais repenser la carte, je changerais probablement les protocoles au lieu de faire un signal différentiel. Je crois cependant que cela fonctionnerait. Dans ce cas, j'utilise simplement SPI car il était facilement disponible sur mon prototype.
Matt
5

SPI n'est pas différent de toute autre interface électrique. Faites attention aux problèmes d'intégrité du signal habituels (blindage, zone de boucle, impédance, terminaison du signal, etc.) et vous pouvez l'exécuter à une distance raisonnable. Quelle est une distance raisonnable, cela dépend de ce que vous en faites et de la façon dont vous pouvez contrôler les différents facteurs.

Pouvez-vous l'exécuter sur 3 pieds? Certainement. Devrais-tu? Eh bien, il y a de meilleures choses à utiliser. Comme d'autres l'ont souligné, il existe un RS-4xx qui pourrait bien fonctionner. Vous pouvez également exécuter SPI, mais utilisez la signalisation différentielle sur le câble comme RS-4xx. Cela consommera plus de fils, mais ce sont les ruptures. Vous pouvez également faire un RS-485 normal, en utilisant un UART et similaire.

Personnellement, j'ai couru SPI sur des câbles de 1 pied, à l'intérieur d'un châssis, à des taux allant jusqu'à 32 MHz sans aucun problème. J'ai également exécuté I2C sur 4 pieds à 100 KHz dans un environnement EMI élevé et SPI est bien meilleur que I2C - donc cela peut être fait. Mais si vous ne faites pas attention aux détails, vous pouvez facilement rencontrer des problèmes. Mais honnêtement, vous devez faire attention aux détails indépendamment de ce que vous utilisez.


la source
De nombreuses interfaces comme RS232 sont relativement à l'abri de choses comme la sonnerie et le dépassement, à condition que ces effets résultant d'une transition de ligne soient résolus en un demi-temps. Même si une ligne ne peut pas prendre en charge des débits en bauds élevés, ralentir le débit en bauds sera utile. En revanche, si des choses comme la sonnerie causent des problèmes avec SPI à n'importe quelle vitesse, le ralentir peut ne pas aider à moins que l'on puisse réduire la pente des transitions de ligne.
supercat
C'est une bonne réponse, en particulier le nombre de systèmes que vous avez mis en œuvre. Je pense que je vais essayer des résistances série du côté conducteur pour voir si cela aide. Cependant, j'ai peur que le bruit cause des horloges supplémentaires ... donc dans ce cas, cela peut ne pas aider.
Matt
5

Considérez soigneusement votre schéma de mise à la terre. Protégez les lignes de données, si cela vous aide, et mettez correctement le blindage à la terre. N'exécutez pas de données et d'horloge sur la même paire torsadée. Utilisez une isolation galvanique si nécessaire. À part cela, il n'y a pas de règles générales que je connaisse.

SPI a été conçu pour (1) la communication à courte portée, généralement dans un PCB et (2) dans l'environnement avec peu d'EMI. Peut-être, les seuls bus qui fonctionnent moins bien que SPI en présence d'EMI sont I 2 C et 1 fil. Il existe des bus, qui ont été conçus pour la communication à longue portée en présence d'EMI (RS-485, CAN, Ethernet).

Il est possible d'étendre et de durcir le SPI. Voici une note d'application , qui montre un bus SPI avec des lignes différentielles.

Nick Alexeev
la source
Je vais essayer de protéger les lignes. En ce qui concerne l'isolement galvanique, lorsque je ne connecte pas les masses, le dispositif esclave n'enregistre jamais aucune des horloges envoyées par le maître.
Matt
1

Il existe plusieurs façons de minimiser les effets du bruit sur vos lignes de signal. Le moyen le plus simple consiste à acheminer un plan de cuivre ou une trace de cuivre adjacente à vos traces de signal. Cela minimise l'inductance des traces et de la zone de boucle.

À haute fréquence, les courants de retour aiment parcourir un chemin de moindre impédance adjacent aux lignes de signaux elles-mêmes. Je suppose que vous avez une mise à la terre commune entre vos circuits, mais cela peut causer des problèmes de signalisation à haute fréquence si votre mise à la terre commune est simplement une connexion de mise à la terre "d'alimentation" entre les circuits. Cela provoquera une très grande zone de boucle pour les courants de signal qui peut permettre une grande injection de bruit en raison du couplage magnétique parasite.

Si vous le pouvez, connectez une connexion de terre supplémentaire entre les terres adjacentes aux lignes de signal SPI en plus de garder un plan de masse en cuivre ou une trace acheminée à côté des lignes à l'intérieur des cartes. Cela peut faire toute la différence dans la sensibilité de votre circuit aux moteurs.

Steinar
la source
Je ne comprends pas l'expression "entre les terrains adjacents aux lignes de signal SPI". Plus précisément, le mot adjacent n'est pas clair pour moi.
Matt