Para el bus CAN, ¿está bien cambiar las líneas CANH y CANL?

7

Similar a la pregunta En un cable USB, ¿está bien cambiar los cables D + y D? , ¿está bien si interconectamos las líneas CAN-H y CAN-L?

CAN es un protocolo diferencial. ¿Es que los bits dominantes y recesivos no son más que diferencias de voltaje en estas líneas?

La información sobre otros protocolos diferenciales también sería útil.

    
pregunta Swanand

3 respuestas

11

No pude encontrar ninguna referencia que diera una respuesta definitiva. Pero mirando unas pocas hojas de datos, no lo creo. USB está observando la presencia o ausencia de un cambio en el voltaje. Mientras que CANBus está observando el voltaje en sí mismo.

Aquí hay un ejemplo de una transmisión USB:

Losunosyloscerossecodificandependiendodesihayunatransiciónono.

AdiferenciadeCANBus,quetomaladiferenciaenlosnivelesdevoltajecomoseveen esta nota de la aplicación :

SiobservamosunahojadedatosparauntransceptorCANBus,porejemplo, MCP2551 , ver algo a lo largo de las líneas de:

  Sym                  Characteristic                   Min     Max  Units
VDIFF(r)(i)    Recessive differential input voltage    -1.0    +0.5    V
VDIFF(d)(i)    Dominant differential input voltage      0.9     5.0    V

Dado que se menciona una tensión negativa, esto me lleva a creer que la polaridad es importante y que no están tomando el valor absoluto de la tensión diferencial.

Así que si tenemos:

$$ CANH = 2.5V $$ $$ CANL = 2.5V $$

Normalmente el transceptor haría:

$$ CANH - CANL = 2.5V - 2.5V = 0.0V = Recessive $$

Si intercambias las líneas, lo haría:

$$ CANL - CANH = 2.5V - 2.5V = 0.0V = Recesivo $$

Hasta ahora todo bien. El problema viene cuando tenemos:

$$ CANH = 3.5V $$ $$ CANL = 1.5V $$

Aquí, el transceptor normalmente lo haría:

$$ CANH - CANL = 3.5V - 1.5V = 2.0V = Dominante $$

Si cambiaras las líneas, lo haría:

$$ CANL - CANH = 1.5V - 3.5V = -2.0V = recesivo (out \ of \ spec) $$

Para que el extremo receptor no vea más que bits recesivos.

    
respondido por el embedded.kyle
2

El cambio de líneas CAN-High y CAN-Low no funciona. Esto es bastante fácil de establecer empíricamente. Yo y mis compañeros de trabajo a veces cambiamos las líneas por accidente, y es evidente que no funciona.

    
respondido por el Peter Mortensen
1

Todo depende del modelo de transciver. Son una cierta flexibilidad en cuanto al valor de CAN_H y CAN_L pero SÍ, creo que el valor de CAN_H tiene que ser mayor en cualquier caso (al menos para todo el modelo que he visto).

Si acaba de cambiar el pin del cable, tan pronto como todos los CAN_L estén conectados entre sí y el CAN_H también, debería funcionar.

    
respondido por el WhiteV

Lea otras preguntas en las etiquetas