DEENESPTFRRUARHIKOZHNL

LIN Transceiver Driver (LinTrcv)

ModulLinTrcv (LIN Transceiver Driver)
BSW-Modul-ID64
Standard-Header#include "LinTrcv.h"
SWS-SpezifikationAUTOSAR_SWS_LINTransceiverDriver.pdf
ClusterLIN

Guide du moduleGÉNÉRÉ PAR IA

Pilote les composants émetteurs-récepteurs LIN : définir et interroger les modes de fonctionnement, détecter les réveils et les signaler à l'interface LIN.
GÉNÉRÉ PAR IA non vérifié Modèle : claude-opus-5-5 · Effort : high · Température : non réglable · Prompt : 4cf0c894f837 Provenance Questions ouvertes (4)
Ancre causale : R20-11 Valable à partir de R20-11 Synthétisé pour cette version de spécification.
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Pilote les composants émetteurs-récepteurs LIN : définir et interroger les modes de fonctionnement, détecter les réveils et les signaler à l'interface LIN.

Le LIN Transceiver Driver commande le transceiver LIN physique d'un canal et découple LinIf du matériel. D'après LinTrcv_Init, le mode initial est SLEEP. LinTrcv_SetOpMode commute entre NORMAL, STANDBY et SLEEP et renvoie E_NOT_OK en cas d'échec du changement [SWS_LinTrcv_00002]. Les réveils externes sont détectés via l'ICU et signalés lorsque LinIf appelle LinTrcv_CheckWakeup. Dans R20-11, E_OK signifie alors « réveil détecté » [SWS_LinTrcv_00012]. Les temps d'attente pour les changements d'état doivent être mis en œuvre avec Tm_BusyWait1us16bit.

Le LIN Transceiver Driver commande le transceiver LIN physique d'un canal et découple l'interface LIN du matériel. LinIf appelle directement ses services : LinIf_SetTrcvMode appelle par exemple LinTrcv_SetOpMode et renvoie son résultat sans modification [SWS_LinTrcv_00002] LinIf-SWS p. 90. Les états logiciels et matériels sont séparés. L'implémentation détermine quels états matériels sont couverts par un mode logiciel LinTrcv-SWS p. 16.

Le pilote connaît les modes LINTRCV_TRCV_MODE_NORMAL, LINTRCV_TRCV_MODE_STANDBY et LINTRCV_TRCV_MODE_SLEEP [SWS_LinTrcv_00168]. Après la mise sous tension, il est inactif. LinTrcv_Init l'active avec un ensemble de configuration [SWS_LinTrcv_00001], le mode initial étant SLEEP LinTrcv-SWS p. 1. STANDBY est facultatif et peut être un état purement interne LinTrcv-SWS Fig. 7.1 p. 15.

LinTrcvModi cluster_power_on POWER_ON cluster_active ACTIVE PowerOn Power On NOT_ACTIVE NOT_ACTIVE PowerOn->NOT_ACTIVE [Power On] PowerOff Power Off NOT_ACTIVE->PowerOff [Power Off] SLEEP LINTRCV_TRCV_MODE_SLEEP NOT_ACTIVE->SLEEP LinTrcv_Init(ConfigPtr) Ausgangsmodus SLEEP NORMAL LINTRCV_TRCV_MODE_NORMAL SLEEP->NORMAL LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_NORMAL) NORMAL->SLEEP LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_SLEEP) STANDBY LINTRCV_TRCV_MODE_STANDBY (optionnel, le cas échéant uniquement en interne) NORMAL->STANDBY optional: LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_STANDBY) STANDBY->SLEEP optional: LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_SLEEP) STANDBY->NORMAL LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_NORMAL)

Diagramme d'états : cycle de vie depuis Power-On jusqu'aux changements de mode avec LinTrcv_SetOpMode, en passant par LinTrcv_Init. Les transitions optionnelles sont reconstituées (interprétation). Sources : LinTrcv-SWS Fig. 7.1 p. 15 [SWS_LinTrcv_00168]

Le pilote ne détecte pas les réveils externes via sa propre ISR, mais via l'ICU LinTrcv-SWS p. 17. LinIf les interroge à l'aide de LinTrcv_CheckWakeup. Dans R20-11, E_OK signifie alors « réveil détecté » [SWS_LinTrcv_00012]. Les versions ultérieures le définissent différemment. Un réveil détecté est signalé via LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. LinTrcv_SetWakeupMode autorise la notification, la verrouille ou supprime les événements mémorisés [SWS_LinTrcv_00169].

Réveil externe (valeurs de retour selon R20-11)LIN-Bus / TransceiverIcuLinTrcvLinIfUse Case: VorbereitungIcu_EnableNotification(lors du passage à STANDBY)Use Case: Wakeup-EreignisWakeup-Ereignis (dominanter Buspegelou front sur la broche de réveil)Le cheminement depuis la notification ICU jusqu'à l'appelpar LinIf se situe en dehors de LinTrcv(non décrit dans la charge utile)LinTrcv_CheckWakeup(LinNetwork)Réveil sur leadressierten Netz auswertenaltWakeup erkanntLinIf_WakeupConfirmation(WakeupSource)Positionner le drapeau de réveil du canalE_OKkein Wakeup erkanntE_NOT_OKUse Case: Interroger la cause du réveil (via LinIf_GetTrcvWakeupReason)LinTrcv_GetBusWuReason(LinNetwork, Reason)E_OK, Reason z. B.LINTRCV_WU_BY_BUS

