Un microcontrôleur activé CAN est-il suffisant pour piloter un bus CAN?

45

De nos jours, un certain nombre de modules CAN sont intégrés aux microcontrôleurs. Le PIC18F2480 en est un exemple. Ce microcontrôleur (avec CAN intégré) est-il capable de piloter un bus CAN seul ou un émetteur-récepteur / contrôleur CAN externe est-il nécessaire?

Je pense que CAN a à la fois une couche logicielle et matérielle. Par leur apparence, ces microcontrôleurs activés par CAN semblent ne posséder que le logiciel, mais cela ne dit pas qu’ils peuvent ou non piloter le bus CAN tels quels.

Je souhaite connecter plus de six microcontrôleurs via un bus CAN et souhaiterais savoir si j'ai besoin d'un émetteur-récepteur pour tous ou si le composant intégré peut gérer la communication d'un point de vue logiciel et matériel.

Supposons que j'aurai les résistances de terminaison nécessaires et d'autres petits composants discrets (capuchons, résistances, etc.)

efox29
la source

Réponses:

55

C'est une très bonne question. En règle générale, CAN nécessite un émetteur-récepteur pour chaque nœud:

entrez la description de l'image ici

Cependant, dans certaines circonstances, vous pouvez réellement vous en sortir sans émetteur-récepteur! Ces circonstances sont:

  • Longueur courte du bus (beaucoup moins de 1 mètre)
  • De préférence, tous les microcontrôleurs se trouvent sur le même circuit imprimé ou sur une pile de circuits imprimés.
  • Le débit est faible
  • L'environnement n'est pas trop bruyant électriquement

Ce ne sont pas des règles difficiles. Vous pourriez vous en sortir avec un débit maximum (1 Mo / s) si vous avez un bus très court (10 cm).

Pour ce faire, vous devez en savoir un peu plus sur ce que fait l’émetteur-récepteur. Comme la plupart des émetteurs-récepteurs, ils peuvent émettre un signal fort ou faible sur le bus (représentant 1 et 0), mais le 0 peut dominer un 1. IE Si deux émetteurs-récepteurs essaient de parler en même temps, l'un dit 1 et l'autre dit 0, alors le 0 va gagner. Nous pouvons recréer la même situation simplement en utilisant des diodes:

CAN simple

Voir la note d’application Seimens AP2921: Communication embarquée via CAN sans émetteur-récepteur

Mais voici quelque chose d'encore plus intéressant: le PIC prend en charge le matériel pour CAN sans émetteur-récepteur!

Registre CIOCON

Vous pouvez configurer la broche CAN TX pour qu’elle se comporte exactement de la même manière que l’émetteur-récepteur. Cela signifie que vous pouvez câbler le bus CAN sans les diodes. Vous aurez toujours besoin de la résistance cependant.

CAN plus simple

Rocketmagnet
la source
2
Réponse absolument fantastique. J'apprécie beaucoup le temps que vous avez pris pour répondre. Je devrais peut-être aller avec l’émetteur-récepteur car il pourrait y avoir beaucoup de bruit électrique, et bien que tout soit logé dans une "boîte", il sera placé sur plusieurs circuits imprimés. Merci encore!
efox29
@ efox29 - De rien. Il vaut certainement mieux utiliser des émetteurs-récepteurs si vous le pouvez.
Rocketmagnet
Cette configuration sans émetteur-récepteur était nouvelle pour moi et semblait très intéressante pour la mise en place d’un simple réseau de contrôleurs sur de longues distances. Agréable!
0x6d64
@ 0x6d64 - Si vous en avez besoin longtemps, n'oubliez pas d'utiliser un débit binaire faible et une vitesse de balayage limite les contours.
Rocketmagnet
1
Notez que cela fonctionnera si tous les périphériques sur le bus utilisent la même configuration et utilisent un bus CAN à un seul fil. Si vous souhaitez vous connecter à tout ce qui est en réalité "réel" ISO CAN et utilise un bus à deux fils, ce mode ne fonctionnera pas.
Jon Watte
10

La famille de microcontrôleurs LPC11Cxx (basée sur ARM Cortex-M0) comprend l’émetteur-récepteur CAN sur puce.

