DEENESPTFRRUARHIKOZHNL

LIN Transceiver Driver (LinTrcv)

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

Руководство по модулюСОЗДАНО ИИ

Управляет компонентами приемопередатчиков LIN: установка и опрос режимов работы, обнаружение событий пробуждения (Wakeup) и уведомление о них LIN-интерфейса.
СОЗДАНО ИИ не проверено Модель: claude-opus-5-5 · Усилие: high · Температура: не регулируется · Промпт: 4cf0c894f837 Происхождение Открытые вопросы (4)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Управляет компонентами приемопередатчиков LIN: установка и опрос режимов работы, обнаружение событий пробуждения (Wakeup) и уведомление о них LIN-интерфейса.

LIN Transceiver Driver управляет физическим приемопередатчиком LIN канала и развязывает LinIf с аппаратным обеспечением. Согласно LinTrcv_Init, исходным режимом является SLEEP. LinTrcv_SetOpMode переключает между NORMAL, STANDBY и SLEEP и возвращает E_NOT_OK при неудачном переключении [SWS_LinTrcv_00002]. Внешние пробуждения обнаруживаются через ICU и регистрируются, когда LinIf вызывает LinTrcv_CheckWakeup. В R20-11 E_OK при этом означает «Wakeup обнаружен» [SWS_LinTrcv_00012]. Время ожидания для смены состояния должно реализовываться с помощью Tm_BusyWait1us16bit.

LIN Transceiver Driver управляет физическим приемопередатчиком LIN канала и отделяет интерфейс LIN от аппаратного обеспечения. LinIf вызывает его сервисы напрямую: например, LinIf_SetTrcvMode вызывает LinTrcv_SetOpMode и возвращает его результат без изменений [SWS_LinTrcv_00002] LinIf-SWS с. 90. Программные и аппаратные состояния разделены. То, какие аппаратные состояния охватывает программный режим, определяется реализацией LinTrcv-SWS с. 16.

Драйвер поддерживает режимы LINTRCV_TRCV_MODE_NORMAL, LINTRCV_TRCV_MODE_STANDBY и LINTRCV_TRCV_MODE_SLEEP [SWS_LinTrcv_00168]. После включения питания он неактивен. LinTrcv_Init активирует его с набором конфигурации [SWS_LinTrcv_00001], исходным режимом является SLEEP LinTrcv-SWS с. 1. STANDBY является опциональным и может быть чисто внутренним состоянием LinTrcv-SWS Рис. 7.1 с. 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 (опционально, при необх. только внутренне) 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)

Диаграмма состояний: жизненный цикл от Power-On через LinTrcv_Init до смены режимов с помощью LinTrcv_SetOpMode. Опциональные переходы реконструированы (интерпретация). Источники: LinTrcv-SWS Рис. 7.1 с. 15 [SWS_LinTrcv_00168]

Внешние события пробуждения драйвер обнаруживает не через собственную ISR, а через ICU LinTrcv-SWS с. 17. LinIf опрашивает их с помощью LinTrcv_CheckWakeup. В R20-11 E_OK при этом означает «Wakeup обнаружен» [SWS_LinTrcv_00012]. В более поздних релизах это определяется иначе. Обнаруженное пробуждение передается через LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. LinTrcv_SetWakeupMode разрешает уведомление, блокирует его или удаляет сохраненные события [SWS_LinTrcv_00169].

Внешний Wakeup (возвращаемые значения согласно R20-11)LIN-Bus / TransceiverIcuLinTrcvLinIfUse Case: VorbereitungIcu_EnableNotification(при переходе в STANDBY)Use Case: Wakeup-EreignisWakeup-Ereignis (dominanter Buspegelили фронт на выводе Wakeup)Путь от уведомления ICU до вызовачерез LinIf находится за пределами LinTrcv(в полезной нагрузке не описано)LinTrcv_CheckWakeup(LinNetwork)Wakeup наadressierten Netz auswertenaltWakeup erkanntLinIf_WakeupConfirmation(WakeupSource)Установить флаг Wakeup каналаE_OKkein Wakeup erkanntE_NOT_OKUse Case: Запросить причину Wakeup (через LinIf_GetTrcvWakeupReason)LinTrcv_GetBusWuReason(LinNetwork, Reason)E_OK, Reason z. B.LINTRCV_WU_BY_BUS

Диаграмма последовательности: внешнее пробуждение от обнаружения с помощью ICU через LinTrcv_CheckWakeup и LinIf_WakeupConfirmation до опроса причины. Источники: [SWS_LinTrcv_00012] [SWS_LinTrcv_91002] LinTrcv-SWS с. 17

