Usando una MCU con controlador CAN incorporado vs. controlador CAN externo

1

Estoy planeando usar el microcontrolador Atmel ATSAMC21J18A en un proyecto de automatización que tiene un controlador CAN incorporado. La red de bus CAN puede contener 32 dispositivos, cada uno de los cuales genera paquetes de datos en intervalos de 1 segundo. Habrá 16 redes de bus CAN conectadas a un solo nodo de puerta de enlace que tiene una MCU NXP LPC1768 (Cortex M3).

  1. ¿Cuáles son los factores y parámetros que deben considerarse al decidir si usar el controlador CAN integrado o un controlador CAN externo?
  2. ¿Hay ventajas / desventajas / restricciones al usar el controlador CAN incorporado?
  3. Dado que el nodo de la puerta de enlace CAN manejará el tráfico de las 16 redes, ¿sería una buena idea usar un controlador CAN externo para evitar desbordamientos de búfer?

Tenga en cuenta que estoy planeando utilizar un transceptor CAN externo aislado.

    
pregunta ravihansa3000

3 respuestas

3
  1. Un controlador CAN externo es similar al controlador CAN interno, pero está conectado a través de un bus más lento (mayor latencia, menor velocidad de bits). No hay ninguna razón para usar un externo cuando tiene un controlador CAN capaz en chip (SAM C21):

    • Soporte para CAN-FD
    • Hasta 64 buffers de recepción dedicados y hasta 32 buffers de transmisión dedicados
    • Acceso directo a la memoria RAM de mensajes para la CPU
  2. Con algunos chips, el uso de los periféricos CAN reserva una parte de la SRAM. Pero no hay una desventaja real en el uso de una variante en el chip. Solo que, cuando necesite más de dos controladores, tendría sentido, desde el punto de vista del diseño de software, obtener muchos controladores externos. Pero tendrá una latencia adicional, ya que los cuadros no se asignarán a la memoria. El acceso directo a la memoria es una gran ventaja de CAN en chip con controladores de 32 bits.

  3. Si su puerta de enlace tiene que conectarse a 16 buses CAN independientes, sí. De lo contrario, si es solo un bus, no. El LPC1768 debe tener mucha memoria. Al ver su historia, tendrá un promedio de 512 mensajes por segundo . Lo que se puede lograr a 100 kbit / s.

El único problema con esto es que no puedes tener dos ID idénticas en un período corto, de lo contrario habrá una saturación en el cuadro de mensaje. Pero el protocolo de nivel superior que está utilizando ya debe tener reglas sobre el tiempo mínimo entre dos marcos de la misma ID.

Lo único que hay que buscar en el controlador en chip es el hardware FIFO . Si solo tiene una FIFO de hardware de tres profundidades, como en la mayoría de los controladores STM32, puede desbordar el búfer con una breve ráfaga de marcos con demasiada latencia de interrupción. Tendrá que agregar un software FIFO adicional en la parte superior.

Si la puerta de enlace es para conectarse a una PC, no reinvente la rueda. Obtén algo de Kvaser o IXXAT.

    
respondido por el Jeroen3
1
  

¿Cuáles son los factores y parámetros que deben considerarse al decidir si usar el controlador CAN incorporado o un controlador CAN externo?

En la mayoría de los casos esto es cosa del pasado, ya que en la actualidad hay muchas MCU con controladores incorporados. La única razón por la que usaría un controlador CAN externo es si su MCU no lo admite en el chip. Por ejemplo, si debe usar algún tipo de MCU especializada por otros motivos.

  

¿Hay ventajas / desventajas / restricciones al usar el controlador CAN incorporado?

Es superior al controlador externo, ya que obtiene un acceso de registro más rápido, sin interfaz general (sin necesidad de SPI, I2C, etc.) y sin componentes externos. Lista de materiales más barata, menos elementos que pueden romperse, menos problemas de EMI, etc., etc.

  

Dado que el nodo de la puerta de enlace CAN manejará el tráfico de las 16 redes, ¿sería una buena idea usar un controlador CAN externo para evitar desbordamientos de búfer?

Realmente no veo cómo se pueden conectar 16 redes de bus CAN diferentes a un nodo ... eso suena como un diseño de sistema sin sentido completo. ¿Está seguro de que no quiere decir 16 CAN nodos en una sola red? Debido a que no existe una forma sensata de construir ese sistema con una sola MCU convencional.

Suponiendo que te refieres a 16 nodos, debes considerar la capacidad del controlador CAN. En general, hay dos tipos: los simples que solo tienen un rx FIFO de búfer de una cierta cantidad de tramas CAN, y los "buzones" que tienen tanto FIFO como slots de buzones de tx / rx dedicados para mensajes con mayor prioridad. Si espera recibir muchos tipos diferentes de marcos CAN, debe elegir un controlador CAN con la funcionalidad de "buzón".

Su controlador CAN en particular parece tener la funcionalidad de buzón, por lo que debería ser bueno. "Hasta 64 buffers de recepción dedicados y hasta 32 buffers de transmisión dedicados"

    
respondido por el Lundin
0

Dado que la MCU que está utilizando no tiene 16 controladores CAN, deberá realizar una de las siguientes acciones:

  1. Use una MCU por bus y luego, de alguna manera, conecte en red.
  2. Conecte 16 controladores CAN externos a una sola MCU.
  3. Use un FPGA para implementar 16 controladores CAN en un chip.
  4. Use un multiplexor para cambiar su controlador CAN entre los 16 transceptores CAN que están conectados a los 16 buses CAN.
respondido por el Rocketmagnet

Lea otras preguntas en las etiquetas