Diseño / definición de comunicación CAN entre dos o más dispositivos

1

Sé que sonará un poco novato, pero de hecho soy un principiante ... Necesito diseñar / definir una comunicación CAN entre dos dispositivos (uno usa un AT90CAN32 de Atmel y el otro aún no está definido), sin usar ningún protocolo específico (CANopen, J1939), sino simplemente una especie de "hecho por sí mismo" "protocolo. Primero, solo necesito hacer esto desde un punto de vista conceptual.

Mi pregunta es ¿qué tipo de cosas debo tener en cuenta?

Ya he definido un par de ID de CAN (por ejemplo, 0x1FFC) y qué tipo de datos se enviarán dentro de estos mensajes. Pero, ¿qué debo hacer a continuación? ¿Debo definir todo el ACK, la verificación de CRC, etc. "cosas" o está hecho por los controladores CAN en los dispositivos?

Lo siento si no me aclaré lo suficiente, pero no sé cómo explicar esto mejor ...

¡Gracias de antemano por tu ayuda!

    
pregunta jnota

2 respuestas

2

El protocolo CAN en sí mismo maneja la verificación de CRC y la comprobación de ACK para que no tenga que preocuparse por eso.

Primero debe definir las ID con respecto a la prioridad. En el bus CAN, cuanto más dominante tenga al principio de su identificación, más importante será su mensaje. De hecho, si dos nodos intentan enviar dos mensajes diferentes, por ejemplo, 0x1FFC y 0X0FFC, el segundo se enviará en primer lugar porque hay más bits dominantes al comienzo del ID.

A continuación, debe saber que puede enviar de 0 a 8 octetos de datos en cada mensaje.

En cuanto al protocolo aplicativo, es casi todo lo que necesitas ver.

Lo último, pero muy importante, es a nivel del conductor, es la repartición del segmento diferente.

El bit CAN se corta en Time Quantum (TQ) que necesita definir. Después de eso, los 4 segmentos son: el SINC (1TQ) el segmento de propagación (0 a 8 TQ) el segmento 1 (0 a 8 TQ) y el segmento 2 (0 a 8TQ). Encontrará en Ethernet cómo definir esos segmentos si no sabe cómo hacerlo.

El punto de muestra se encuentra entre el segmento 1 y el 2 y debe colocarlo alrededor del 75% del bit.

    
respondido por el damien
2

A. Elegir una velocidad de datos adecuada puede marcar la diferencia entre un sistema confiable y escamoso:

  1. Por lo general, existe una compensación entre la velocidad de comunicación máxima confiable y la longitud del cable / número de nodos.
  2. La terminación en cada extremo del autobús es importante.
  3. La impedancia del cable también es importante para una buena integridad de la señal.
  4. El filtrado EMC ayudará a la inmunidad al ruido externo, pero un filtrado excesivo o inadecuado afectará la integridad de la señal y la velocidad de datos máxima.
  5. El apantallamiento adecuado de los cables siempre ayuda.

Una vez que se haya corregido el diseño eléctrico, puede ajustar la velocidad de datos y los parámetros Tq: PropSeg, SyncSeg, etc. para obtener la mejor confiabilidad. Generalmente: si el diseño tiene relojes independientes para los nodos, entonces necesitará un SyncSeg más largo. Los cables más largos (más demora) requieren un PropSeg más largo. Algunos conjuntos de chips permiten muestrear una o tres veces en el DataSeg para brindar una mejor inmunidad al ruido.

B. También puede encontrar que los mensajes de varios nodos pueden aparecer fuera de la secuencia de orden de tiempo debido a la priorización. Esto puede o no ser relevante / importante para su aplicación.

C. Tenga cuidado con el código de controlador CAN que se entrega de forma gratuita por los vendedores de microcontroladores. Encontré tantos errores en el código del proveedor que terminé escribiendo mis propias rutinas de bajo nivel, lo cual fue algo bueno porque al hacerlo entendí muchas de las sutilezas de cómo funcionaba.

    
respondido por el AndyK

Lea otras preguntas en las etiquetas