¿La tarea maestra solicita el marco adicional?
Para responder a esta pregunta, debe recordar cómo funciona el propio bus LIN:
La tarea maestra decide cuándo y qué trama se transferirá en el bus. Las tareas de esclavo proporcionan los datos transportados por cada fotograma.
Lin 2.1 Spec, 1.1.5.1
Las tareas esclavas no pueden enviar ningún dato sin que la tarea maestra lo solicite explícitamente.
¿Cómo solicita la tarea maestra los marcos normales?
Un marco consiste en un encabezado (proporcionado por la tarea maestra) y una respuesta (proporcionada por una tarea esclava). El encabezado consta de un campo de interrupción y un campo de sincronización seguido de un identificador de trama. El identificador de cuadro define de forma única el propósito del cuadro. La tarea esclava designada para proporcionar la respuesta asociada con el identificador de trama transmite [la respuesta]
Ibid, 1.1.5.2
La tarea maestra solicita datos y controla el flujo de datos en el bus mediante el envío de campos de encabezado. El campo de encabezado consiste en una ruptura (para indicar inequívocamente el inicio de un marco); un campo de sincronización (para sintonizar los transceptores a la velocidad de reloj del maestro); y un identificador de cuadro (para indicar qué datos se están transmitiendo).
Tan pronto como se haya transmitido el encabezado del cuadro, el nodo esclavo apropiado puede transmitir el cuerpo del cuadro. Un marco LIN normal podría tener este aspecto:
| Header | Body |
| Break | Sync | Id | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | Checksum |
============================================================================================
| <Break> | 0x55 | 0x21 | 0x01 | 0x23 | 0x45 | 0x67 | 0x89 | 0xAB | 0xCD | 0xEF | 0x1E |
| Transmitted by master | Transmitted by slave |
¿En qué se diferencian los mensajes de diagnóstico?
Los mensajes de diagnóstico se especifican con la capa de transporte LIN en la Sección 3 de la especificación Lin 2.1. Los mensajes de diagnóstico forman un protocolo de nivel superior que se empaqueta en tramas LIN regulares. Es decir, todavía se basa en los encabezados maestros que transmiten de la forma habitual ; pero la información adicional se codifica en el cuerpo del marco, y un solo mensaje abarcará múltiples marcos.
La diferencia más significativa en los marcos utilizados por los mensajes de diagnóstico es el rol de la identificación del marco.
El primer byte en la carga útil se utiliza como una dirección de nodo (NAD). Los marcos de la capa de transporte tienen ID de fotogramas fijos, ya que se utilizan los marcos de diagnóstico. Esto significa que
el direccionamiento de un nodo (o función) se realiza utilizando el NAD.
Ibid, 3.2.1
El Identificador de servicio (SID) especifica la solicitud que debe realizar el nodo esclavo direccionado ... El Identificador de servicio de respuesta (RSID) especifica el contenido de la respuesta.
Ibid, 3.2.1.5
Todos los marcos que llevan mensajes de diagnóstico LIN tendrán uno de los dos identificadores:
- 0x3C - Para marcos de solicitud maestra
- 0x3D - Para marcos de respuesta esclavos
(Ver Lin 2.1 Spec, 2.3.3.4)
Esto significa que la identificación del marco por sí sola no le dice qué mensaje es, o qué nodo esclavo se espera que responda. En su lugar, el byte D0 del cuerpo del cuadro indica la Dirección del Nodo (NAD), y el byte SID / RSID (la ubicación exacta varía según el cuadro, los detalles exactos no son relevantes) indica el propósito del mensaje.
Debido a que esta información se encuentra en el cuerpo de la trama, no en el encabezado, se debe generar un campo de encabezado separado para que el esclavo responda. el esclavo no puede tomar el control de la transmisión después de 2-4 bytes de la trama porque esto rompería las partes de nivel inferior de la especificación LIN.
Cuando un esclavo recibe una trama de solicitud maestra (0x3C) con su propio NAD en D0, entra en un nuevo estado. El nodo realiza las acciones requeridas por el SID de acuerdo con los datos incluidos en el mensaje. A continuación, prepara su búfer de transmisión para responder en el siguiente marco de respuesta esclavo (0x3D). Si la respuesta tiene más de seis bytes, se dividirá en varios marcos y continuará respondiendo en los marcos de respuesta esclavos posteriores.
Volviendo a su ejemplo, se vuelve mucho más claro cuando agregamos los campos del protocolo LIN nuevamente a los datos de la capa de transporte que proporcionó.
| LIN Header | LIN Body |
| Break | Sync | Id | D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | Checksum |
============================================================================================
| Master Request Frame | NAD | PCI | SID | D1 | D2 | D3 | D4 | D5 |----------|
| <Break> | 0x55 | 0x3C | 0x64 | 0x06 | 0xB4 | 0x67 | 0x89 | 0xAB | 0xCD | 0xEF | 0x86 |
| Transmitted by master |
--------------------------------------------------------------------------------------------
| Slave Response Frame | NAD | PCI | LEN | RSID | D1 | D2 | D3 | D4 |----------|
| <Break> | 0x55 | 0x3D | 0x64 | 0x10 | 0x08 | 0xF4 | 0x89 | 0xAB | 0xCD | 0xEF | 0x9B |
| Transmitted by master | Transmitted by slave |
--------------------------------------------------------------------------------------------
| Slave Response Frame | NAD | PCI | D5 | D6 | D7 |------|------|------|----------|
| <Break> | 0x55 | 0x3D | 0x64 | 0x21 | 0x01 | 0x23 | 0x45 | 0xFF | 0xFF | 0xFF | 0x11 |
| Transmitted by master | Transmitted by slave |
¿Cómo solicita el maestro el siguiente fotograma?
En resumen: enviando el siguiente encabezado del marco de respuesta del esclavo.