Diagramme de séquence : réveil externe depuis la détection par l'ICU via LinTrcv_CheckWakeup et LinIf_WakeupConfirmation jusqu'à l'interrogation du motif. Sources : [SWS_LinTrcv_00012] [SWS_LinTrcv_91002] LinTrcv-SWS p. 17

Les conditions aux limites suivantes s'appliquent au fonctionnement :

  • Les temps d'attente lors des changements d'état doivent être mis en œuvre avec Tm_BusyWait1us16bit [SWS_LinTrcv_00171].
  • Sur les systèmes multicœurs, LinTrcvChannel et LinChannel d'un canal doivent référencer la même partition [SWS_LinTrcv_00177].
  • En cas de communication perturbée avec le transceiver, les interrogations renvoient E_NOT_OK LinTrcv-SWS p. 26.

Les codes d'erreur DET ne sont étayés que dans des versions ultérieures. R21-11 ayant assaini les codes d'erreur, leurs noms peuvent différer dans R20-11 LinTrcv-SWS p. 1.

Rôle entre l'interface LIN et le composant transceiver

Le LIN Transceiver Driver (LinTrcv) encapsule le pilotage du transceiver LIN physique. Son interface se compose de sept services :

Tous les services sont synchrones. Les états logiciels du pilote sont dissociés des états matériels du composant. Le composant peut admettre plus de transitions que le pilote. L'implémentation décide quels états matériels sont couverts par un état logiciel. Elle doit toutefois fournir l'intégralité des fonctionnalités décrites LinTrcv-SWS p. 16.

Vers le haut, l'interface LIN (LinIf) est l'utilisateur documenté dans le payload. Les services de LinIf appellent chacun un service de LinTrcv :

  • LinIf_SetTrcvMode appelle LinTrcv_SetOpMode et restitue sa valeur de retour sans modification LinIf-SWS p. 90.
  • LinIf_GetTrcvMode appelle LinTrcv_GetOpMode LinIf-SWS p. 91.
  • LinIf_GetTrcvWakeupReason appelle LinTrcv_GetBusWuReason LinIf-SWS p. 92.
  • LinIf_SetTrcvWakeupMode appelle LinTrcv_SetWakeupMode LinIf-SWS p. 93.

Les types LinTrcv_TrcvModeType et LinTrcv_TrcvWakeupModeType sont disponibles via Lin_GeneralTypes.h [SWS_LinTrcv_00168] [SWS_LinTrcv_00169]. LinIf les utilise directement dans ses signatures. L'ancien type propre LinIf_TrcvModeType a été remplacé dans la version 3.1.5 par LinTrcv_TrcvModeType LinIf-SWS p. 4.

Vers le bas, le pilote utilise les services suivants :

  • les services de lecture et d'écriture de Dio, Det_ReportError et EcuM_SetWakeupEvent [SWS_LinTrcv_91003]
  • des types issus de Dio, Spi, Icu et EcuM [SWS_LinTrcv_91001]
  • Icu_EnableNotification et Icu_DisableNotification pour la notification de réveil LinTrcv-SWS p. 17
  • le service de temps Tm_BusyWait1us16bit pour les temps d'attente lors des changements d'état [SWS_LinTrcv_00171]

Le pilote signale les réveils détectés à LinIf via LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. LinIf positionne ensuite l'indicateur de réveil du canal concerné LinIf-SWS p. 98.

LinTrcvKontext LinIf LinIf LinTrcv LinTrcv LinIf->LinTrcv LinTrcv_SetOpMode, LinTrcv_GetOpMode, LinTrcv_GetBusWuReason, LinTrcv_SetWakeupMode, LinTrcv_CheckWakeup LinTrcv->LinIf LinIf_WakeupConfirmation Dio Dio LinTrcv->Dio Dio-Lese-/Schreibdienste (LinTrcvDioAccess) Spi Spi LinTrcv->Spi SPI-Sequenz (LinTrcvSpiSequence) Icu Icu LinTrcv->Icu Icu_EnableNotification / Icu_DisableNotification Tm Tm LinTrcv->Tm Tm_BusyWait1us16bit Det DET LinTrcv->Det Det_ReportError EcuM EcuM LinTrcv->EcuM EcuM_SetWakeupEvent HW LIN-Transceiver-Baustein Dio->HW Pins Spi->HW SPI HW->Icu Wakeup-Signal

Diagramme de contexte : LinTrcv se situe entre LinIf et les services de bas niveau Dio/Spi, Icu et Tm, et renvoie les réveils à LinIf. Sources : [SWS_LinTrcv_91001] [SWS_LinTrcv_91002] [SWS_LinTrcv_91003] [SWS_LinTrcv_00171] LinTrcv-SWS p. 17 LinTrcv-SWS Fig. 10.3 p. 45

