La respuesta corta es que el nodo debe monitorear las líneas CAN para que estén inactivas durante un cierto tiempo antes de que intente transmitir. Por lo tanto, si otro nodo está transmitiendo, debe permanecer en silencio hasta que el otro nodo esté listo.
Un bus CAN se basa en la señalización diferencial. Las dos líneas, CAN-High (CAN +) y CAN-Low (CAN-), tienen el mismo potencial cuando el bus está inactivo. Para enviar bits, un transmisor CAN pone un voltaje diferencial en las líneas de aproximadamente 2 voltios.
Un transmisor CAN primero ve si el bus está inactivo y, si lo está, comienza a transmitir. Cómo funciona el arbitraje es que un transmisor monitorea el bus mientras está transmitiendo. La transmisión se realiza como se indicó anteriormente, ya sea manteniendo las dos líneas en el mismo potencial o en un potencial diferencial. Entonces, si el transmisor transmite un poco manteniendo las líneas en el mismo potencial (sic), pero ve que las dos líneas de transmisión tienen un potencial diferencial, eso significa que algún otro nodo está transmitiendo y el primer transmisor ha perdido el arbitraje. Entonces debe dejar de transmitir.
Cuando un nodo comienza a transmitir por primera vez, los bits transmitidos son los mismos hasta la dirección del nodo de transmisión que es obviamente diferente. Si dos nodos comienzan a transmitir juntos, se transmitirán juntos en sincronización hasta que se alcance la parte de la dirección. Cuando la dirección difiere, un nodo notará una diferencia potencial en las líneas, incluso cuando no está poniendo una en las líneas. Entonces sabe que ha perdido y tiene que volver a intentarlo. El nodo ganador continúa transmitiendo sin saber que otro nodo también estaba intentando. Por supuesto, esta lógica se extiende a más de dos nodos también.
Espero que esto ayude.