Estoy usando una MCU de 16 bits, PIC24HJ64GP504 , para escribir una aplicación basada en CAN . Básicamente, es la comunicación entre mi tarjeta y otro nodo lo que continuamente continúa enviando datos a mi tarjeta utilizando CAN a 1 Mbit / s. Estoy configurando el módulo ECAN en mi PIC24 para que funcione a 1 Mbit / s. He escrito el código de tal manera que durante los primeros 10 ms, el módulo ECAN aceptará todos los mensajes que vienen del otro lado, y después de eso, he reconfigurado el módulo ECAN para aceptar solo aquellos mensajes con ID de mensaje 0x13.
Ahora viene el problema. El otro nodo y mi placa se encienden en el mismo instante. El otro nodo comienza a transmitir mensajes después de 40 ms o menos después del encendido. Pero no puedo recibir ningún mensaje de él en mi tablero. Ahora, si enciendo mi tarjeta primero, le doy algo de tiempo para que reconfigure el módulo ECAN con nuevos filtros y se calme y luego encienda el otro nodo, entonces todo funciona perfectamente.
Ahora, la parte más extraña. Si tengo un analizador de bus CAN conectado entre mi placa y el otro nodo e incluso si enciendo ambos nodos al mismo tiempo, todo funciona bien ... no hay necesidad de encender mi primero el tablero He intentado esto con tres analizadores de bus diferentes de diferentes fabricantes y obtuve los mismos resultados.
Para mí, parece que durante la reconfiguración del módulo ECAN, toma un tiempo para establecerse. Y con la introducción del analizador de bus en el bus, esta vez se corta de modo que todo funciona perfectamente. Pero no estoy seguro de cuál es exactamente el problema.
He estado luchando con este problema durante los últimos siete días.
PS: Hoy comprobé con un alcance y descubrí que si el otro nodo comienza a transmitir después de 170 ms después del encendido, todo funciona bien. Antes de eso, mi dispositivo no recibirá ningún mensaje a menos que el analizador de bus esté conectado. La peor parte es que no puedo retrasar la transmisión del otro nodo, el firmware de ese nodo es propietario.
También leí en un foro hoy que CAN necesita la resistencia de 120 en el nodo para que funcione (aunque mi nodo no tiene uno y funciona bien, siempre y cuando haya un tiempo para establecerse después de la reconfiguración). Sospecho que la introducción del analizador de bus de alguna manera cambia algunos parámetros eléctricos de la red, de modo que el tiempo que tarda mi nodo en establecerse después de la reconfiguración se reduce. Pero no estoy seguro ... :(