Для эксплуатации действуют следующие граничные условия:

  • Время ожидания при смене состояния должно реализовываться с помощью Tm_BusyWait1us16bit [SWS_LinTrcv_00171].
  • В многоядерных системах LinTrcvChannel и LinChannel одного канала должны ссылаться на один и тот же раздел [SWS_LinTrcv_00177].
  • При нарушении связи с приемопередатчиком запросы возвращают E_NOT_OK LinTrcv-SWS с. 26.

Коды ошибок DET подтверждены только из более поздних релизов. Поскольку в R21-11 коды ошибок были скорректированы, их имена в R20-11 могут отличаться LinTrcv-SWS с. 1.

Роль между интерфейсом LIN и компонентом приемопередатчика

LIN Transceiver Driver (LinTrcv) инкапсулирует управление физическим приемопередатчиком LIN. Его интерфейс состоит из семи сервисов:

  • Инициализация с помощью LinTrcv_Init [SWS_LinTrcv_00001]
  • Смена режима с помощью LinTrcv_SetOpMode [SWS_LinTrcv_00002]
  • Опрос режима с помощью LinTrcv_GetOpMode [SWS_LinTrcv_00005]
  • Запрос причины пробуждения с помощью LinTrcv_GetBusWuReason [SWS_LinTrcv_00007]
  • Управление уведомлением о пробуждении с помощью LinTrcv_SetWakeupMode [SWS_LinTrcv_00009]
  • Проверка пробуждения с помощью LinTrcv_CheckWakeup [SWS_LinTrcv_00012]
  • Запрос версии с помощью LinTrcv_GetVersionInfo [SWS_LinTrcv_00008]

Все сервисы являются синхронными. Программные состояния драйвера отделены от аппаратных состояний компонента. Компонент может иметь больше переходов, чем драйвер. То, какие аппаратные состояния охватывает программное состояние, определяется реализацией. Однако она должна полностью обеспечивать описанную функциональность LinTrcv-SWS с. 16.

Вышестоящим пользователем, подтвержденным в полезной нагрузке, является интерфейс LIN (LinIf). Сервисы LinIf вызывают соответствующий сервис LinTrcv:

  • LinIf_SetTrcvMode вызывает LinTrcv_SetOpMode и возвращает его возвращаемое значение без изменений LinIf-SWS с. 90.
  • LinIf_GetTrcvMode вызывает LinTrcv_GetOpMode LinIf-SWS с. 91.
  • LinIf_GetTrcvWakeupReason вызывает LinTrcv_GetBusWuReason LinIf-SWS с. 92.
  • LinIf_SetTrcvWakeupMode вызывает LinTrcv_SetWakeupMode LinIf-SWS с. 93.

Типы LinTrcv_TrcvModeType и LinTrcv_TrcvWakeupModeType доступны через Lin_GeneralTypes.h [SWS_LinTrcv_00168] [SWS_LinTrcv_00169]. LinIf использует их напрямую в своих сигнатурах. Ранее существовавший собственный тип LinIf_TrcvModeType был заменен в версии 3.1.5 на LinTrcv_TrcvModeType LinIf-SWS с. 4.

На нижнем уровне драйвер использует следующие сервисы:

  • сервисы чтения и записи из Dio, Det_ReportError и EcuM_SetWakeupEvent [SWS_LinTrcv_91003]
  • типы из Dio, Spi, Icu и EcuM [SWS_LinTrcv_91001]
  • Icu_EnableNotification и Icu_DisableNotification для уведомления о пробуждении LinTrcv-SWS с. 17
  • сервис времени Tm_BusyWait1us16bit для задержек ожидания при смене состояния [SWS_LinTrcv_00171]

Обнаруженные пробуждения драйвер сообщает в LinIf через LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. После этого LinIf устанавливает флаг пробуждения соответствующего канала LinIf-SWS с. 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

Контекстная диаграмма: LinTrcv располагается между LinIf и низкоуровневыми сервисами Dio/Spi, Icu и Tm и передает уведомления о пробуждениях обратно в LinIf. Источники: [SWS_LinTrcv_91001] [SWS_LinTrcv_91002] [SWS_LinTrcv_91003] [SWS_LinTrcv_00171] LinTrcv-SWS с. 17 LinTrcv-SWS Рис. 10.3 с. 45

Жизненный цикл рабочих режимов от Power-On до Sleep