Cycle de vie des modes de fonctionnement, de Power-On à Sleep

Le pilote connaît trois modes de fonctionnement logiciels : LINTRCV_TRCV_MODE_NORMAL, LINTRCV_TRCV_MODE_STANDBY et LINTRCV_TRCV_MODE_SLEEP [SWS_LinTrcv_00168]. La figure 7.1 de la spécification les intègre dans un cycle de vie LinTrcv-SWS Fig. 7.1 p. 15 :

  • Après la mise sous tension, le pilote est dans l'état NOT_ACTIVE.
  • LinTrcv_Init le fait passer dans l'état ACTIVE. Les trois modes se trouvent au sein de ACTIVE.
  • Une coupure d'alimentation met fin au cycle de vie.

LinTrcv_Init reçoit un pointeur vers l'ensemble de configuration sélectionné [SWS_LinTrcv_00001]. La structure LinTrcv_ConfigType est spécifique à l'implémentation [SWS_LinTrcv_00172]. Depuis la version 4.3.1, le mode initial après l'initialisation est limité à LINTRCV_TRCV_MODE_SLEEP LinTrcv-SWS p. 1.

À l'état ACTIVE, LinTrcv_SetOpMode fait passer l'état interne du canal adressé au mode transmis [SWS_LinTrcv_00002] LinTrcv-SWS p. 25. Le mode LINTRCV_TRCV_MODE_STANDBY est optionnel. Il peut s'agir d'un état purement interne que le matériel utilise pour les transitions. Un matériel concret n'a éventuellement pas besoin de toutes les interfaces LinTrcv-SWS Fig. 7.1 p. 15. La spécification mentionne en outre des conditions dans lesquelles LinTrcv_SetOpMode fait passer le canal à STANDBY. Ces conditions sont tronquées dans le présent extrait et ne sont pas détaillées ici LinTrcv-SWS p. 25.

LinTrcv_GetOpMode fournit dans le paramètre de sortie OpMode l'état logiciel actuel du pilote [SWS_LinTrcv_00005] LinTrcv-SWS p. 26. Il ne s'agit pas obligatoirement de l'état du composant. Un appelant peut ainsi vérifier, avant un changement de mode, dans quel mode se trouve le canal. Via LinIf, cette interrogation est disponible sous la forme LinIf_GetTrcvMode LinIf-SWS p. 91.

LinTrcvModi cluster_power_on POWER_ON cluster_active ACTIVE PowerOn Power On NOT_ACTIVE NOT_ACTIVE PowerOn->NOT_ACTIVE [Power On] PowerOff Power Off NOT_ACTIVE->PowerOff [Power Off] SLEEP LINTRCV_TRCV_MODE_SLEEP NOT_ACTIVE->SLEEP LinTrcv_Init(ConfigPtr) Ausgangsmodus SLEEP NORMAL LINTRCV_TRCV_MODE_NORMAL SLEEP->NORMAL LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_NORMAL) NORMAL->SLEEP LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_SLEEP) STANDBY LINTRCV_TRCV_MODE_STANDBY (optionnel, le cas échéant uniquement en interne) NORMAL->STANDBY optional: LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_STANDBY) STANDBY->SLEEP optional: LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_SLEEP) STANDBY->NORMAL LinTrcv_SetOpMode( LINTRCV_TRCV_MODE_NORMAL)

Diagramme d'états : après la mise sous tension, le pilote est inactif. LinTrcv_Init mène à la zone active avec le mode initial SLEEP, LinTrcv_SetOpMode commute entre les modes. Les transitions optionnelles sont reconstituées à partir des légendes de la figure 7.1 (interprétation). Les changements conditionnels vers STANDBY ne sont pas représentés. Sources : LinTrcv-SWS Fig. 7.1 p. 15 [SWS_LinTrcv_00168] [SWS_LinTrcv_00001] LinTrcv-SWS p. 1

Changement de mode et interrogations via l'interface LIN

Chaque service adresse un canal via le paramètre LinNetwork de type uint8 [SWS_LinTrcv_00002] [SWS_LinTrcv_00005]. Dans LinIf, le paramètre correspondant s'appelle Channel et possède le type NetworkHandleType LinIf-SWS p. 90.

LinTrcv_SetOpMode est synchrone et non réentrant, l'identifiant de service (Service-ID) est 0x01. Les valeurs de retour signifient [SWS_LinTrcv_00002] :

  • E_OK : l'état du transceiver est passé au mode demandé.
  • E_NOT_OK : le changement n'a pas été accepté, a échoué ou le paramètre se situe en dehors de la plage admissible.

LinIf doit autoriser l'appel pour tous les transceivers et tous les modes, même si le matériel ne prend pas en charge un mode LinIf-SWS p. 90. Le mappage sur le matériel reste ainsi la tâche de LinTrcv.

Le pilote réalise les temps d'attente lors des changements d'état à l'aide de Tm_BusyWait1us16bit [SWS_LinTrcv_00171]. Comme LinTrcv_SetOpMode fonctionne de manière synchrone [SWS_LinTrcv_00002], cette attente active devrait intervenir au sein de l'appel et prolonger sa durée d'exécution (interprétation). Question Q-54fe21bbe7c737d9 (ouverte) Lors du passage en mode veille, le pilote active en outre les canaux ICU pour la détection de réveil LinTrcv-SWS p. 17.

