¿Qué significa esta forma de onda del bus CAN?

7

Estoy intentando que la funcionalidad ECAN funcione en un dsPIC33. Tengo dos dsPIC33s idénticos, cada uno con transceptores CAN idénticos conectados por un bus corto (3 pulgadas). Uno está transmitiendo, uno está recibiendo. Sin embargo, no veo ningún mensaje, solo veo una forma de onda que se repite con un período de 34.5us. ¿Esto sugiere una condición de error particular en un bus CAN?

    
pregunta Rocketmagnet

2 respuestas

10

Resulta que la respuesta debería haber sido obvia a partir de las formas de onda anteriores.

Cuando TX baja, RX también. Pero cuando TX sube, RX necesita más de un millón para volver a aumentar. ¡Eso es más que un poco de tiempo! CAN no puede trabajar bajo estas condiciones.

La razón por la que RX se retrasa con respecto a TX habría sido obvia con un osciloscopio adecuado, en lugar de un simple analizador lógico. Como el autobús era tan corto, no me molesté en agregar las resistencias de terminación, porque no creía que las reflexiones fueran un problema. Pero las resistencias también son importantes para descargar la ligera capacitancia del pero, lo que permite que la transición de la espalda dominante a la recesiva sea lo suficientemente rápida.

Aparecen soldaduras en las resistencias que mágicamente hacen que aparezcan mensajes CAN completos.

    
respondido por el Rocketmagnet
4

No hay nada mágico en las resistencias de terminación. Son absolutamente necesarios para un bus CAN. Pueden llamarse resistencias de "terminación", y esto es de hecho parte de su función cuando el bus es lo suficientemente largo como para ser una línea de transmisión. Sin embargo, también hacen que un bus descargado pase al estado recesivo, lo que es una suposición fundamental en la que se basa el protocolo CAN.

Piense en la CAN como un bus colector abierto pasivamente levantado, excepto que se implementa como un par diferencial (generalmente). Las resistencias de terminación no solo terminan la línea de transmisión, sino que también actúan como la resistencia de recuperación. En la implementación de CAN diferencial, son en realidad resistencias que se juntan, pero lógicamente tienen la misma función que un pullup en un bus de colector abierto de un solo extremo.

Tenga en cuenta que el estándar CAN no especifica el bus físico real. Para distancias cortas en la misma placa a las tasas de bits correctas, puede implementar lata como un bus pasivo de un solo extremo. A menos que esté haciendo algo especial, el uso de dos chips de transceptor CAN para ir entre solo dos nodos separados por 3 pulgadas en el mismo tablero es un exceso excesivo y una pérdida de dinero, energía, espacio y partes.

    
respondido por el Olin Lathrop

Lea otras preguntas en las etiquetas