Драйвер поддерживает три программных режима работы: LINTRCV_TRCV_MODE_NORMAL, LINTRCV_TRCV_MODE_STANDBY и LINTRCV_TRCV_MODE_SLEEP [SWS_LinTrcv_00168]. Рисунок 7.1 спецификации сопоставляет их в рамках жизненного цикла LinTrcv-SWS Рис. 7.1 с. 15:

  • После включения питания драйвер находится в состоянии NOT_ACTIVE.
  • LinTrcv_Init переводит его в состояние ACTIVE. Три режима находятся внутри ACTIVE.
  • Потеря питания завершает жизненный цикл.

LinTrcv_Init получает указатель на выбранный конфигурационный набор [SWS_LinTrcv_00001]. Структура LinTrcv_ConfigType зависит от реализации [SWS_LinTrcv_00172]. Начиная с версии 4.3.1 исходный режим после инициализации ограничен LINTRCV_TRCV_MODE_SLEEP LinTrcv-SWS с. 1.

В состоянии ACTIVE LinTrcv_SetOpMode переключает внутреннее состояние адресованного канала на переданный режим [SWS_LinTrcv_00002] LinTrcv-SWS с. 25. Режим LINTRCV_TRCV_MODE_STANDBY является опциональным. Он может быть чисто внутренним состоянием, используемым аппаратным обеспечением для переходов. Конкретному аппаратному обеспечению могут потребоваться не все интерфейсы LinTrcv-SWS Рис. 7.1 с. 15. Спецификация также называет условия, при которых LinTrcv_SetOpMode переключает канал в STANDBY. Эти условия в данном фрагменте обрезаны и здесь не приводятся LinTrcv-SWS с. 25.

LinTrcv_GetOpMode возвращает текущее программное состояние драйвера в выходном параметре OpMode [SWS_LinTrcv_00005] LinTrcv-SWS с. 26. Это не обязательно состояние аппаратного компонента. Вызывающая сторона может использовать это перед сменой режима, чтобы проверить, в каком режиме находится канал. Через LinIf этот запрос доступен как LinIf_GetTrcvMode LinIf-SWS с. 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 (опционально, при необх. только внутренне) 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)

Диаграмма состояний: после Power-On драйвер неактивен. LinTrcv_Init переводит в активную область с исходным режимом SLEEP, LinTrcv_SetOpMode переключает между режимами. Опциональные переходы реконструированы по подписям к рис. 7.1 (интерпретация). Условные переходы в STANDBY не показаны. Источники: LinTrcv-SWS Рис. 7.1 с. 15 [SWS_LinTrcv_00168] [SWS_LinTrcv_00001] LinTrcv-SWS с. 1

Смена режима и опросы через интерфейс LIN

Каждая служба адресует канал через параметр LinNetwork типа uint8 [SWS_LinTrcv_00002] [SWS_LinTrcv_00005]. В LinIf соответствующий параметр называется Channel и имеет тип NetworkHandleType LinIf-SWS с. 90.

LinTrcv_SetOpMode является синхронной и нереentrant-ной, идентификатор службы (Service ID) — 0x01. Возвращаемые значения означают [SWS_LinTrcv_00002]:

  • E_OK: состояние трансивера переключилось в запрошенный режим.
  • E_NOT_OK: переключение не было принято, завершилось сбоем или параметр находится вне допустимого диапазона.

LinIf должен разрешать вызов для всех трансиверов и всех режимов, даже если аппаратное обеспечение не поддерживает какой-либо режим LinIf-SWS с. 90. Таким образом, отображение на аппаратные средства остается задачей LinTrcv.

Время ожидания при смене состояний драйвер реализует с помощью Tm_BusyWait1us16bit [SWS_LinTrcv_00171]. Поскольку LinTrcv_SetOpMode работает синхронно [SWS_LinTrcv_00002], это активное время ожидания, вероятно, приходится на сам вызов и увеличивает время его выполнения (интерпретация). Вопрос Q-54fe21bbe7c737d9 (открытый) Кроме того, при переходе в режим ожидания (Standby) драйвер активирует каналы ICU для распознавания пробуждения LinTrcv-SWS с. 17.

Службы опроса являются reentrant-ными. LinTrcv_GetBusWuReason возвращает распознанную причину пробуждения в типе LinTrcv_TrcvWakeupReasonType [SWS_LinTrcv_00007]. К его значениям относятся LINTRCV_WU_ERROR, LINTRCV_WU_NOT_SUPPORTED, LINTRCV_WU_BY_BUS и LINTRCV_WU_BY_PIN [SWS_LinTrcv_00170]. Насколько точно можно дифференцировать причины пробуждения, сильно зависит от аппаратного обеспечения трансивера LinTrcv-SWS с. 28. LinTrcv_GetVersionInfo возвращает информацию о версии как Std_VersionInfoType [SWS_LinTrcv_00008] LinTrcv-SWS с. 29.