Les services d'interrogation sont réentrants. LinTrcv_GetBusWuReason fournit la cause de réveil détectée dans le type LinTrcv_TrcvWakeupReasonType [SWS_LinTrcv_00007]. Parmi ses valeurs figurent LINTRCV_WU_ERROR, LINTRCV_WU_NOT_SUPPORTED, LINTRCV_WU_BY_BUS et LINTRCV_WU_BY_PIN [SWS_LinTrcv_00170]. La précision avec laquelle les causes de réveil peuvent être distinguées dépend fortement du matériel du transceiver LinTrcv-SWS p. 28. LinTrcv_GetVersionInfo renvoie les informations de version sous forme de Std_VersionInfoType [SWS_LinTrcv_00008] LinTrcv-SWS p. 29.

Changement de mode via LinIf_SetTrcvModeAufrufer oberhalb LinIfLinIfLinTrcvDio / SpiTmIcuLinIf_SetTrcvMode(Channel,TransceiverMode)Vérifier le canal(ggf. LINIF_E_NONEXISTENT_CHANNEL)LinTrcv_SetOpMode(LinNetwork, OpMode)Baustein ansteuern (Interpretation:broches DIO ou séquence SPI)Tm_BusyWait1us16bit(Wartezeit Zustandswechsel)Temps d'attente expiréoptOpMode == LINTRCV_TRCV_MODE_STANDBYIcu_EnableNotification(activer les canaux ICU pour le réveil)E_OK / E_NOT_OKValeur de retour deLinTrcv_SetOpMode

Diagramme de séquence : un changement de mode se déroule de LinIf vers LinTrcv. LinTrcv attend via Tm, active la notification ICU lors du passage à STANDBY et renvoie son résultat inchangé via LinIf. Le pilotage via Dio/Spi et l'emplacement du temps d'attente dans l'appel relèvent de l'interprétation. Sources : [SWS_LinTrcv_00002] [SWS_LinTrcv_00171] LinIf-SWS p. 90 LinTrcv-SWS p. 17

Détecter, notifier et contrôler le réveil

Le pilote distingue deux types de réveil LinTrcv-SWS p. 17 :

  • Réveil interne : une couche supérieure le déclenche, par exemple via LinTrcv_Init ou LinTrcv_SetOpMode.
  • Réveil externe : le pilote le détecte sur le canal LIN. LinIf doit appeler LinTrcv_CheckWakeup pour que le réveil soit notifié vers le haut.

Le pilote ne prévoit pas d'ISR propre pour le réveil. La détection s'effectue via l'ICU avec Icu_EnableNotification et Icu_DisableNotification. Le type de réveil est sélectionné via le paramètre de configuration LinTrcvWakeUpSupport. Avec LinTrcvWakeupByBusUsed, la prise en charge du réveil peut être activée et désactivée par canal LinTrcv-SWS p. 17.

LinTrcv_CheckWakeup évalue le réveil sur le réseau adressé, par exemple un niveau de bus dominant ou un front descendant sur la broche de réveil LinTrcv-SWS p. 30. Dans la version R20-11, les valeurs de retour signifient [SWS_LinTrcv_00012] :

  • E_OK : un réveil a été détecté.
  • E_NOT_OK : aucun réveil n'a été détecté.

Le passage documentaire issu de versions ultérieures définit les valeurs différemment, comme « appel accepté/non accepté ». Cette modification est apparue avec R22-11 et ne s'applique pas à R20-11 LinTrcv-SWS p. 1 LinTrcv-SWS p. 30. Après une détection réussie, le pilote notifie la source de réveil via LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. LinTrcv ne propose pas de notifications par rappel propres LinTrcv-SWS p. 32. C'est pourquoi LinTrcv_CheckWakeup doit être appelé activement.

LinTrcv_SetWakeupMode est synchrone et non réentrant. Il contrôle la notification de réveil par réseau via LinTrcv_TrcvWakeupModeType [SWS_LinTrcv_00009] [SWS_LinTrcv_00169] :

  • LINTRCV_WUMODE_ENABLE active la notification.
  • LINTRCV_WUMODE_DISABLE la désactive.
  • LINTRCV_WUMODE_CLEAR efface un événement de réveil mémorisé.

Si un événement mémorisé est déjà présent lors de l'activation, le pilote exécute la notification dès l'appel ou immédiatement après LinTrcv-SWS p. 31. LinIf propose ce contrôle sous la forme LinIf_SetTrcvWakeupMode LinIf-SWS p. 93.

