Soy nuevo en CAN y actualmente tengo problemas con una configuración.
Laimagenmuestracómomisdispositivosestánconectadosentresí.Estoyusandoelpaquete
ip link set can0 type can bitrate 125000 //This one registers an interface for can0 and sets the bit rate to 125000 bit/s.
ifconfig can0 up //Switches on the interface
Al inicio, las ID de ambos dispositivos están completamente nulas. Ahora, en uno de los dispositivos, enciendo el estado de escucha, que es:
candump can0
En el otro, envío un mensaje, algo como esto:
cansend 123#0x01 0x02 0x30 //123 specifies the ID, after "#" comes the data
Ahora, cuando esto sucede, la interfaz del remitente pasa de activo por error (estado normal) a error pasivo (estado de error). El "receptor" no recibe nada en absoluto; se mantiene en estado de error activo. No se procesan ni detectan mensajes, el registro está claro ( ip -d -s link show can0
) y en el osciloscopio puedo ver la señal de diferencia, y el remitente envía el mensaje periódicamente, sin parar.
¿Tal vez está esperando una respuesta? No sé si es el mensaje completo o solo una fracción de él, pero seguro que cambia con los datos dados, así que supongo que es el mensaje completo. Y después de eso, si trato de enviar otro mensaje con datos diferentes, el programa simplemente lo carga en un búfer (lo sé porque después de 10 nuevos cansends, escribe que el búfer está lleno) y continúa transmitiendo El mismo mensaje antiguo. Así que tengo que escribir canconfig stop
- > canconfig start
para reiniciar la interfaz en modo de error activo.
Estoy seguro de que estoy arruinando algo fundamental, pero no puedo resolverlo.
¿Cómo puedo solucionar este problema? ¿Podría tratarse de un problema de software o hardware, o tal vez de ambos?