Un microcontrollore abilitato CAN è sufficiente per pilotare un bus CAN?


45

Al giorno d'oggi ci sono un certo numero di moduli CAN integrati nei microcontrollori. Il PIC18F2480 ne è un esempio. Quel microcontrollore (con CAN integrato) è in grado di pilotare un bus CAN da solo o è necessario un ricetrasmettitore / controller CAN esterno?

Credo che CAN abbia sia un livello software che hardware e dal suo aspetto questi microcontrollori abilitati CAN sembrano avere solo il software, ma non afferma che può o non può guidare il bus CAN così com'è.

Sto cercando di collegare più di sei microcontrollori tramite un bus CAN e vorrei sapere se ho bisogno di un ricetrasmettitore su tutti loro o se le cose integrate possono gestire la comunicazione da una prospettiva software e hardware.

Supponiamo che avrò resistenze di terminazione necessarie e altri piccoli componenti discreti (cappucci, resistori, ecc.)

Risposte:


55

Questa è una molto buona domanda. Come regola generale, CAN richiede un ricetrasmettitore per ogni nodo:

inserisci qui la descrizione dell'immagine

Tuttavia, in determinate circostanze, puoi effettivamente scappare senza ricetrasmettitori! Tali circostanze sono:

  • Breve lunghezza del bus (molto meno di 1 metro)
  • Preferibilmente tutti i microcontrollori si trovano sullo stesso PCB o stack di PCB.
  • Il bit rate è basso
  • L'ambiente non è troppo elettricamente rumoroso

Queste non sono regole rigide. Potresti cavartela con il bit rate massimo (1 MB / s) se hai un bus davvero corto (10 cm).

Per raggiungere questo obiettivo, è necessario conoscere un po 'ciò che fa il ricetrasmettitore. Come la maggior parte dei ricetrasmettitori, possono emettere un massimo o un minimo sul bus (che rappresenta 1 e 0), ma lo 0 può dominare un 1. IE Se due ricetrasmettitori provano a parlare contemporaneamente e uno dice 1 e l'altro sta dicendo 0, quindi lo 0 vincerà. Possiamo ricreare la stessa situazione semplicemente usando i diodi:

CAN semplice

Vedere la nota applicativa Seimens AP2921: Comunicazione a bordo via CAN senza ricetrasmettitore

Ma ecco qualcosa di ancora più interessante: il PIC in realtà ha il supporto hardware per CAN transceiverless!

Registro CIOCON

È possibile configurare il pin CAN TX in modo che si comporti esattamente allo stesso modo del ricetrasmettitore. Ciò significa che è possibile collegare il bus CAN senza i diodi. Avrai comunque bisogno del resistore.

CAN più semplice


2
Risposta assolutamente fantastica. Apprezzo molto il tempo impiegato per rispondere. Potrei dover andare con il ricetrasmettitore perché potrebbe esserci un sacco di rumore elettrico, e anche se tutto sarà alloggiato in una "scatola", saranno su più PCB. Grazie ancora!
efox29,

@ efox29 - Prego. È sicuramente meglio andare con i ricetrasmettitori, se possibile.
Rocketmagnet,

Quella configurazione senza ricetrasmettitore era nuova per me e sembra molto interessante per l'installazione di una semplice rete di controller su lunghe distanze. Bello!
0x6d64

@ 0x6d64 - Se ne hai bisogno a lungo, non dimenticare di utilizzare una velocità in bit bassa e la velocità di risposta limita i bordi.
Rocketmagnet,

1
Questo funzionerà se tutti i dispositivi sul bus usano la stessa configurazione e usano un bus CAN a filo singolo. Se si desidera interfacciarsi con qualsiasi altra cosa che sia effettivamente "reale" ISO CAN e utilizzi un bus a due fili, questa modalità non funzionerà.
Jon Watte,

10

La famiglia di microcontrollori LPC11Cxx (basata su ARM Cortex-M0) include il ricetrasmettitore CAN su chip.