Réveil externe (valeurs de retour selon R20-11)LIN-Bus / TransceiverIcuLinTrcvLinIfUse Case: VorbereitungIcu_EnableNotification(lors du passage à STANDBY)Use Case: Wakeup-EreignisWakeup-Ereignis (dominanter Buspegelou front sur la broche de réveil)Le cheminement depuis la notification ICU jusqu'à l'appelpar LinIf se situe en dehors de LinTrcv(non décrit dans la charge utile)LinTrcv_CheckWakeup(LinNetwork)Réveil sur leadressierten Netz auswertenaltWakeup erkanntLinIf_WakeupConfirmation(WakeupSource)Positionner le drapeau de réveil du canalE_OKkein Wakeup erkanntE_NOT_OKUse Case: Interroger la cause du réveil (via LinIf_GetTrcvWakeupReason)LinTrcv_GetBusWuReason(LinNetwork, Reason)E_OK, Reason z. B.LINTRCV_WU_BY_BUS

Diagramme de séquence : un réveil externe est détecté via l'ICU. LinIf le vérifie avec LinTrcv_CheckWakeup, LinTrcv le confirme par LinIf_WakeupConfirmation, et la cause peut ensuite être interrogée (valeurs de retour selon R20-11). Sources : [SWS_LinTrcv_00012] [SWS_LinTrcv_91002] [SWS_LinTrcv_00007] LinTrcv-SWS p. 17 LinIf-SWS p. 98

SetWakeupMode Start LinTrcv_SetWakeupMode(LINNetwork, TrcvWakupMode) Modus TrcvWakupMode? Start->Modus Gespeichert Wakeup-Ereignis gespeichert? Modus->Gespeichert LINTRCV_WUMODE_ENABLE Gesperrt Notification bloquée pour les événements de réveil Modus->Gesperrt LINTRCV_WUMODE_DISABLE Geloescht Événement de réveil mémorisé effacé Modus->Geloescht LINTRCV_WUMODE_CLEAR Sofort Notification dans l'appel ou immédiatement après Gespeichert->Sofort Oui Frei Notification autorisée pour les événements de réveil Gespeichert->Frei Non Ende Retour E_OK (E_NOT_OK si le mode n'a pas été défini) Sofort->Ende Frei->Ende Gesperrt->Ende Geloescht->Ende

Diagramme d'activité : LinTrcv_SetWakeupMode effectue un branchement selon le mode demandé. Une notification ne suit immédiatement qu'en cas de ENABLE avec événement mémorisé. Sources : [SWS_LinTrcv_00009] [SWS_LinTrcv_00169] LinTrcv-SWS p. 31

Accès matériel, configuration des canaux et partitionnement

Le conteneur de sélection LinTrcvAccess définit la manière dont le pilote accède au composant LinTrcv-SWS Fig. 10.3 p. 45. Exactement une des deux variantes doit être choisie :

  • LinTrcvDioAccess : les broches du transceiver sont mappées sur des canaux DIO.
  • LinTrcvSpiSequence : un composant compatible SPI est adressé via une séquence SPI.

Le schéma provient de R23-11 et de versions ultérieures. Les services de lecture et d'écriture DIO ainsi que les types SPI sont toutefois déjà répertoriés dans R20-11 comme interfaces utilisées ou types importés [SWS_LinTrcv_91003] [SWS_LinTrcv_91001].

Pour les systèmes multicœurs, les règles suivantes s'appliquent dans R20-11 :

  • Le pilote doit rejeter les configurations comportant des assignations de partition non prises en charge [SWS_LinTrcv_00174].
  • Les partitions référencées via LinTrcvChannelEcucPartitionRef doivent constituer un sous-ensemble de celles référencées via LinTrcvEcucPartitionRef. Si le module référence des partitions, chaque canal doit en référencer exactement une [SWS_LinTrcv_00176].
  • LinTrcvChannel et LinChannel d'un même canal de communication doivent référencer la même partition [SWS_LinTrcv_00177].

La distribution multicœur a été ajoutée avec R19-11 et précisée dans R24-11 LinTrcv-SWS p. 1.

Comportement en cas d'erreur

Les erreurs d'exécution se manifestent dans la valeur de retour :

  • En cas de communication absente ou perturbée avec le transceiver, LinTrcv_GetOpMode LinTrcv-SWS p. 26 et LinTrcv_GetBusWuReason renvoient LinTrcv-SWS p. 28 E_NOT_OK.
  • LinTrcv_SetOpMode renvoie E_NOT_OK lorsqu'un changement n'a pas été accepté ou a échoué [SWS_LinTrcv_00002].
  • LinTrcv_SetWakeupMode renvoie E_NOT_OK lorsque le mode de réveil n'a pas pu être défini LinTrcv-SWS p. 31.
  • Si une cause de réveil ne peut pas être déterminée en raison d'une erreur, la valeur LINTRCV_WU_ERROR est disponible à cet effet [SWS_LinTrcv_00170].

Le pilote signale les erreurs de développement via Det_ReportError [SWS_LinTrcv_91003]. Dans R20-11, elles entraînent E_NOT_OK pour LinTrcv_GetOpMode et LinTrcv_GetBusWuReason [SWS_LinTrcv_00005] [SWS_LinTrcv_00007]. Les passages documentaires issus de versions ultérieures mentionnent des contrôles concrets LinTrcv-SWS p. 26 LinTrcv-SWS p. 30 LinTrcv-SWS p. 29 :

  • Appel avant l'initialisation : LINTRCV_E_UNINIT
  • Numéro de réseau non valide : LINTRCV_E_INVALID_LIN_NETWORK
  • Pointeur nul pour LinTrcv_GetVersionInfo : LINTRCV_E_PARAM_POINTER

