Alternatives à SPI grâce à EMI

24

Je fais actuellement un système composé d'un boîtier en plastique qui contient un MCU parlant à 7 ADC utilisant un SPI de 2 MHz sur des fils d'environ 5 cm de long.

MCU et ADC connectés par SPI

Le problème est que je suis préoccupé par EMI. Tout ce que j'ai lu suggère que tout type de signal numérique qui n'est pas en toute sécurité sur un PCB dans un châssis métallique mis à la terre rayonnera trop pour passer les tests EMI. Je suppose que cela inclurait également I2C.

Est-ce susceptible d'échouer aux tests EMI? Que puis-je faire à ce sujet?

Je cherche toutes sortes de réponses, y compris "Utiliser un bus / ADC différent", mais pas les réponses qui impliquent des changements mécaniques comme: "Mettez tous les ADC sur le même PCB" ou "Mettez le tout dans une boîte métallique" . Je suis particulièrement intéressé par les alternatives Low-EMI à SPI, y compris les bus différentiels.

Voici quelques informations pertinentes sur l'application. Veuillez me faire savoir si vous avez besoin de savoir plus de choses:

  • 6 fils vont à chaque carte ADC (Power, GND, CS, CLK, MOSI, MISO).
  • Les ADC sont actuellement MCP3208 (Microchip 8 canaux, 12 bits)
  • Je travaille dans une application qui manque désespérément d' espace, donc ajouter un blindage aux fils n'est pas vraiment une option.
  • Ce serait bien d'utiliser une sorte de bus différentiel (une ou deux paires uniquement), mais les seuls ADC avec communication différentielle semblent être des types LVDS multi-MSPS.
  • Le CAN est probablement trop lent et aussi assez volumineux pour une telle application à espace limité.
  • Fréquence d'échantillonnage: j'ai besoin d'échantillonner chaque canal à 1 kHz.

Ajoutée:

Juste pour donner une idée des contraintes d'espace:

Petit PCB avec MCP3202

Ici, vous pouvez voir l'un des PCB ADC. Celui-ci a en fait un MCP3202 au lieu d'un MCP3208, mais il est compatible (ish). C'est dans un package TSSOP 8. Le PCB mesure 11 mm x 13 mm. Le câble noir a un diamètre de 2 mm. Comme vous pouvez le voir, il n'y a même pas d'espace pour un connecteur et les fils sont soudés directement au PCB, puis mis en pot. L'absence de connecteur est due aux contraintes d'espace environnantes plutôt qu'aux contraintes d'espace PCB.

Rocketmagnet
la source
4
Comment le blindage des câbles peut-il être considéré comme impossible, mais le fait de doubler le nombre de fils (signalisation différentielle) peut être considéré comme pratique?
timrorr
Désolé, j'aurais dû être plus clair. Je voulais dire quelque chose comme CAN, qui est un différentiel à 2 fils. Il est évidemment impossible de doubler le nombre de fils. J'ai édité la question.
Rocketmagnet
1
Plus précisément, quel type de test / certification essayez-vous de réussir?
Joel B
1
@JoelB - Désolé, je suis un peu nouveau pour EMI, donc je ne suis pas vraiment sûr. Mais à un moment donné, nous devrons faire une sorte de test EMI. Probablement une sorte de test EMI normal / consommateur, s'il y a une telle chose.
Rocketmagnet
1
@Rocketmagnet, Ohh, ne vous méprenez pas que vous fabriquez une antenne très facilement. Il existe des méthodes de conception pour cela, il y va plus, mais si votre câble ne transporte aucune fréquence qu'un test EMI vérifie, vous devrez vous assurer de ne pas coupler d'autres bruits de fréquences plus élevées en provenance d'autres endroits out (ce qui est facile comme le dit la conception numérique à haute vitesse). Je voulais juste une meilleure idée de votre problème. J'aime beaucoup la question et elle a déjà obtenu mon +1
Kortuk

Réponses:

13

Les câbles SPI 2 MHz sur 5 cm ne sont pas énormes. Je fais beaucoup de 30 MHz SPI sur des câbles de 10 cm, en passant FCC Classe B et l'équivalent CE. L'essentiel est de s'assurer que vous disposez d'un bon câble (contrôlant le mieux possible la zone de boucle) et de terminer correctement vos signaux.

