53 votos

¿Es suficiente un microcontrolador habilitado para CAN para manejar un bus CAN?

Hoy en día existen varios módulos CAN integrados en los microcontroladores. El PIC18F2480 es un ejemplo de ello. ¿Ese microcontrolador (con CAN incorporado) es capaz de conducir un bus CAN por sí mismo o es necesario un transceptor/controlador CAN externo?

Creo que CAN tiene una capa de software y otra de hardware, y por lo que parece estos microcontroladores habilitados para CAN parecen tener sólo el software, pero no dice que pueda o no manejar el bus CAN tal cual.

Estoy buscando conectar más de seis microcontroladores a través de un bus CAN y me gustaría saber si necesito un transceptor en todos ellos o si el material incorporado puede manejar la comunicación desde una perspectiva de software y hardware.

Supongamos que tendré las resistencias de terminación necesarias y otros pequeños componentes discretos (tapones, resistencias, etc.)

74voto

Armandas Puntos 552

Este es un très buena pregunta. Como regla general, CAN requiere un transceptor para cada nodo:

enter image description here

Sin embargo, en determinadas circunstancias, se puede prescindir de los transceptores. Esas circunstancias son:

  • Longitud de bus corta (mucho menos de 1 metro)
  • Preferiblemente, todos los microcontroladores están en la misma placa de circuito impreso, o en una pila de placas de circuito impreso.
  • La tasa de bits es baja
  • El entorno no es demasiado ruidoso desde el punto de vista eléctrico

No son reglas estrictas. Se puede llegar a la máxima tasa de bits (1MB/s) si se tiene un bus muy corto (10cm).

Para ello, hay que saber un poco lo que hace el transceptor. Como la mayoría de los transceptores, pueden emitir un alto o un bajo al bus (representando el 1 y el 0), pero el 0 puede dominar al 1. Es decir, si dos transceptores intentan hablar al mismo tiempo, y uno está diciendo 1 y el otro está diciendo 0, entonces el 0 ganará. Podemos recrear la misma situación utilizando simplemente diodos:

Simple CAN

Véase la nota de aplicación de Seimens AP2921: Comunicación a bordo mediante CAN sin transceptor

Pero aquí hay algo aún más interesante: ¡El PIC tiene soporte de hardware para CAN sin transceptor!

CIOCON Register

Puedes configurar el pin CAN TX para que se comporte exactamente igual que el transceptor. Esto significa que puedes cablear el bus CAN sin los diodos. Sin embargo, necesitarás la resistencia.

Simpler CAN

14voto

mahler Puntos 161

El LPC11Cxx (basados en ARM Cortex-M0) incluyen el transceptor CAN en el chip.

9voto

RelaXNow Puntos 1164

Se necesita un chip transceptor CAN entre la CPU y el bus CAN. Mira el MCP2551.

Actualización del 17 de agosto de 2017:

Estoy en la conferencia de Microchip Masters ahora mismo. Los ingenieros de Microchip me han dicho sin rodeos que uno de los nuevos componentes resultantes de la adquisición de Atmel es más barato y mejor que el MCP2551.

9voto

Martin Thompson Puntos 6509

Sí, necesitas un tranceiver. Los pines CAN del micro son de recepción y transmisión. El propio bus CAN utiliza un par trenzado con señalización diferencial en dos hilos llamados HIGH y LOW.

Uno de los trabajos del transceptor es tomar el nivel lógico que presentas en el pin TX y convertirlo en señales de bus CAN:

  • un '1' lógico se representa no conduciendo el bus, por lo que las líneas HIGH y LOW "flotan" a 2,5V - llamado "bit recesivo" en la terminología CAN.
  • un "0" lógico se representa poniendo la línea HIGH en alto y la línea LOW en bajo - llamado "bit dominante" ya que anulará cualquier bit recesivo que se transmita.

La otra es tomar lo que está en el bus, y convertirlo en un nivel lógico para enviarlo de vuelta desde el pin RX a tu micro.

3voto

Felix Puntos 91

Los dispositivos analógicos tienen un ejemplo de circuito transceptor CAN utilizando un amplificador diferencial.
No he probado esto, sólo soy consciente de ello. También me interesa si se puede implementar con un op-amp

analog's circuit

Las ventajas de usar un transceptor CAN dedicado es que ellos se encargarán del arbitraje por ti y no tienes que preocuparte de interferir con el bus. Si sólo estás observando el bus y no es un entorno crítico de fallos, el circuito puede estar bien. Aunque el mcp2551 es muy popular, hay muchas opciones de chips de interfaz.

Una nueva evolución son los chips de tipo System Base que incluyen regulación de tensión, modos de alimentación y protección ESD del bus.

Como dijo timorr más arriba, el LCP11C24 de NXP es único porque el procesador incluye un transceptor CAN. Una placa de demostración con esto es sólo $19. Another low cost solution is to use the $ 9.38 Placa de demostración del PSoC5 de Cypress, el CY8CKIT-059. El PSoC5 no tiene un controlador CAN; va más allá: el controlador está implementado en los bloques universales tipo FPGA. Los registros del controlador se configuran a través de la GUI del IDE, lo que hace que el filtrado y la I+D sean bastante fáciles.

Un método clave que he encontrado al leer las hojas de datos es que el TTL de la mcu está etiquetado como CAN-Tx y CAN-Rx mientras que las líneas de datos de los transceptores al bus siempre están etiquetadas como CAN-H y CAN-L. No me gustan los diagramas de la otra respuesta en los que los TxRx se muestran conectados al bus; esto va en contra de la convención y contribuye a la confusión.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X