Sur le fond, ces vérifications devraient s'appliquer également à R20-11 (interprétation). Question Q-58e3d310b525b810 (ouverte) R20-11 a toutefois assaini la classification des erreurs et R21-11 les codes d'erreur. Les identifiants peuvent donc différer dans R20-11 LinTrcv-SWS p. 1.

LinIf intercepte déjà une partie des erreurs d'utilisation. En cas de Channel non valide, LinIf_SetTrcvMode et LinIf_GetTrcvMode signalent l'erreur LINIF_E_NONEXISTENT_CHANNEL LinIf-SWS p. 90. LinIf_GetTrcvMode renvoie en outre E_NOT_OK en cas de canal non valide ou de pointeur nul LinIf-SWS p. 91. Si LinIf_WakeupConfirmation reçoit une source de réveil non valide, il déclenche LINIF_E_PARAM_WAKEUPSOURCE lorsque la détection d'erreurs est activée LinIf-SWS p. 98.

Preuves détaillées supplémentaires

Guide généré par IA. Il se base sur les exigences normatives pour R20-11 et les passages documentaires associés, en partie issus de R23-11 à R25-11. Les divergences entre les versions sont signalées dans le texte. Seule la spécification fait foi.

LIN Transceiver Driver (LinTrcv)

Controls physical bus transceiver states and wakeup on LIN lines.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

fonction LinTrcv_Init [SWS_LinTrcv_00001] 📄 PDF

void LinTrcv_Init (const LinTrcv_ConfigType* ConfigPtr);

Initializes the Lin Transceiver Driver module.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : a6b1d693304d Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction LinTrcv_Init sert à l’initialisation de base du module pilote du transceiver LIN conformément à la spécification dans [SWS_LinTrcv_00001]. L’interface est déclarée via le fichier d’en-tête LinTrcv.h et possède l’ID de service numérique 0x00 [SWS_LinTrcv_00001].

Utilisation et paramètres

L’appel de LinTrcv_Init est exécuté de manière synchrone et ne possède aucune valeur de retour (void) [SWS_LinTrcv_00001]. Le pointeur d’entrée ConfigPtr de type const LinTrcv_ConfigType*, qui pointe vers le jeu de données de configuration sélectionné du transceiver LIN, est transmis comme unique paramètre de transmission [SWS_LinTrcv_00001]. Aucun autre paramètre tel qu’un paramètre d’entrée/sortie ou de sortie pure n’est présent pour cette routine [SWS_LinTrcv_00001].

Concurrence et restrictions

Concernant le comportement en matière de concurrence, LinTrcv_Init est impérativement classée comme non réentrante (Non Reentrant) [SWS_LinTrcv_00001]. Par conséquent, les appels parallèles ou avec interruption de cette fonction doivent être exclus dans le système. De plus, aucun accès concurrent ne doit avoir lieu pendant l’initialisation. Interprétation : l’exécution de la fonction d’initialisation devrait généralement avoir lieu de manière centralisée lors de la phase de démarrage du système, avant même que d’autres services du pilote du transceiver LIN ne soient appelés. Question Q-9845a0c76e3146fa (ouverte)

Ce texte a été généré par une IA ; toutes les indications reposent sur les exigences du standard AUTOSAR.

Guide de l'implémenteur à venir (complexité I1)

fonction LinTrcv_SetOpMode [SWS_LinTrcv_00002] 📄 PDF

Std_ReturnType LinTrcv_SetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType OpMode);

The internal state of the LIN transceiver driver is switched to mode given in the parameter Op Mode.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 2b8c06203f94 Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction LinTrcv_SetOpMode sert à commuter l'état interne du pilote de l'émetteur-récepteur LIN vers le mode de fonctionnement transmis conformément à [SWS_LinTrcv_00002].

Utilisation et sémantique

  • Contexte d'appel et paramètres : L'appel cible le réseau LIN respectif via le paramètre LinNetwork, tandis que OpMode (type LinTrcv_TrcvModeType) prescrit le mode de fonctionnement cible ([SWS_LinTrcv_00002]). L'interface est disponible via LinTrcv.h.
  • Valeurs de retour : La fonction renvoie E_OK dès que l'état de l'émetteur-récepteur a été commuté avec succès dans le mode demandé. Si le changement d'état échoue, n'est pas accepté ou si un paramètre se situe en dehors de la plage admissible, E_NOT_OK est renvoyé ([SWS_LinTrcv_00002]).
  • Exécution synchrone : Le service fonctionne de manière synchrone (Sync/Async : Synchronous) sous l'ID de service 0x01 ([SWS_LinTrcv_00002]).

Concurrence et restrictions

L'interface est spécifiée comme non réentrante (Non Reentrant) ([SWS_LinTrcv_00002]). Les appelants doivent par conséquent s'assurer d'éviter les appels parallèles pour un même module ou réseau.

Ce texte a été généré par une IA. Il ne remplace pas l'étude des spécifications AUTOSAR correspondantes.