3
Sì. Giusto. OP chiede informazioni su PIC18. Questo non è davvero utile.
Federico Russo,

4
@FedericoRusso fornisce un esempio con PIC18 e timrorr ha fornito una soluzione con driver integrato. Cosa c'è che non va?
clabacchio

8
@FedericoRusso - Non essere così anale. Questa risposta è molto interessante
Rocketmagnet,

1
@Rocketmagnet: Quindi Q: "Come posso fare X?" A: "Do Y." va bene dopo tutto? (Dalla tua risposta)
Federico Russo,

2
@FedericoRusso - Se alla domanda è stata data una risposta soddisfacente con soddisfazione del PO e qualcuno menziona alcune informazioni correlate interessanti, perché no?
Rocketmagnet,

9

Sì, hai bisogno di un tranceiver. I pin CAN sul micro vengono ricevuti e trasmessi. Il bus CAN stesso utilizza una coppia twistata con segnalazione differenziale su due fili chiamati HIGH e LOW.

Uno dei compiti del ricetrasmettitore è quello di prendere il livello logico presente sul pin TX e trasformarlo in segnali del bus CAN:

  • un '1' logico è rappresentato dal fatto di non guidare il bus, quindi le linee HIGH e LOW "fluttuano" a 2,5 V - chiamato "bit recessivo" nella terminologia CAN.
  • uno '0' logico è rappresentato guidando la linea ALTA in alto e la linea BASSA in basso - chiamata "bit dominante" poiché sovrascriverà tutti i bit recessivi trasmessi.

L'altro è quello di prendere ciò che è sul bus e trasformarlo in un livello logico per rispedirlo dal pin RX al micro.


8

È necessario un chip ricetrasmettitore CAN tra la CPU e il bus CAN. Dai un'occhiata all'MCP2551.

Aggiornamento 17 agosto 2017:

Sono alla conferenza Microchip Masters in questo momento. Gli ingegneri Microchip mi hanno detto chiaramente che una delle nuove parti risultanti dall'acquisizione di Atmel è sia più economica che migliore dell'MCP2551.


1
Microchip sta raccomandando il 2561 rispetto al 2551 ora. NXP ha anche alcuni interessanti chip CAN. La maggior parte degli MCU necessita di un ricetrasmettitore.
Ludwig Schreier,

2

I dispositivi analogici hanno un esempio di circuito ricetrasmettitore CAN che utilizza un amplificatore differenziale.
Non l'ho provato, ne sono consapevole. Interessato anche se potrebbe essere implementato con un amplificatore operazionale

circuito analogico

I vantaggi dell'utilizzo del ricetrasmettitore CAN IC dedicato sono che gestiranno l'arbitrato per te e non devi preoccuparti di interferire con il bus. Se stai solo osservando il bus e non è un ambiente critico per i guasti, il circuito potrebbe andare bene. Mentre il mcp2551 è molto popolare, ci sono molte opzioni per i chip di interfaccia.

Una nuova evoluzione sono i chip di tipo System Base che includono regolazione della tensione, modalità di alimentazione e protezione ESD dal bus.

Come Timorr ha detto sopra, LCP11C24 di NXP è unico in quanto il processore include il ricetrasmettitore CAN. Una scheda demo con questo costa solo $ 19. Un'altra soluzione a basso costo è quella di utilizzare la scheda demo Cypress PSoC5 da $ 9,38, la CY8CKIT-059. PSoC5 non ha un controller CAN; va oltre: il controller è implementato nei blocchi universali simili a FPGA. I registri del controller sono configurati tramite la GUI dell'IDE, rendendo il filtro e la ricerca e sviluppo abbastanza facili.

Un metodo chiave che ho trovato esaminando le schede tecniche è che il mcu TTL è etichettato CAN-Tx e CAN-Rx mentre le linee dati dei ricetrasmettitori sul bus sono sempre etichettate CAN-H e CAN-L. Non mi piacciono i diagrammi nell'altra risposta in cui TxRx sono mostrati collegati al bus; questo va contro le convenzioni e contribuisce alla confusione.

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.