Смена режима через LinIf_SetTrcvModeAufrufer oberhalb LinIfLinIfLinTrcvDio / SpiTmIcuLinIf_SetTrcvMode(Channel,TransceiverMode)Проверить Channel(ggf. LINIF_E_NONEXISTENT_CHANNEL)LinTrcv_SetOpMode(LinNetwork, OpMode)Baustein ansteuern (Interpretation:выводы DIO или последовательность SPI)Tm_BusyWait1us16bit(Wartezeit Zustandswechsel)Время ожидания истеклоoptOpMode == LINTRCV_TRCV_MODE_STANDBYIcu_EnableNotification(активировать каналы ICU для Wakeup)E_OK / E_NOT_OKВозвращаемое значение отLinTrcv_SetOpMode

Диаграмма последовательности: смена режима передается от LinIf к LinTrcv. LinTrcv ожидает через Tm, при переходе в STANDBY активирует уведомление ICU и возвращает свой результат через LinIf без изменений. Управление через Dio/Spi и положение времени ожидания внутри вызова являются интерпретацией. Источники: [SWS_LinTrcv_00002] [SWS_LinTrcv_00171] LinIf-SWS с. 90 LinTrcv-SWS с. 17

Распознавание, оповещение и управление пробуждением

Драйвер различает два типа пробуждения LinTrcv-SWS с. 17:

  • Внутреннее пробуждение: инициируется верхним уровнем, например, с помощью LinTrcv_Init или LinTrcv_SetOpMode.
  • Внешнее пробуждение: драйвер распознает его на LIN-канале. LinIf должен вызвать LinTrcv_CheckWakeup, чтобы пробуждение было передано на верхний уровень.

Собственный ISR для пробуждения драйвером не предусмотрен. Распознавание осуществляется через ICU с помощью Icu_EnableNotification и Icu_DisableNotification. Тип пробуждения выбирается через конфигурационный параметр LinTrcvWakeUpSupport. С помощью LinTrcvWakeupByBusUsed можно включать и отключать поддержку пробуждения для каждого канала LinTrcv-SWS с. 17.

LinTrcv_CheckWakeup оценивает пробуждение в адресуемой сети, например, доминантный уровень шины или отрицательный фронт на выводе пробуждения LinTrcv-SWS с. 30. В R20-11 возвращаемые значения означают [SWS_LinTrcv_00012]:

  • E_OK: пробуждение было обнаружено.
  • E_NOT_OK: пробуждение не было обнаружено.

Фрагмент документа из более поздних релизов определяет эти значения иначе — как «вызов принят/не принят». Это изменение появилось в R22-11 и не применяется к R20-11 LinTrcv-SWS с. 1 LinTrcv-SWS с. 30. После успешного обнаружения драйвер сообщает источник пробуждения через LinIf_WakeupConfirmation [SWS_LinTrcv_91002]. Собственных callback-уведомлений LinTrcv не предоставляет LinTrcv-SWS с. 32. Поэтому необходимо активно вызывать LinTrcv_CheckWakeup.

LinTrcv_SetWakeupMode является синхронной и нереentrant-ной. Она управляет уведомлением о пробуждении для каждой сети через LinTrcv_TrcvWakeupModeType [SWS_LinTrcv_00009] [SWS_LinTrcv_00169]:

  • LINTRCV_WUMODE_ENABLE разрешает уведомление.
  • LINTRCV_WUMODE_DISABLE блокирует его.
  • LINTRCV_WUMODE_CLEAR сбрасывает сохраненное событие пробуждения.

Если при разрешении уже имеется сохраненное событие, драйвер выполняет уведомление еще во время вызова или сразу после него LinTrcv-SWS с. 31. LinIf предоставляет это управление как LinIf_SetTrcvWakeupMode LinIf-SWS с. 93.

