El bus CAN pasa por períodos de reenvío de mensajes continuamente

2

Tengo un problema por el que el módulo de bus CAN de mi microprocesador reenvía continuamente su último mensaje, aunque parece que mi monitor USB-CAN lo recibe correctamente en el otro extremo.

Estoy intentando implementar el J1939 protocolo de bus CAN en un Microchip DSPIC30F4013 (con un ISO1050). Encontré una biblioteca J1939 de Microchip para una familia de chips diferente (PIC18xx) y la porté para mi DSPIC30. Los únicos nodos en el bus son mi dispositivo bajo prueba y el monitor USB-CAN que estoy usando para la depuración. La mayoría de las veces he estado utilizando un adaptador de interfaz USB-CAN de Ginkgo de ViewTool; También he usado el CANalyst-II también. Tanto el monitor como mi DUT tienen resistencias de terminación de 120 ohmios.

Mi firmware tiene tres mensajes de comando que puede recibir y dos mensajes de estado que envía. Nunca he tenido un problema con el envío de los mensajes de comando desde el monitor CAN al DUT. Mi DUT siempre ha hecho lo que se supone que debe hacer al recibir ese comando, y en esos momentos nunca he notado ninguna locura en el autobús.

Sin embargo, el envío de un mensaje de estado, NO siempre se ha comportado correctamente. Los mensajes de estado se alternan cada dos segundos: %código%  En algún momento, se cumple una "condición" que hace que el módulo CAN reenvíe continuamente el último mensaje. La parte difícil es que no es predecible o confiable. A veces, se enciende de inmediato ... a veces se produce unos segundos más tarde ... a veces no ocurre durante minutos.

Una vez que me di cuenta de que tenía este problema, agregué algo de lógica de nivel de estado a mi disparador de 2 segundos. Ahora reviso el (los) registro (s) de estado / resultados de CAN para ver si el mensaje anterior terminó correctamente. De lo contrario, aborto manualmente y luego envío el siguiente mensaje. Esto es algo interesante porque ahora el aspecto de la operación es: send msgA, wait 2s, send msgB, wait 2s, send msgA, ... ...

La parte que más me confunde es cómo parece afectar solo un mensaje a la vez. Si se tratara de un problema de configuración del módulo, habría esperado que todos los mensajes enviados o recibidos se desarmaran.

    
pregunta Adam Head

1 respuesta

1

Todos los síntomas son consistentes con el monitor USB-CAN que funciona en modo de solo escucha (no participa activamente en el bus CAN). O no entender los mensajes de 29 bits, pero es poco probable (J1939 se enumera explícitamente ).

De la página 10 en el manual (empaquetado de forma extraña en un ZIP file), Interfaz USB-CAN Ginkgo VTG203B Manual del usuario v1.1 :

En la pestaña Dispositivo inicial , Modo de trabajo debe ser "Normal". Si es "Modo silencioso" (o simplemente "¿Silencioso"?) O quizás algunos de los modos de bucle invertido, eso explicaría lo que está observando.

    
respondido por el Peter Mortensen

Lea otras preguntas en las etiquetas