Problema con el extensor de bus CAN AMIS42700

2

Actualmente estoy configurando una red CAN de 16 nodos. Para futuras ampliaciones de la red, los nodos se distribuyen en 4 sucursales diferentes. Estas ramas están unidas por dos extensores de bus CAN (más específicamente, dos chips AMIS42700 ) y supervisado por un nodo CAN master (incluso si no existe tal cosa en CAN). El AMIS42700 actúa como extensor CAN y como transceptor para el nodo maestro. El esquema de la parte del extensor de bus CAN se muestra a continuación:

El problema con el chip AMIS42700 es que al intentar transmitir un mensaje a todos los nodos, parece que sigue enviando el mismo mensaje repetidamente. Esto no ocurre cuando se transmiten mensajes entre los nodos slave (lo verifiqué en el osciloscopio).

Cuando esto no es un problema en sí mismo cuando se transmiten mensajes del maestro al esclavo, los nodos CAN reciben múltiples réplicas del mismo mensaje y, finalmente, la red se satura con mensajes del nodo maestro. Esto afecta la calidad general de la comunicación y es bastante problemático en mi caso.

¿Alguien puede arrojar algo de luz sobre este comportamiento peculiar? ¿Es específico para extensores de bus CAN?

Para completar, aquí hay una lista de cosas que ya probé:

  • Modifique el valor del resistor de terminación en todas ramas (de 0 a 170 ohmios)
  • Cambia el mensaje de difusión. Pude ver el cambio en el osciloscopio, por lo tanto, asumo que esto no es un cuadro de error, sino una réplica de mi mensaje. ¿Es un supuesto razonable?
  • Quite las resistencias de terminación: en este caso, los nodos CAN ya no podían comunicarse entre sí, y el comportamiento era similar al experimentado con el AMIS42700 (estaban intentando reenviar el mensaje y los búferes internos nunca podría ser vaciado).
  • Verifique los buffers de transmisión del controlador CAN en el nodo maestro: nunca están llenos. Parece que el controlador CAN en el maestro es insensible al valor del resistor de terminación.
  • Extrañamente, al desconectar una de las líneas CAN (CANH o CANL) a la vez, la comunicación podría establecerse entre nodos. En ese caso, aunque no comprobé CANH y CANL en el osciloscopio.

¡Todos los consejos sobre el método de prueba y sobre los extensores de bus CAN y CAN en general serán más que apreciados!

    
pregunta Ant2N

1 respuesta

3
  

El problema con el chip AMIS42700 es que al intentar transmitir un mensaje a todos los nodos, parece que sigue enviando el mismo mensaje repetidamente

Esto implica que el problema también podría estar en el nivel del controlador CAN. Debe haber al menos un controlador CAN presente que confirmará la recepción del mensaje, o de lo contrario el controlador continuará intentándolo 128 veces. Algunos problemas de solución de problemas para comprobar:

  • Verifique si hay señales de error o de apagado del bus desde el controlador CAN que transmite. Asegúrese de que ningún controlador CAN esté configurado para filtrar ciertos identificadores. Asegúrese de que no estén en el modo de "solo escucha" donde no aceptarán los marcos recibidos. Asegúrese de que ningún controlador esté en modo de bucle invertido (solo hable con él mismo).

  • ¿Obtiene tramas de error en el bus o datos reales? Si busca marcos de error con un osciloscopio plano, se ven como pulsos pequeños y simples. Mientras que los marcos de datos parecen un tren de ceros y ceros binarios.

(Para una trama de error, debe comenzar con 6 bits, que son dominantes o recesivos según el estado de error en el que se encuentre el nodo emisor: estado de error activo = bits dominantes, estado de error pasivo = bits recesivos. Un nodo es en estado de error activo hasta después de 128 intentos, cuando vuelve a ser pasivo y ya no puede estropear el arbitraje del bus. No importa si está activo o pasivo, esta parte de la trama viola la regla de "relleno de bits" a propósito. Normalmente, solo puede tolerar a 5 bits del mismo nivel antes de utilizar el relleno de bits. Por lo tanto, la única vez que debería encontrar 6 bits con el mismo nivel en una fila es durante el marco de error.)

  • ¿Qué aspecto tienen las señales de habilitación EN1 y EN2 en el maestro? ¿Son estables?

  • ¿El mismo problema cuando desconectas el segundo AMIS "esclavo" del bus?

  • Siempre sospecharé el problema más clásico del bus serie: ¿qué es tx y qué es rx? (Como regla general / Murphy, siempre se equivoca, no importa lo que haga :)) Parece que el circuito AMIS actuará como un "módem" de comunicación de datos en este caso, o si lo hará como cualquier otro llano puede tranceiver. En ese caso, deberá asegurarse de que el controlador CAN Tx vaya a AMIS Tx. Su esquema se ve correcto, pero siempre me gustaría verificar esto.

  • Dudo que las resistencias terminadoras tengan mucho que ver con el problema, ya que los problemas relacionados con la terminación o no tienen un efecto notable en la comunicación (el bus puede funcionar bien sin la terminación adecuada, especialmente en velocidades inferiores) o causan que todo el bus Para bajar, es decir, funcionan o no. En caso de que no lo hagan, ningún esclavo podría enviar nada tampoco.

    Sin embargo, en la hoja de datos ejemplo de aplicación de AMIS-42700 (p4), parece que prefieren 60 ohmios, lo que implica que cada uno de los buses debe tener la terminación normal de 120 ohmios en cada extremo. Como en: agregue dos 120 terminadores más en cada bus y trátelos como dos buses no uno.

  • Probablemente no hace falta decirlo, pero los motivos de la señal deben ser los mismos para ambos autobuses. Por lo tanto, si se ubican en ubicaciones físicamente diferentes, no es suficiente con solo conectar las señales de Texto y Rint, también debe conectar la conexión a tierra de la señal.

  

Curiosamente, al desconectar una de las líneas CAN (CANH o CANL) a la vez, la comunicación podría establecerse entre nodos. En ese caso, aunque no comprobé CANH y CANL en el osciloscopio.

CAN es muy resistente, por lo que incluso cuando le haces cosas tan malas, es posible que puedas "cojear" si tienes suerte.

    
respondido por el Lundin

Lea otras preguntas en las etiquetas