Внешний Wakeup (возвращаемые значения согласно R20-11)LIN-Bus / TransceiverIcuLinTrcvLinIfUse Case: VorbereitungIcu_EnableNotification(при переходе в STANDBY)Use Case: Wakeup-EreignisWakeup-Ereignis (dominanter Buspegelили фронт на выводе Wakeup)Путь от уведомления ICU до вызовачерез LinIf находится за пределами LinTrcv(в полезной нагрузке не описано)LinTrcv_CheckWakeup(LinNetwork)Wakeup наadressierten Netz auswertenaltWakeup erkanntLinIf_WakeupConfirmation(WakeupSource)Установить флаг Wakeup каналаE_OKkein Wakeup erkanntE_NOT_OKUse Case: Запросить причину Wakeup (через LinIf_GetTrcvWakeupReason)LinTrcv_GetBusWuReason(LinNetwork, Reason)E_OK, Reason z. B.LINTRCV_WU_BY_BUS

Диаграмма последовательности: внешнее пробуждение распознается через ICU. LinIf проверяет его с помощью LinTrcv_CheckWakeup, LinTrcv подтверждает его через LinIf_WakeupConfirmation, и после этого причину можно запросить (возвращаемые значения согласно R20-11). Источники: [SWS_LinTrcv_00012] [SWS_LinTrcv_91002] [SWS_LinTrcv_00007] LinTrcv-SWS с. 17 LinIf-SWS с. 98

SetWakeupMode Start LinTrcv_SetWakeupMode(LINNetwork, TrcvWakupMode) Modus TrcvWakupMode? Start->Modus Gespeichert Wakeup-Ereignis gespeichert? Modus->Gespeichert LINTRCV_WUMODE_ENABLE Gesperrt Оповещение для событий Wakeup заблокировано Modus->Gesperrt LINTRCV_WUMODE_DISABLE Geloescht Сохраненное событие Wakeup удалено Modus->Geloescht LINTRCV_WUMODE_CLEAR Sofort Оповещение в вызове или непосредственно после него Gespeichert->Sofort да Frei Оповещение для событий Wakeup разрешено Gespeichert->Frei нет Ende Возврат E_OK (E_NOT_OK, если режим не установлен) Sofort->Ende Frei->Ende Gesperrt->Ende Geloescht->Ende

Диаграмма деятельности: LinTrcv_SetWakeupMode выполняет ветвление в зависимости от запрошенного режима. Только при ENABLE с сохраненным событием сразу следует уведомление. Источники: [SWS_LinTrcv_00009] [SWS_LinTrcv_00169] LinTrcv-SWS с. 31

Доступ к аппаратному обеспечению, конфигурация каналов и разделение на разделы

Каким образом драйвер обращается к микросхеме, определяет контейнер выбора LinTrcvAccess LinTrcv-SWS Рис. 10.3 с. 45. Необходимо выбрать ровно один из двух вариантов:

  • LinTrcvDioAccess: выводы трансивера отображаются на каналы DIO.
  • LinTrcvSpiSequence: обращение к микросхеме с поддержкой SPI осуществляется через SPI-последовательность.

Диаграмма взята из R23-11 и более поздних релизов. Однако службы чтения и записи DIO, а также типы SPI перечислены в качестве используемых интерфейсов и импортированных типов уже в R20-11 [SWS_LinTrcv_91003] [SWS_LinTrcv_91001].

Для многоядерных систем в R20-11 действуют следующие правила:

  • Драйвер должен отклонять конфигурации с неподдерживаемыми назначениями разделов [SWS_LinTrcv_00174].
  • Разделы, на которые ссылается LinTrcvChannelEcucPartitionRef, должны быть подмножеством разделов, на которые ссылается LinTrcvEcucPartitionRef. Если модуль ссылается на разделы, каждый канал должен ссылаться ровно на один из них [SWS_LinTrcv_00176].
  • LinTrcvChannel и LinChannel одного и того же коммуникационного канала должны ссылаться на один и тот же раздел [SWS_LinTrcv_00177].

Многоядерное распределение было добавлено в R19-11 и уточнено в R24-11 LinTrcv-SWS с. 1.

Поведение при ошибке

Ошибки времени выполнения проявляются в возвращаемом значении:

  • При отсутствии или нарушении связи с трансивером LinTrcv_GetOpMode LinTrcv-SWS с. 26 и LinTrcv_GetBusWuReason возвращают LinTrcv-SWS с. 28 E_NOT_OK.
  • LinTrcv_SetOpMode возвращает E_NOT_OK, если переход не был принят или завершился сбоем [SWS_LinTrcv_00002].
  • LinTrcv_SetWakeupMode возвращает E_NOT_OK, если режим пробуждения не удалось установить LinTrcv-SWS с. 31.
  • Если причину пробуждения невозможно определить из-за ошибки, для этого предусмотрено значение LINTRCV_WU_ERROR [SWS_LinTrcv_00170].

