La respuesta corta es que el nodo debe monitorear las líneas CAN para que estén inactivas por un cierto tiempo antes de intentar transmitir. Entonces, si otro nodo está transmitiendo, debe permanecer en silencio hasta que el otro nodo haya terminado.
Un bus CAN se basa en 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. El funcionamiento del arbitraje es que un transmisor monitorea el bus mientras está transmitiendo. La transmisión se realiza como anteriormente manteniendo las dos líneas con el mismo potencial o con un potencial diferencial. Entonces, si el transmisor transmite un poco manteniendo las líneas al 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. Luego 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 obviamente son diferentes. 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 intentarlo de nuevo. El nodo ganador continúa transmitiendo sin saber que algún otro nodo también lo estaba intentando. Por supuesto, esta lógica se extiende a más de dos nodos también.
Espero que esto ayude.