Comportamiento de contadores de errores CAN

1

¿Puede alguien explicar cómo se comportan los nodos cuando uno o más nodos detectan un error? He intentado entenderlo desde CAN Spec pero parece complicado. ¿Cuándo se incrementan los contadores de errores de transmisión y recepción y por qué valores?

Gracias

    

1 respuesta

2

Los contadores se actualizan de la siguiente manera:

  1. Cuando un receptor detecta un error, el rx_count será aumentado en 1, excepto cuando el error detectado fue un poco error durante el envío de un indicador de error activo o bandera de sobrecarga.

  2. Cuando un receptor detecta un bit dominante como el primer bit después de enviar un indicador de error, se aumentará rx_count por 8.

  3. Cuando un transmisor envía un indicador de error, tx_count es aumentado en 8. Excepción 1: si el transmisor es pasivo de error y detecta un error de ack debido a que no se detectó un ack dominante y No detecta un bit dominante mientras envía su pasivo. bandera de error. Excepción 2: si el transmisor envía un indicador de error porque un error de error ocurrido durante el arbitraje por el cual el bit de relleno está ubicado antes del bit RTR, y debería haber sido recesivo, y ha sido enviado como recesivo pero monitoreado como dominante.

  4. Si un transmisor detecta un error de bit al enviar un mensaje activo indicador de error o un indicador de sobrecarga, se aumenta el tx_count por 8.

  5. Si un receptor detecta un error de bit al enviar un mensaje activo indicador de error o un indicador de sobrecarga el rx_count aumenta por 8.

  6. Cualquier nodo acepta hasta 7 bits dominantes consecutivos después de enviar un indicador de error activo o pasivo o un indicador de sobrecarga. Tras detectar el 14º bit dominante consecutivo (en el caso de un indicador de error activo o un indicador de sobrecarga), o después detectando el octavo bit dominante consecutivo después de una indicador de error pasivo, y después de cada secuencia de 8 adicionales bits dominantes consecutivos cada transmisor aumenta su tx_count por 8 y cada receptor aumenta su rx_count por 8.

  7. Después de la transmisión exitosa de un mensaje (obteniendo Ack y ningún error hasta que finalice el final del cuadro) tx_count es disminuyó en 1 a menos que ya fuera 0.

  8. Después de la recepción exitosa de un mensaje (recepción sin error hasta la ranura ack y el envío exitoso del bit de ack), rx_count se reduce en 1 si estaba entre 1 y 127. Si rx_count era 0, permanece 0 y si era mayor de 127, se establecerá en un valor entre 119 y 127. Nota: Si un nodo es el único en el bus (o durante el inicio el único que se ha activado), y transmite un mensaje, recibirá un error de confirmación, y retransmitir el mensaje. Esto puede llevar a que ese nodo vaya a modo pasivo de error, pero no para que se convierta en un bus apagado

Referencia para los puntos anteriores

    
respondido por el Akshay Immanuel D

Lea otras preguntas en las etiquetas