Об ошибках разработки драйвер сообщает через Det_ReportError [SWS_LinTrcv_91003]. В R20-11 они приводят в LinTrcv_GetOpMode и LinTrcv_GetBusWuReason к E_NOT_OK [SWS_LinTrcv_00005] [SWS_LinTrcv_00007]. Места в документации из более поздних релизов называют конкретные проверки LinTrcv-SWS с. 26 LinTrcv-SWS с. 30 LinTrcv-SWS с. 29:

  • Вызов до инициализации: LINTRCV_E_UNINIT
  • Недопустимый номер сети: LINTRCV_E_INVALID_LIN_NETWORK
  • Нулевой указатель при LinTrcv_GetVersionInfo: LINTRCV_E_PARAM_POINTER

По содержанию эти проверки, вероятно, применимы и к R20-11 (интерпретация). Вопрос Q-58e3d310b525b810 (открытый) Однако в R20-11 была скорректирована классификация ошибок, а в R21-11 — коды ошибок. Поэтому идентификаторы в R20-11 могут отличаться LinTrcv-SWS с. 1.

Часть некорректных действий перехватывает уже LinIf. При недействительном Channel LinIf_SetTrcvMode и LinIf_GetTrcvMode сообщают об ошибке LINIF_E_NONEXISTENT_CHANNEL LinIf-SWS с. 90. Кроме того, LinIf_GetTrcvMode при недействительном канале или нулевом указателе возвращает E_NOT_OK LinIf-SWS с. 91. Если LinIf_WakeupConfirmation получает недействительный источник пробуждения, при активированном обнаружении ошибок инициируется LINIF_E_PARAM_WAKEUPSOURCE LinIf-SWS с. 98.

Дальнейшие подробные доказательства

Сгенерированное ИИ руководство. Основой являются нормативные требования для R20-11 и соответствующие разделы документации, частично из R23-11–R25-11. Различия между релизами указаны в тексте. Обязательную силу имеет исключительно спецификация.

LIN Transceiver Driver (LinTrcv)

Controls physical bus transceiver states and wakeup on LIN lines.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

функция LinTrcv_Init [SWS_LinTrcv_00001] 📄 PDF

void LinTrcv_Init (const LinTrcv_ConfigType* ConfigPtr);

Initializes the Lin Transceiver Driver module.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a6b1d693304d Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция LinTrcv_Init служит для базовой инициализации модуля драйвера приемопередатчика LIN в соответствии со спецификацией в [SWS_LinTrcv_00001]. Интерфейс объявляется через заголовочный файл LinTrcv.h и имеет числовой идентификатор сервиса 0x00 [SWS_LinTrcv_00001].

Использование и параметры

Вызов LinTrcv_Init выполняется синхронно и не имеет возвращаемого значения (void) [SWS_LinTrcv_00001]. В качестве единственного передаваемого параметра передается входной указатель ConfigPtr типа const LinTrcv_ConfigType*, который указывает на выбранный набор конфигурационных данных приемопередатчика LIN [SWS_LinTrcv_00001]. Другие параметры, такие как входные/выходные или чисто выходные параметры, для этой процедуры отсутствуют [SWS_LinTrcv_00001].

Параллелизм и ограничения

В отношении поведения при параллелизме LinTrcv_Init строго классифицирована как неревентрантная (Non Reentrant) [SWS_LinTrcv_00001]. Поэтому параллельные или прерывающие вызовы этой функции в системе должны быть исключены. Кроме того, во время инициализации не должно происходить конкурентных доступов. Интерпретация: выполнение функции инициализации, как правило, должно осуществляться централизованно в рамках фазы запуска системы, еще до вызова других сервисов драйвера приемопередатчика LIN. Вопрос Q-9845a0c76e3146fa (открытый)

Этот текст был создан ИИ; все сведения основаны на требованиях стандарта AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2b8c06203f94 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Функция LinTrcv_SetOpMode служит для переключения внутреннего состояния драйвера LIN-трансивера в переданный рабочий режим в соответствии с [SWS_LinTrcv_00002].

Использование и семантика

  • Контекст вызова и параметры: вызов адресует через параметр LinNetwork соответствующую сеть LIN, тогда как OpMode (тип LinTrcv_TrcvModeType) задает целевой рабочий режим ([SWS_LinTrcv_00002]). Интерфейс доступен через LinTrcv.h.
  • Возвращаемые значения: функция возвращает E_OK, как только состояние трансивера успешно изменено на запрошенный режим. Если смена состояния завершается неудачно, не принимается или параметр находится вне допустимого диапазона, возвращается E_NOT_OK ([SWS_LinTrcv_00002]).
  • Синхронное выполнение: сервис работает синхронно (Sync/Async: Synchronous) под Service-ID 0x01 ([SWS_LinTrcv_00002]).

