Estoy intentando sin éxito realizar una comunicación de bus CAN entre un microcontrolador y el host (mi computadora). Mi pregunta no depende del microcontrolador, sino del bus CAN (CAN clásico).
Mi aplicación intenta enviar un marco cada uno (5 ms, 10 ms, 100 ms). Tengo un programador simple que ejecuta tareas donde llamo a la función can_write (HwObject, Frame) para escribir el marco en el bus.
Sin embargo, el primer fotograma vuelve a estar bien y se recibe en el host , pero después de eso (y para todos los fotogramas siguientes) la función vuelve a estar ocupada, y sigo viendo que el contador de errores aumenta sin que ninguna trama llegue al host. Finalmente, el nodo parece entrar en modo bus off.
Quiero saber cuáles son las principales razones para eso: estoy usando la misma velocidad de transmisión, 1 Mbit / s, en ambos lados, pero también probé con otros, pero sin éxito, para ver los resultados. He mirado alrededor de los registros para ver cuál podría ser el problema. Por ejemplo me sale:
- El bus detecta una solicitud de cancelación de transmisión.
- El canal entra en modo de parada después de que el bus esté apagado.
- El autobús está en modo pasivo.
- Se detectó un error de bus de canal.
- Se detectó una advertencia de error.
- Se detectó una sobrecarga.
- Se detectó un error de relleno de bits.
PSS: estoy siguiendo la norma AUTOSAR: la especificación CAN se puede encontrar en: enlace
Pero no puedo encontrar qué causa este problema. ¡Creo que se debe a una mala sincronización!