¿Cómo desarrollar el bus CAN automotriz?
Continuación del artículo anterior:
Estudiemos primero el marco de datos.
En primer lugar, la trama de datos consta de 7 campos de bits diferentes (inicio de trama, campo de arbitraje, campo de control, campo de datos, campo CRC, campo de respuesta, final de trama).
El campo de bits aquí es una combinación de diferentes bits. Este nombre está mal elegido y hace que la gente se sienta muy abstracta. Echemos un vistazo a estos diferentes campos de posición. El comienzo es un bit de inicio de trama, también llamado SOF. Está representado por un bit dominante, que es 0 nos dice que hay diferencia de voltaje en las dos líneas, es decir, hay datos;
Este cuadro parece tener solo un dígito al principio, pero en realidad no es simple. Para que todas las subestaciones estén sincronizadas con la estación emisora que envía el mensaje para que puedan recibir datos, hay muchas cosas a considerar.
Estructura del marco de datos del mensaje
Luego, el siguiente campo es el campo de arbitraje. Este arbitraje es muy abstracto, pero en realidad está aquí para resolver un problema. Si 2 o más unidades comienzan a transmitir mensajes al mismo tiempo, habrá un conflicto de acceso al bus y el mecanismo de arbitraje se utilizará para eliminar los datos de bajo nivel uno por uno según la prioridad del identificador. Podríamos describir detalladamente esta vívida batalla por el autobús.
Cuando el bus está en estado inactivo, es un nivel recesivo. En este momento, cualquier nodo puede enviar un nivel dominante al bus como inicio de una trama. Dos o más nodos se envían al mismo tiempo y comienzan a competir por el autobús, pero el autobús sólo puede ser arrebatado por una persona. ¿Cómo decidir quién se queda y quién sale en este momento? Empezamos a pensar, definimos identificadores antes, los identificadores tienen prioridades, cuanto más pequeños son, mayor es su prioridad. Entonces, ¿cómo se logra? Mire la imagen a continuación:
En primer lugar, comprenda dos puntos:
1. En la imagen a continuación, la forma de onda baja representa 0 (dominante) y la forma de onda alta representa 1. (recesivo);
p>
2. Cuando lo recesivo se encuentra con lo explícito, se vuelve explícito.
Como se muestra en la figura, los niveles de bits 10, 9 y 8 de los identificadores del nodo A y del nodo B son los mismos, por lo que la información que escuchan los dos nodos es la misma que la información que escuchan. enviar. El nodo B envía un "1" en el bit 7, pero el mensaje recibido del nodo es "0".
¿Por qué? Porque el nodo A envía el bit dominante al mismo tiempo, lo que hace que el bus también se vuelva dominante, que es 0. El nodo B saldrá del modo de transmisión y estará en modo de escucha simple sin enviar datos; el nodo A envía con éxito el bit de arbitraje para obtener el control del bus y luego envía todos los mensajes.
Las señales en el bus continúan rastreando el mensaje enviado por la última autoridad de control del bus. En este ejemplo, se rastreará el mensaje del nodo A. La ventaja de este método de arbitraje de bits no destructivo es que el comienzo del mensaje ya se ha transmitido en la red antes de que la red finalmente determine qué nodo se transmite, por lo que no hay retrasos en la transmisión de datos de los nodos con alta prioridad.
En el proceso en el que el nodo obtiene el control del bus y envía datos, otros nodos se convierten en nodos receptores del mensaje y no enviarán el mensaje antes de que el bus vuelva a estar inactivo. , el último nodo B perdió el bus debido a una desviación en el séptimo bit. A partir de ahora, la simple monitorización ha dado paso al Nodo A. Este es el mecanismo de arbitraje
Como decíamos anteriormente, los mensajes tienen dos formatos, estándar y extendido. Aquí, los campos de arbitraje son diferentes para los diferentes formatos. En el formato estándar, el campo de arbitraje consta de un identificador de 11 bits y un bit RTR.
Pero en el formato extendido, incluye un identificador de 29 bits, un bit SRR, un bit IDE y un bit RTR.
Bit RTR, BIT de solicitud de transmisión remota significa bit de solicitud de transmisión remota. Debe ser 0 dominante en la trama de datos, pero 1 recesivo en la trama remota.
Estoy confundido, ¿por qué haces esto? No te preocupes, dejemos esta pregunta por ahora.
El bit SRR reemplaza el bit de solicitud remota. SRR es un bit recesivo, que es 1. Está en la posición del bit RTR de la trama estándar en el formato extendido. Por lo tanto, no es de extrañar que la trama estándar tenga prioridad. sobre la trama extendida, porque durante la transmisión Después de que se completa el identificador de 11 bits (los últimos 18 bits de la trama extendida se envían al final y el identificador de 11 bits se envía primero), es el turno del bit RTR del trama estándar y el bit SRR de la trama extendida.
En este momento, el RTR del marco estándar es dominante, mientras que el SRR del marco extendido es recesivo. De esta manera, el bus queda naturalmente ocupado por el marco estándar.
Al mismo tiempo, el problema anterior también queda claro de un vistazo. El diseñador del protocolo de bus CAN debe haber diseñado la trama de datos para que tenga prioridad sobre la trama remota. Por lo tanto, IDE (Bit de extensión de identificador), el nombre completo del bit de extensión del identificador, pertenece al campo de arbitraje del formato extendido.
Para el formato extendido, el bit IDE pertenece al campo de arbitraje del estándar; formato, el bit IDE pertenece al campo de control. El bit IDE del formato estándar es "dominante", mientras que el bit IDE del formato extendido es "recesivo".
Marco de datos en formato estándar
Marco de datos en formato extendido
Campo de control
El campo de control consta de 6 bits El control. El formato del campo es diferente entre el formato estándar y el formato extendido. La trama en el formato estándar incluye el código de longitud de los datos, el bit IDE (un bit dominante) y el bit reservado r0. Las tramas en formato extendido incluyen un código de longitud de datos y dos bits reservados: r1 y r0. Sus bits reservados deben enviarse como dominantes, pero el receptor reconoce cualquier combinación de bits "dominantes" y "recesivos". Su estructura se muestra en la figura:
Estructura del campo de control
Código de longitud de datos (formato estándar y formato extendido) DLC, como se muestra en la siguiente tabla
Código de longitud del marco de datos DLC
El código de longitud de datos indica el número de bytes en el campo de datos. Entre ellos: d - "dominante", r - "recesivo", el número de bytes de datos permitidos en el marco de datos es {0, 1, ..., 7, 8}. No se permiten otros valores.
Campo de datos
El campo de datos consta de los datos enviados en el marco de datos. Puede ser de 0 a 8 bytes, cada byte contiene 8 bits y el bit más significativo (MSB) se envía primero.
Campo CRC de código de redundancia cíclica
Es el código de verificación de errores más utilizado en el campo de la comunicación de datos. Su característica es que la longitud del campo de información y del campo de verificación puede ser. seleccionados arbitrariamente.
El campo CRC incluye la secuencia CRC (CRC Sequence), seguida del delimitador CRC (CRC Delimiter). La estructura es la siguiente:
Principio básico de generación de código CRC:
Cualquier código formado por una cadena de bits binarios puede corresponder a un polinomio cuyos coeficientes sólo toman los valores de '0' y '1'. Por ejemplo: el polinomio correspondiente al código 1010111 es x6 x4 x2 x 1, y el polinomio correspondiente a x5 x3 x2 x 1 es el código 101111.
Consulta las siguientes preguntas de ejemplo para entenderlas tú mismo. Se sabe que el bit de información es 1101, se genera el polinomio G(x)= x3 x 1 y se encuentra el código CRC.
La secuencia de información que se transmitirá es 1101. Agregue el orden 0 más alto del polinomio dado al final. Por ejemplo, si esta pregunta es x^3, agregue 3 0 para convertirse en: 1101000;
p>Del polinomio G(X)=X3 La codificación requerida está al final de los datos originales y la secuencia de datos real enviada es 1101001. El proceso de cálculo del código de verificación se muestra en la figura:
División de módulo dos
Campo ACK (campo ACK)
La longitud del campo ACK es 2 bits, incluida la respuesta El espacio (ranura ACK) y el delimitador de respuesta (delimitador ACK) se muestran en la figura. En el campo ACK (campo de respuesta), el nodo emisor envía dos bits "recesivos".
Cuando el receptor recibe correctamente un mensaje válido, enviará un bit "dominante" al remitente durante el intervalo de respuesta (ACK Slot) para indicar la respuesta.
Fin del cuadro
Cada cuadro de datos y cuadro remoto están delimitados por una secuencia de banderas. Esta secuencia de banderas consta de 7 bits "recesivos".