Параллелизм и ограничения

Интерфейс специфицирован как нереентерабельный (Non Reentrant) ([SWS_LinTrcv_00002]). Поэтому вызывающие стороны должны гарантировать, что параллельные вызовы для одного и того же модуля или одной и той же сети исключены.

Этот текст был создан ИИ. Он не заменяет изучение соответствующих спецификаций AUTOSAR.

Руководство разработчика реализации в подготовке (сложность I1)

функция 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.

функция LinTrcv_CheckWakeup [SWS_LinTrcv_00012] 📄 PDF

Std_ReturnType LinTrcv_CheckWakeup (uint8 LinNetwork);

Service LinTrcv_CheckWakeup.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d95f71801283 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция LinTrcv_CheckWakeup служит для проверки того, было ли обнаружено событие пробуждения в адресованной сети LIN [SWS_LinTrcv_00012]. Она напрямую информирует вызывающую сторону о наличии соответствующего условия пробуждения [SWS_LinTrcv_00012].

Вызов и параметры

Функция имеет идентификатор сервиса 0x07 и предоставляется через заголовочный файл LinTrcv.h [SWS_LinTrcv_00012]:

  • LinNetwork (входной параметр, uint8): обозначает сеть LIN, к которой должен быть применен вызов API [SWS_LinTrcv_00012].

Возвращаемые значения

Возвращаемое значение типа Std_ReturnType сигнализирует о результате проверки пробуждения [SWS_LinTrcv_00012]:

  • E_OK: событие пробуждения было успешно обнаружено в указанной сети LIN [SWS_LinTrcv_00012].
  • E_NOT_OK: в указанной сети LIN событие пробуждения обнаружено не было [SWS_LinTrcv_00012].

Параллелизм

Выполнение LinTrcv_CheckWakeup происходит полностью синхронно и специфицировано как ревентрантное [SWS_LinTrcv_00012]. Синхронное выполнение гарантирует наличие результата непосредственно при возврате из функции.

Данное указание по использованию было сгенерировано ИИ на основе спецификации для LIN Transceiver Driver в AUTOSAR CP R20-11.

функция 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

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 85db2195cf25 Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Синхронная функция LinTrcv_SetWakeupMode служит для активации, деактивации и очистки уведомлений о событиях пробуждения в адресованной сети LIN [SWS_LinTrcv_00009]. Она объявлена через заголовочный файл LinTrcv.h и имеет идентификатор сервиса 0x05 [SWS_LinTrcv_00009].

Параметры и возвращаемые значения

Функция ожидает два входных параметра [SWS_LinTrcv_00009]:

  • LINNetwork (uint8): обозначает конкретную сеть LIN, к которой должен быть применен API [SWS_LinTrcv_00009].
  • TrcvWakupMode (LinTrcv_TrcvWakeupModeType): передает запрошенный режим пробуждения или причину для приемопередатчика [SWS_LinTrcv_00009].

В качестве возвращаемого значения возвращается статус типа Std_ReturnType [SWS_LinTrcv_00009]:

  • E_OK: указывает на то, что состояние приемопередатчика было успешно переведено в запрошенный режим [SWS_LinTrcv_00009].
  • E_NOT_OK: сигнализирует о том, что вызов завершился сбоем из-за ошибок разработки или требуемый режим пробуждения не удалось установить [SWS_LinTrcv_00009].

Параллелизм и ограничения

Интерфейс специфицирован как неревентрантный (non Reentrant) и выполняет изменение состояния синхронно [SWS_LinTrcv_00009]. Поэтому вызывающие компоненты должны гарантировать отсутствие параллельных вызовов для одного и того же интерфейса.

Этот совет по использованию был сгенерирован ИИ на основе спецификации AUTOSAR Classic R20-11.

Руководство разработчика реализации в подготовке (сложность I1)

тип LinTrcv_ConfigType [SWS_LinTrcv_00172] 📄 PDF

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

тип LinTrcv_TrcvModeType [SWS_LinTrcv_00168] 📄 PDF

Operating modes of the LIN Transceiver Driver

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 304001f922be Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Тип перечисления LinTrcv_TrcvModeType определяет режимы работы для драйвера приемопередатчика LIN в соответствии с [SWS_LinTrcv_00168]. Определение типа содержится в заголовочном файле Lin_GeneralTypes.h и, таким образом, доступно вышестоящим уровням программного обеспечения [SWS_LinTrcv_00168].