Guide de l'implémenteur à venir (complexité I1)

fonction LinTrcv_GetBusWuReason [SWS_LinTrcv_00007] 📄 PDF

Std_ReturnType LinTrcv_GetBusWuReason (uint8 LinNetwork, LinTrcv_TrcvWakeupReasonType* Reason);

This API provides the reason for the wakeup that the LIN transceiver has detected in the parameter "Reason". The ability to dete ct and differentiate the possible wakeup reasons depends strongly on the LIN transceiver hardware.

fonction LinTrcv_CheckWakeup [SWS_LinTrcv_00012] 📄 PDF

Std_ReturnType LinTrcv_CheckWakeup (uint8 LinNetwork);

Service LinTrcv_CheckWakeup.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d95f71801283 Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction synchrone LinTrcv_CheckWakeup sert à vérifier si un événement de réveil a été détecté sur un réseau LIN adressé [SWS_LinTrcv_00012]. Elle informe directement l’entité appelante de la présence d’une condition de réveil correspondante [SWS_LinTrcv_00012].

Appel et paramètres

La fonction possède l’ID de service 0x07 et est mise à disposition via le fichier d’en-tête LinTrcv.h [SWS_LinTrcv_00012] :

  • LinNetwork (paramètre d’entrée, uint8) : désigne le réseau LIN auquel l’appel d’API doit être appliqué [SWS_LinTrcv_00012].

Valeurs de retour

La valeur de retour de type Std_ReturnType signale le résultat de la vérification de réveil [SWS_LinTrcv_00012] :

  • E_OK : un événement de réveil a été détecté avec succès sur le réseau LIN spécifié [SWS_LinTrcv_00012].
  • E_NOT_OK : aucun événement de réveil n’a été constaté sur le réseau LIN spécifié [SWS_LinTrcv_00012].

concurrence

L’exécution de LinTrcv_CheckWakeup s’effectue de manière entièrement synchrone et est spécifiée comme réentrante [SWS_LinTrcv_00012]. Le déroulement synchrone garantit que le résultat est disponible immédiatement lors du retour de la fonction.

Cette note d’utilisation a été générée par une IA sur la base de la spécification du LIN Transceiver Driver dans AUTOSAR CP R20-11.

fonction LinTrcv_SetWakeupMode [SWS_LinTrcv_00009] 📄 PDF

Std_ReturnType LinTrcv_SetWakeupMode (uint8 LINNetwork, LinTrcv_TrcvWakeupModeType TrcvWakupMode);

This API enables, disables and clears the notification for wakeup events on the addressed network. A vailable via Lin Trcv.h

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 85db2195cf25 Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

La fonction synchrone LinTrcv_SetWakeupMode sert à activer, désactiver et acquitter les notifications pour les événements de réveil sur le réseau LIN adressé [SWS_LinTrcv_00009]. Elle est déclarée via le fichier d’en-tête LinTrcv.h et possède l’ID de service 0x05 [SWS_LinTrcv_00009].

Paramètres et valeurs de retour

La fonction attend deux paramètres d'entrée [SWS_LinTrcv_00009] :

  • LINNetwork (uint8) : désigne le réseau LIN concret auquel l’API doit être appliquée [SWS_LinTrcv_00009].
  • TrcvWakupMode (LinTrcv_TrcvWakeupModeType) : transmet le mode de réveil ou le motif demandé pour le transceiver [SWS_LinTrcv_00009].

Un état de type Std_ReturnType est fourni comme valeur de retour [SWS_LinTrcv_00009] :

  • E_OK : indique que l’état du transceiver a été basculé avec succès dans le mode demandé [SWS_LinTrcv_00009].
  • E_NOT_OK : signale que l’appel a échoué en raison d’erreurs de développement ou que le mode de réveil souhaité n’a pas pu être défini [SWS_LinTrcv_00009].

Concurrence et restrictions

L’interface est spécifiée comme non réentrante (non Reentrant) et effectue le changement d’état de manière synchrone [SWS_LinTrcv_00009]. Les composants appelants doivent donc s’assurer qu’aucun appel parallèle n’a lieu pour la même interface.

Cette note d'utilisation a été générée par une IA sur la base de la spécification AUTOSAR Classic R20-11.

Guide de l'implémenteur à venir (complexité I1)

type LinTrcv_ConfigType [SWS_LinTrcv_00172] 📄 PDF

Configuration data structure of the Lin Trcv module. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_LINTransceiverDriver

type LinTrcv_TrcvModeType [SWS_LinTrcv_00168] 📄 PDF

Operating modes of the LIN Transceiver Driver

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 304001f922be Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Le type d’énumération LinTrcv_TrcvModeType définit les modes de fonctionnement pour le pilote de transceiver LIN conformément à [SWS_LinTrcv_00168]. La définition de type est consignée dans le fichier d’en-tête Lin_GeneralTypes.h et est ainsi mise à la disposition des couches logicielles supérieures [SWS_LinTrcv_00168].