Vous contrôlez la zone de boucle en plaçant les signaux d'alimentation / GND quelque part au milieu du câble: les deux au milieu du connecteur, mais aussi au milieu du faisceau de fils. Normalement, vous auriez une puissance ou un GND par signal, mais comme il s'agit rarement d'une solution pratique, vous devez faire de votre mieux avec ce que vous avez. Assurez-vous également de placer un ou deux bouchons de découplage sur les PCB aux deux extrémités du câble.

Terminer correctement les signaux va être un peu délicat car vous n'avez pas d'impédance contrôlée sur votre câble. Ce que je ferais, c'est de mettre un filtre RC sur le PCB aux deux extrémités du câble. Le filtre RC aurait le C côté câble et le R côté puce. Au niveau du pilote de signal, je commencerais par un R d'environ 75 ohms et un C d'environ 1 nF. Au niveau du récepteur, le R serait d'environ 10 ohms et C toujours 1 nF. Une fois les prototypes construits, vous devez essayer différentes valeurs. Essentiellement, vous voulez des valeurs plus élevées pour R et C, mais pas si élevées que la chose cesse de fonctionner ou que les niveaux du signal sont trop atténués. Les bords de vos signaux devraient être très arrondis, mais il ne devrait pas y avoir de sonnerie et les horloges devraient être agréables dans la bande de transition du signal (généralement de 0,8 à 2,0 volts).

Une valeur limite d'au moins 3 nF est idéale pour la protection contre les décharges électrostatiques, mais cela pourrait ne pas être un problème dans votre application.


la source
Merci pour votre réponse. Oui, je suis à peu près sûr que l'impédance change à plusieurs points au fur et à mesure qu'elle passe de la carte au connecteur au câble, etc. De plus, les lignes CS, CLK et MOSI sont partagées entre tous les ADC. Cela fait-il une différence?
Rocketmagnet
@Rocketmagnet Les filtres RC vont essentiellement se terminer. C'est pourquoi les signaux vont avoir l'air très arrondis. Cela fera plusieurs choses pour vous, le plus important étant de rendre l'impédance moins critique. Vous devez rebuffer les signaux CS, CLK et MOSI afin qu'ils ne soient pas partagés entre les câbles. Parfois, cela n'est pas possible, le deuxième meilleur moyen (distant) consiste à utiliser une terminaison distincte pour chaque câble et non à partager la terminaison.
2

CAN est presque certainement votre meilleur pari dans ce type d'application. C'est différentiel et devrait en fait réduire le nombre de fils allant à chaque carte. Si vous échantillonnez sept puces, huit canaux par puce, douze bits par canal, cela représente 672 bits de données par temps d'échantillonnage. À des échantillons de 1 kHz, un taux de transfert de 1 Mbit, c'est 1000 bits par temps d'échantillonnage. Cela ne vous laisse pas beaucoup de place pour les frais généraux, vous pouvez donc envisager d'utiliser un microcontrôleur doté de deux contrôleurs CANbus distincts. (Microchip en fait plusieurs, j'utilise le dsPIC 30F6012a.) Divisez vos A / D en deux bus, avec votre microcontrôleur central sur les deux, et vous devriez avoir beaucoup de bande passante.

À l'autre extrémité, vous pourriez envisager de remplacer les convertisseurs A / N par des microcontrôleurs. dsPIC 30F4013 pourrait être un bon choix là-bas. 13 canaux A / N 12 bits, plus CANbus.

Alternativement, je pense que vous pouvez convertir SPI vers / depuis des protocoles de tension différentielle comme RS-485. Mais je n'en saurais pas assez pour commenter intelligemment.

Stephen Collings
la source
Merci pour votre réponse. J'ai envisagé CAN, mais, au final, je ne suis pas sûr qu'il y ait suffisamment d'espace pour les composants. S'il y avait de petits émetteurs-récepteurs CAN disponibles, cela pourrait être possible. Les plus petits que je peux trouver semblent être SOIC 8.
Rocketmagnet
2
!! Quand vous dites espace limité, vous le pensez! Vous pouvez vérifier cette réponse: electronics.stackexchange.com/a/30596/7523 Apparemment, vous POURRIEZ être en mesure de vous en sortir sans utiliser d'émetteur-récepteur dans cette circonstance. Je serais certainement intéressé de savoir si vous le pouvez!
Stephen Collings
3
Il h. Découvrez le nom de la réponse à laquelle vous avez lié.
Rocketmagnet
1
Alors cette chose que j'ai dit à propos de moi ne sachant pas assez pour commenter intelligemment? Ouais.
Stephen Collings