Диапазон значений включает три стандартизированных состояния для приемопередатчика [SWS_LinTrcv_00168]:

  • LINTRCV_TRCV_MODE_NORMAL: обозначает штатный рабочий режим (Transceiver mode NORMAL) приемопередатчика LIN [SWS_LinTrcv_00168].
  • LINTRCV_TRCV_MODE_STANDBY: представляет режим ожидания (Transceiver mode STANDBY) приемопередатчика [SWS_LinTrcv_00168].
  • LINTRCV_TRCV_MODE_SLEEP: описывает спящий режим (Transceiver mode SLEEP) для приемопередатчика LIN [SWS_LinTrcv_00168].

С точки зрения применения и функционального взаимодействия данный тип перечисления служит для единообразного моделирования состояний приемопередатчика [SWS_LinTrcv_00168]. Предположительно, данный тип используется в качестве параметра или возвращаемого значения в функциях драйвера для запроса или опроса целенаправленных смен состояний между штатной работой, готовностью и энергосберегающим спящим состоянием. Вопрос Q-8966f1299f224eff (открытый) Специфические контексты вызова, коды ошибок, а также свойства параллелизма и ревентрантности закреплены не за самим этим типом данных, а зависят от соответствующих API драйвера приемопередатчика [SWS_LinTrcv_00168].

Этот текст был сгенерирован ИИ и служит для технической ориентации.

Руководство разработчика реализации в подготовке (сложность I1)

тип LinTrcv_TrcvWakeupModeType [SWS_LinTrcv_00169] 📄 PDF

Wake up operating modes of the LIN Transceiver Driver.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e813afb11b1a Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование и диапазон значений

Тип LinTrcv_TrcvWakeupModeType представляет собой перечисление, определяющее режимы работы для событий пробуждения драйвера приемопередатчика LIN [SWS_LinTrcv_00169]. Он предоставляется через заголовочный файл Lin_GeneralTypes.h [SWS_LinTrcv_00169].

Перечисление включает следующие значения для управления адресованной сетью [SWS_LinTrcv_00169]:

  • LINTRCV_WUMODE_ENABLE: активирует уведомление о событиях пробуждения в адресованной сети [SWS_LinTrcv_00169].
  • LINTRCV_WUMODE_DISABLE: деактивирует уведомление о событиях пробуждения в адресованной сети [SWS_LinTrcv_00169].
  • LINTRCV_WUMODE_CLEAR: сбрасывает ранее сохранённое событие пробуждения в адресуемой сети [SWS_LinTrcv_00169].

Обработка ошибок и граничные условия

Для самого типа в спецификации не определены какие-либо специфические коды ошибок, возвращаемые значения или сообщения об ошибках DET/DEM [SWS_LinTrcv_00169]. Будучи типом данных, он не имеет прямых ограничений реентерабельности или выполнения.

Взаимодействие

Интерпретация: данный тип, вероятно, служит входным параметром в API-функциях драйвера приёмопередатчика LIN для включения/выключения распознавания пробуждения применительно к конкретной сети или для сброса статуса пробуждения [SWS_LinTrcv_00169]. Вопрос Q-cfb3e28d7baefc72 (открытый)

Этот текст создан ИИ. Он основан исключительно на данных спецификации из SWS_LinTrcv_00169.

Руководство разработчика реализации в подготовке (сложность I1)

тип 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#0d6bddf8
Content hash
0d6bddf8
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_LINTransceiverDriver.pdf#nameddest=SWS_LinTrcv_00001

Карта тем

Подробный вид

Выберите элемент в оглавлении.

Инициализация и состояние

LinTrcv_GetVersionInfo функция

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

void LinTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);
LinTrcv_Init функция

Initializes the Lin Transceiver Driver module.

void LinTrcv_Init (const LinTrcv_ConfigType* ConfigPtr);

Сервисы

LinTrcv_CheckWakeup функция

Service LinTrcv_CheckWakeup.

Std_ReturnType LinTrcv_CheckWakeup (uint8 LinNetwork);
LinTrcv_GetBusWuReason функция

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);
LinTrcv_GetOpMode функция

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

Std_ReturnType LinTrcv_GetOpMode (uint8 LinNetwork, LinTrcv_TrcvModeType* OpMode);
LinTrcv_SetOpMode функция

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);
LinTrcv_SetWakeupMode функция

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);

Типы

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.