La plage de valeurs comprend trois états standardisés pour le transceiver [SWS_LinTrcv_00168] :

  • LINTRCV_TRCV_MODE_NORMAL : caractérise le mode de fonctionnement régulier (Transceiver mode NORMAL) du transceiver LIN [SWS_LinTrcv_00168].
  • LINTRCV_TRCV_MODE_STANDBY : représente le mode veille (Transceiver mode STANDBY) du transceiver [SWS_LinTrcv_00168].
  • LINTRCV_TRCV_MODE_SLEEP : décrit le mode veille prolongée (Transceiver mode SLEEP) pour le transceiver LIN [SWS_LinTrcv_00168].

En ce qui concerne l’utilisation et l’interaction fonctionnelle, ce type d’énumération sert à la modélisation uniforme des états du transceiver [SWS_LinTrcv_00168]. Le type est probablement utilisé comme paramètre ou valeur de retour dans les fonctions du pilote afin de demander ou d’interroger des transitions d’état ciblées entre fonctionnement normal, veille et état de veille à basse consommation. Question Q-8966f1299f224eff (ouverte) Les contextes d’appel spécifiques, les codes d’erreur ainsi que les propriétés de concurrence et de réentrance ne sont pas rattachés à ce type de données lui-même, mais dépendent des API respectives du pilote de transceiver [SWS_LinTrcv_00168].

Ce texte a été généré par une IA et sert à l'orientation technique.

Guide de l'implémenteur à venir (complexité I1)

type LinTrcv_TrcvWakeupModeType [SWS_LinTrcv_00169] 📄 PDF

Wake up operating modes of the LIN Transceiver Driver.

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e813afb11b1a Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Utilisation et plage de valeurs

Le type LinTrcv_TrcvWakeupModeType est une énumération qui définit les modes de fonctionnement pour les événements de réveil du pilote de transceiver LIN [SWS_LinTrcv_00169]. Il est fourni via le fichier d’en-tête Lin_GeneralTypes.h [SWS_LinTrcv_00169].

L’énumération comprend les valeurs suivantes pour la commande du réseau adressé [SWS_LinTrcv_00169] :

  • LINTRCV_WUMODE_ENABLE : active la notification pour les événements de réveil sur le réseau adressé [SWS_LinTrcv_00169].
  • LINTRCV_WUMODE_DISABLE : désactive la notification pour les événements de réveil sur le réseau adressé [SWS_LinTrcv_00169].
  • LINTRCV_WUMODE_CLEAR : efface un événement de réveil préalablement mémorisé sur le réseau adressé [SWS_LinTrcv_00169].

Gestion des erreurs et conditions limites

Pour le type lui-même, aucun code d’erreur spécifique, aucune valeur de retour ni aucun message d’erreur DET/DEM ne sont définis dans la spécification [SWS_LinTrcv_00169]. En tant que type de données, il n’est soumis à aucune restriction directe de réentrance ou d’exécution.

Interaction

Interprétation : le type devrait servir de paramètre de transmission dans les fonctions d’API du pilote de transceiver LIN afin d’activer ou de désactiver la détection de réveil pour un réseau donné, ou encore de réinitialiser l’état de réveil [SWS_LinTrcv_00169]. Question Q-cfb3e28d7baefc72 (ouverte)

Ce texte a été généré par une IA. Il se base exclusivement sur les données de spécification issues de SWS_LinTrcv_00169.

Guide de l'implémenteur à venir (complexité I1)

type LinTrcv_TrcvWakeupReasonType [SWS_LinTrcv_00170] 📄 PDF

This type denotes the wake up reason detected by the LIN transceiver in detail.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_LinTrcv
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_LinTrcv@rel:R20-11#d162ceec
Content hash
d162ceec
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_LINTransceiverDriver.pdf#nameddest=SWS_LinTrcv_00001

Initialisation et état

This service provides the version information of this module through the parameter "versioninfo".

void LinTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);
LinTrcv_Init fonction

Initializes the Lin Transceiver Driver module.

void LinTrcv_Init (const LinTrcv_ConfigType* ConfigPtr);

Services

Service LinTrcv_CheckWakeup.

Std_ReturnType LinTrcv_CheckWakeup (uint8 LinNetwork);

This API provides the reason for the wakeup that the LIN transceiver has detected in the parameter "Reason". The ability to dete ct and differentiate the possible wakeup reasons depends strongly on the LIN transceiver hardware.

Std_ReturnType LinTrcv_GetBusWuReason (uint8 LinNetwork, LinTrcv_TrcvWakeupReasonType* Reason);

API detects the actual software state of LIN transceiver driv er.

Std_ReturnType LinTrcv_GetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType* OpMode);

The internal state of the LIN transceiver driver is switched to mode given in the parameter Op Mode.

Std_ReturnType LinTrcv_SetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType OpMode);

This API enables, disables and clears the notification for wakeup events on the addressed network. A vailable via Lin Trcv.h

Std_ReturnType LinTrcv_SetWakeupMode (uint8 LINNetwork, LinTrcv_TrcvWakeupModeType TrcvWakupMode);

Types

Configuration data structure of the Lin Trcv module. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_LINTransceiverDriver

Operating modes of the LIN Transceiver Driver

Wake up operating modes of the LIN Transceiver Driver.

This type denotes the wake up reason detected by the LIN transceiver in detail.