timrorr
la source
3
Oui. Droite. OP demande pour PIC18. Ce n'est pas vraiment utile.
Federico Russo
4
@ Federico Russo donne un exemple avec le PIC18, et timrorr a donné une solution avec pilote intégré. Qu'est-ce qui ne va pas avec ça?
clabacchio
8
@ FedericoRusso - Ne soyez pas si anale. Cette réponse est très intéressante.
Rocketmagnet
1
@Rocketmagnet: Alors Q: "Comment puis-je faire X?" A: "Faites Y." est ok après tout? (D'après votre propre réponse)
Federico Russo le
2
@ FedericoRusso - Si la question a été bien répondue à la satisfaction du PO, et que quelqu'un mentionne des informations connexes intéressantes, bien sûr, pourquoi pas?
Rocketmagnet
9

Oui, vous avez besoin d'un transeiver. Les broches CAN sur le micro sont reçues et transmises. Le bus CAN lui-même utilise une paire torsadée avec signalisation différentielle sur deux fils appelés HIGH et LOW.

L’un des travaux de l’émetteur-récepteur consiste à transformer le niveau logique que vous présentez sur la broche TX en signaux de bus CAN:

  • un '1' logique est représenté par l'absence de pilotage du bus, de sorte que les lignes HIGH et LOW "flottent" à 2,5V - appelées "bits récessifs" dans la terminologie CAN.
  • un "0" logique est représenté par la commande des lignes HIGH-HIGH et LOW-low - appelée "bit dominant", car elle annule les bits récessifs en cours de transmission.

L'autre consiste à prendre ce qui est sur le bus et à le transformer en niveau logique pour le renvoyer de la broche RX à votre micro.

Martin Thompson
la source
8

Vous avez besoin d’une puce d’émetteur-récepteur CAN entre la CPU et le bus CAN. Découvrez le MCP2551.

Mise à jour du 17 août 2017:

Je suis présentement à la conférence Microchip Masters. Les ingénieurs de Microchip m'ont bien dit que l'une des nouvelles pièces résultant de l'acquisition d'Atmel est à la fois moins chère et meilleure que la MCP2551.

Olin Lathrop
la source
1
Microchip recommande le 2561 au lieu du 2551 maintenant. NXP possède également des puces CAN intéressantes. La plupart des MCU ont besoin d'un émetteur-récepteur.
Ludwig Schreier
2

Les appareils analogiques ont un exemple de circuit émetteur-récepteur CAN utilisant un amplificateur différentiel.
Je n'ai pas essayé cela, je suis juste au courant. Aussi intéressé si cela pourrait être mis en œuvre avec un op-amp

circuit analogique

Les avantages de l’émetteur-récepteur IC CAN dédié sont qu’ils gèrent l’arbitrage pour vous et que vous n’avez pas à vous soucier d’interférer avec le bus. Si vous ne faites qu'observer le bus et que l'environnement n'est pas critique, le circuit peut fonctionner correctement. Bien que le mcp2551 soit très populaire, il existe de nombreuses options pour les puces d'interface.

Une nouvelle évolution concerne les puces de type System Base, qui incluent la régulation de la tension, les modes de puissance et la protection ESD du bus.

Comme timorr l’a dit plus haut, le LCP11C24 de NXP est unique en ce sens que le processeur inclut un émetteur-récepteur CAN. Un tableau de démonstration avec ceci est seulement 19 $. Une autre solution peu coûteuse consiste à utiliser la carte de démonstration Cypress PSoC5 à 9,38 $, la CY8CKIT-059. Le PSoC5 n’a pas de contrôleur CAN; cela va plus loin: le contrôleur est implémenté dans les blocs universels de type FPGA. Les registres du contrôleur sont configurés via l'interface graphique de l'EDI, ce qui facilite le filtrage et la R & D.

Une méthode clé que j'ai trouvée lors de la consultation de feuilles de données est que le mcu TTL est étiqueté CAN-Tx et CAN-Rx, tandis que les lignes de données des émetteurs-récepteurs sur le bus sont toujours étiquetées CAN-H et CAN-L. Je n'aime pas les schémas de l'autre réponse où TxRx est montré connecté au bus; cela va à l’encontre des conventions et contribue à la confusion.

Chris K
la source