DEENESPTFRRUARHIKOZHNL

CAN Transceiver Driver (CanTrcv)

ModulCanTrcv (CAN Transceiver Driver)
BSW-Modul-ID70
Standard-Header#include "CanTrcv.h"
SWS-SpezifikationAUTOSAR_SWS_CANTransceiverDriver.pdf
ClusterCAN

Guia do móduloGERADO POR IA

Controla transceptores CAN externos: modos de operação, detecção de wake-up e despertar seletivo através de wake-up frames.
GERADO POR IA não revisado Modelo: claude-opus-5-5 · Esforço: high · Temperatura: não controlável · Prompt: 61900c5cf397 Procedência Perguntas em aberto (4)
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Controla transceptores CAN externos: modos de operação, detecção de wake-up e despertar seletivo através de wake-up frames.

O CanTrcv controla transceptores CAN externos e mapeia-os num modelo de modos genérico com NORMAL, STANDBY e SLEEP. O CanIf solicita mudanças de modo de forma assíncrona; o driver reporta os modos alcançados através de uma indicação [SWS_CanTrcv_00158]. Adicionalmente, ele deteta wake-ups, notifica-os ao EcuM e, com hardware adequado, suporta o despertar seletivo através de wake-up frames. Restrição mais importante: SLEEP só é alcançável a partir de STANDBY [SWS_CanTrcv_00104], e nenhum wake-up pode ser perdido enquanto as notificações estiverem desativadas.

O CAN Transceiver Driver (CanTrcv) encapsula transceptores CAN externos por trás de um modelo de modo genérico. Com isso, o ComM e o EcuM permanecem desacoplados do hardware concreto (SWS CanTrcv p. 19). Para cada tipo de hardware de transceptor existe uma instância de driver [SWS_CanTrcv_00016]. O driver é acessado via CanIf e controla o hardware via Dio e Spi, que devem ser inicializados antes de CanTrcv_Init [SWS_CanTrcv_00099]. Após a inicialização, cada transceptor fica em STANDBY ou SLEEP, configurado por canal [SWS_CanTrcv_00148]. CanTrcv_DeInit leva a NOT_ACTIVE [SWS_CanTrcv_91003].

CanTrcv_SetOpMode alterna entre NORMAL, STANDBY e SLEEP [SWS_CanTrcv_00102]. SLEEP só é permitido a partir de STANDBY [SWS_CanTrcv_00104]. Uma mudança para o modo atual não é um erro [SWS_CanTrcv_00161]. A função opera de forma assíncrona: assim que o modo de destino é atingido, o CanTrcv reporta isso por meio de CanIf_TrcvModeIndication [SWS_CanTrcv_00158].

zustaende cluster_power_on POWER_ON cluster_active ACTIVE start NOT_ACTIVE NOT_ACTIVE start->NOT_ACTIVE Power on stop NOT_ACTIVE->stop Power off STANDBY CANTRCV_TRCVMODE_STANDBY NOT_ACTIVE->STANDBY CanTrcv_Init() [Init-Zustand STANDBY] SLEEP CANTRCV_TRCVMODE_SLEEP NOT_ACTIVE->SLEEP CanTrcv_Init() [Init-Zustand SLEEP] NORMAL CANTRCV_TRCVMODE_NORMAL NORMAL->NOT_ACTIVE CanTrcv_DeInit() NORMAL->NORMAL SetOpMode(NORMAL) NORMAL->STANDBY SetOpMode(STANDBY) STANDBY->NORMAL SetOpMode(NORMAL) STANDBY->STANDBY SetOpMode(STANDBY) STANDBY->SLEEP SetOpMode(SLEEP) SLEEP->NORMAL SetOpMode(NORMAL) SLEEP->SLEEP SetOpMode(SLEEP)

Diagrama de estados: A inicialização leva a STANDBY ou SLEEP, SLEEP só é acessível via STANDBY, DeInit leva a NOT_ACTIVE. Fontes: SWS CanTrcv p. 19, [SWS_CanTrcv_00148].

A CanIf verifica wake-ups por meio de CanTrcv_CheckWakeup. Essa função reporta wake-ups detectados via EcuM_SetWakeupEvent [SWS_CanTrcv_00146]. CanTrcv_MainFunction varre os barramentos em STANDBY e SLEEP [SWS_CanTrcv_00112]. CanTrcv_SetWakeupMode pode bloquear ou liberar notificações, ou limpar wake-ups armazenados. Nenhum wake-up pode ser perdido durante esse processo [SWS_CanTrcv_00095].

Transceptores compatíveis com PN (CanTrcvHwPnSupport) também despertam por meio de wake-up frames configurados [SWS_CanTrcv_00175]. Durante o shutdown, o CanSM primeiro limpa a flag WUF e depois comuta para STANDBY [SWS_CanTrcv_00194]. Em seguida, o CanSM solicita a verificação assíncrona da flag de wake [SWS_CanTrcv_00224].

Em caso de erro, aplica-se o seguinte:

  • Com a DET ativada, erros de desenvolvimento são reportados; com a DET desativada, as APIs retornam E_NOT_OK [SWS_CanTrcv_00050].
  • Comunicação de hardware com falha é reportada pelo driver como erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL [SWS_CanTrcv_91006].
  • Erros de barramento são reportados por CanTrcv_MainFunctionDiagnostics como CANTRCV_E_BUS_ERROR ao DEM [SWS_CanTrcv_00206].
Shutdown com Partial Networking (SPI assíncrono)CanSMCanIfCanTrcvSpiAusgang: Anforderung NoCom,Transceiver NORMAL, Controller STARTEDUse Case: Parte I: limpar flag WUF, STANDBYCanIf_ClearTrcvWufFlag(TransceiverId)CanTrcv_ClearTrcvWufFlag(Transceiver)Spi_AsyncTransmit(Sequence)CanIf_ClearTrcvWufFlagIndication(TransceiverId)CanSM_ClearTrcvWufFlagIndicationCanIf_SetControllerMode(ControllerId, CAN_CS_STOPPED)CanIf_SetTrcvMode(TransceiverId, CANIF_TRCV_MODE_STANDBY)CanTrcv_SetOpMode(Transceiver, STANDBY)Spi_AsyncTransmit(Sequence)CanIf_TrcvModeIndication(TransceiverId, STANDBY)CanSM_TransceiverModeIndication(TransceiverId, STANDBY)Use Case: Parte II: sleep do controlador, verificar flag de wake-upCanIf_SetControllerMode(ControllerId, CAN_CS_SLEEP)CanIf_CheckTrcvWakeFlag(TransceiverId)CanTrcv_CheckWakeFlag(Transceiver)Spi_AsyncTransmit (Wake-Flag lesen)CanIf_CheckTrcvWakeFlagIndication(TransceiverId)<User_CheckTrcvWakeFlagIndication>

Diagrama de sequência: No shutdown de PN, a flag WUF é limpa, o transceptor é comutado para STANDBY e a flag de wake é verificada de forma assíncrona. Fontes: SWS CanTrcv p. 55, [SWS_CanTrcv_00194]

Função: Driver para transceptores CAN externos abaixo de CanIf

O CAN Transceiver Driver (CanTrcv) aciona módulos transceptores CAN externos. Ele mapeia seus estados de hardware em um modelo genérico de modo de operação. Esse modelo destina-se a cobrir muitos transceptores disponíveis de forma uniforme. Segundo a especificação, ele aceita ter um ou dois estados a mais para um componente específico para alcançar isso, mas desacopla o ComM e o EcuM do hardware (SWS CanTrcv p. 19). O hardware do transceptor deve, para isso, fornecer uma interface que possa ser mapeada neste modelo [SWS_CanTrcv_00098].

Para cima, a CanIf é o parceiro imediato:

Os retornos ocorrem via CanIf_TrcvModeIndication, que pertence às interfaces obrigatórias [SWS_CanTrcv_00085]. Para as indicações de PN, outros callbacks da CanIf estão listados [SWS_CanTrcv_00086]. Para baixo, o CanTrcv utiliza Dio e Spi para o acionamento de hardware, bem como Icu, DEM e tipos do EcuM, como mostra a lista de importação [SWS_CanTrcv_00084]. O driver implementa tempos de espera nas transições de estado com Tm_BusyWait1us16bit [SWS_CanTrcv_00230]. CanTrcv_MainFunction e CanTrcv_MainFunctionDiagnostics são chamados pelo escalonador BSW (SWS CanTrcv p. 47).

kontext EcuM EcuM / Integrationscode CanTrcv CanTrcv EcuM->CanTrcv CanTrcv_Init SchM BSW-Scheduler (SchM) SchM->CanTrcv CanTrcv_MainFunction CanTrcv_MainFunctionDiagnostics CanSM CanSM CanIf CanIf CanSM->CanIf CanIf_SetTrcvMode CanIf_ClearTrcvWufFlag CanIf_CheckTrcvWakeFlag CanIf->CanSM CanSM_TransceiverModeIndication CanIf->CanTrcv SetOpMode, GetOpMode, GetBusWuReason, SetWakeupMode, CheckWakeup, ClearTrcvWufFlag, CheckWakeFlag CanTrcv->EcuM EcuM_SetWakeupEvent CanTrcv->CanIf CanIf_TrcvModeIndication CanIf_ClearTrcvWufFlagIndication CanIf_CheckTrcvWakeFlagIndication Dio Dio CanTrcv->Dio Dio_WriteChannel Spi Spi CanTrcv->Spi SPI-Sequenzen Icu Icu CanTrcv->Icu Icu_EnableNotification Icu_DisableNotification Tm Tm CanTrcv->Tm Tm_BusyWait1us16bit Det Det CanTrcv->Det erros de desenvolvimento e de tempo de execução Dem Dem CanTrcv->Dem Dem_SetEventStatus (CANTRCV_E_BUS_ERROR) HW CAN-Transceiver-Hardware Dio->HW Pins Spi->HW Register

Diagrama de contexto: CanTrcv é atendido por CanIf, EcuM e pelo escalonador, acessando o hardware por meio de Dio, Spi e Icu. Ele reporta erros para DET e DEM. Fontes: [SWS_CanTrcv_00084], [SWS_CanTrcv_00085], [SWS_CanTrcv_00146], SWS EcuM p. 35

Inicialização, ciclo de vida e desinicialização

Antes de chamar CanTrcv_Init [SWS_CanTrcv_00001], o ambiente deve ter inicializado todos os drivers utilizados, especialmente Spi e Dio [SWS_CanTrcv_00099]. O trecho do documento acrescenta dois requisitos temporais: a inicialização deve ocorrer logo após o power-up, e os serviços subjacentes devem ser curtos e síncronos (SWS CanTrcv p. 26).

CanTrcv_Init inicializa todos os transceptores conectados de acordo com suas sequências de inicialização e a configuração de ConfigPtr [SWS_CanTrcv_00180]. O conteúdo de CanTrcv_ConfigType é específico de hardware [SWS_CanTrcv_00209]. Depois disso, cada transceptor se encontra em CANTRCV_TRCVMODE_SLEEP ou CANTRCV_TRCVMODE_STANDBY; isso é configurável por transceptor [SWS_CanTrcv_00148].

A inicialização verifica simultaneamente a ocorrência de wake-ups:

  • Se o hardware suportar, CanTrcv_Init verifica se a atividade do transceptor disparou o despertar. O resultado é reportado via EcuM_SetWakeupEvent com a fonte de CanTrcvWakeupSourceRef [SWS_CanTrcv_00167].
  • Em transceptores compatíveis com PN, a sequência de configuração também é executada novamente se a flag POR ou SYSERR estiver definida. Caso contrário, a configuração armazenada no transceptor permanece válida [SWS_CanTrcv_00182].
  • Uma flag POR definida também é reportada por meio de CanTrcvPorWakeupSourceRef como wake-up [SWS_CanTrcv_00183].

A notificação de POR se adequa a transceptores com fonte de alimentação integrada. Neles, um despertar passivo parece um power-on reset para a ECU (SWS EcuM p. 70).

init start vor ambiente inicializou Spi e Dio start->vor init CanTrcv_Init(ConfigPtr) vor->init komm comunicação com o transceptor correta? init->komm noctrl Laufzeitfehler CANTRCV_E_NO_TRCV_CONTROL komm->noctrl não baud taxa de transmissão suportada? komm->baud sim baudErr DET: CANTRCV_E_BAUDRATE_NOT_SUPPORTED baud->baudErr não seq executar sequências de inicialização de acordo com a configuração baud->seq sim porsys hardware de PN: POR ou SYSERR definido? seq->porsys rekonf executar sequência de configuração novamente porsys->rekonf sim wu wake-up por atividade do transceptor? porsys->wu não / sem HW de PN por POR-Flag gesetzt? rekonf->por porWu EcuM_SetWakeupEvent (CanTrcvPorWakeupSourceRef) por->porWu sim por->wu não porWu->wu wuMeld EcuM_SetWakeupEvent (CanTrcvWakeupSourceRef) wu->wuMeld sim ziel estado configurado por canal: CANTRCV_TRCVMODE_STANDBY ou CANTRCV_TRCVMODE_SLEEP wu->ziel não wuMeld->ziel ende ziel->ende

Diagrama de atividades: A inicialização verifica a acessibilidade do hardware, trata POR/SYSERR, reporta wake-ups ao EcuM e termina por canal em STANDBY ou SLEEP. A ordem das verificações é uma interpretação. Fontes: [SWS_CanTrcv_00180], [SWS_CanTrcv_00182], [SWS_CanTrcv_00183], [SWS_CanTrcv_00167], [SWS_CanTrcv_00148]

CanTrcv_DeInit [SWS_CanTrcv_91001] coloca o hardware do transceptor no estado NOT_ACTIVE [SWS_CanTrcv_91003]. Nesse estado, ele pode ser configurado com uma nova sequência de configuração (SWS CanTrcv p. 49). O estado inicial esperado é CANTRCV_TRCVMODE_NORMAL; caso contrário, a verificação de erro de desenvolvimento reporta CANTRCV_E_TRCV_NOT_NORMAL [SWS_CanTrcv_91005].

Modos de operação NORMAL, STANDBY e SLEEP

CanTrcv_TrcvModeType define os três modos [SWS_CanTrcv_00163]. CanTrcv_SetOpMode [SWS_CanTrcv_00002] comuta o estado interno do transceptor endereçado para um desses modos [SWS_CanTrcv_00102]. Para as transições aplica-se:

zustaende cluster_power_on POWER_ON cluster_active ACTIVE start NOT_ACTIVE NOT_ACTIVE start->NOT_ACTIVE Power on stop NOT_ACTIVE->stop Power off STANDBY CANTRCV_TRCVMODE_STANDBY NOT_ACTIVE->STANDBY CanTrcv_Init() [Init-Zustand STANDBY] SLEEP CANTRCV_TRCVMODE_SLEEP NOT_ACTIVE->SLEEP CanTrcv_Init() [Init-Zustand SLEEP] NORMAL CANTRCV_TRCVMODE_NORMAL NORMAL->NOT_ACTIVE CanTrcv_DeInit() NORMAL->NORMAL SetOpMode(NORMAL) NORMAL->STANDBY SetOpMode(STANDBY) STANDBY->NORMAL SetOpMode(NORMAL) STANDBY->STANDBY SetOpMode(STANDBY) STANDBY->SLEEP SetOpMode(SLEEP) SLEEP->NORMAL SetOpMode(NORMAL) SLEEP->SLEEP SetOpMode(SLEEP)

Diagrama de estados: Após a inicialização, o transceptor fica em STANDBY ou SLEEP. SLEEP só é acessível via STANDBY, NORMAL a partir de todos os modos. DeInit leva a NOT_ACTIVE. Fontes: SWS CanTrcv p. 19, [SWS_CanTrcv_00148], [SWS_CanTrcv_00103], [SWS_CanTrcv_00104], [SWS_CanTrcv_91003]

CanTrcv_SetOpMode opera de forma assíncrona: E_OK significa apenas que a solicitação foi aceita (SWS CanTrcv p. 33). Somente quando o modo de destino é alcançado, o CanTrcv chama CanIf_TrcvModeIndication com a TransceiverId abstrata da CanIf [SWS_CanTrcv_00158]. O CanSM ignora essa mensagem para SLEEP, porque SLEEP só é solicitado pelo código de integração (SWS CanSM p. 94).

Em hardware compatível com PN, CanTrcv_SetOpMode verifica adicionalmente as flags POR e SYSERR [SWS_CanTrcv_00186]. Após um POR, ele reinicializa o transceptor [SWS_CanTrcv_00187]. CanTrcv_GetOpMode [SWS_CanTrcv_00005] retorna o estado atual de forma síncrona [SWS_CanTrcv_00106].

mudança de modo do transceptorCanSMCanIfCanTrcvDio / SpiCanIf_SetTrcvMode(TransceiverId, TransceiverMode)CanTrcv_SetOpMode(Transceiver, OpMode)optPN-Hardware (CanTrcvHwPnSupport = TRUE)verificar flags POR/SYSERR,reinicializar após PORDio_WriteChannel ou sequência SPIE_OK (Anforderung angenommen)E_OKassíncrono: modo de destino éalcançado mais tardeCanIf_TrcvModeIndication(TransceiverId, TransceiverMode)CanSM_TransceiverModeIndication(TransceiverId, TransceiverMode)mensagem para SLEEP ignorada pelo CanSM

Diagrama de sequência: Uma mudança de modo é aceita de forma síncrona e confirmada posteriormente por indicação via CanIf ao CanSM. Fontes: SWS CanTrcv p. 52, [SWS_CanTrcv_00158], [SWS_CanTrcv_00186]

Wake-up: Detecção, causa e controle de notificação

Um wake-up é detectado por interrupção ou por polling (SWS EcuM p. 179). A CanIf consulta a função CanTrcv_CheckWakeup [SWS_CanTrcv_00143] por meio de CanIf_CheckWakeup (SWS CanIf p. 56). Se o hardware suportar, essa função valida um wake-up por atividade do transceptor e o reporta por EcuM_SetWakeupEvent [SWS_CanTrcv_00146].

CanTrcv_MainFunction [SWS_CanTrcv_00013] varre todos os barramentos em STANDBY e SLEEP em busca de wake-ups e define uma flag de wake-up [SWS_CanTrcv_00112]. Presumivelmente, ela é relevante principalmente em configurações de polling; o diagrama de configuração prevê o valor CanTrcvWakeUpByPolling para isso (ECUC-Parameter p. 185). Pergunta Q-6144fdedb98cea44 (aberta)

CanTrcv_GetBusWuReason [SWS_CanTrcv_00007] fornece a causa do despertar detectada pelo transceptor [SWS_CanTrcv_00107]. Valores possíveis são, por exemplo, CANTRCV_WU_BY_BUS, CANTRCV_WU_INTERNALLY ou CANTRCV_WU_RESET [SWS_CanTrcv_00165]. O quão precisamente as causas podem ser distinguidas depende fortemente do hardware (SWS CanTrcv p. 35).

O driver utiliza canais ICU para interrupções de wake-up. Ele chama Icu_EnableNotification e Icu_DisableNotification apenas se CanTrcvIcuChannelRef estiver configurado [SWS_CanTrcv_00171]. Ao comutar para STANDBY, ele ativa os canais [SWS_CanTrcv_00172]. A passagem do documento de R24-11 menciona adicionalmente a desativação ao comutar para NORMAL (SWS CanTrcv p. 23).

Detecção de wake-up via transceptorTransceiver-HardwareEcuM / IntegrationscodeCanIfCanTrcvaltWake-up per InterruptWake-up-Interrupt (ICU-Kanal)CanIf_CheckWakeup(WakeupSource)CanTrcv_CheckWakeup(Transceiver)Wake-up durch Transceiver-validar atividadeEcuM_SetWakeupEvent(CanTrcvWakeupSourceRef)Wake-up per PollingCanTrcv_MainFunction: Busse inverificar STANDBY/SLEEP, definir flagCanIf_CheckWakeup(WakeupSource)CanTrcv_CheckWakeup(Transceiver)EcuM_SetWakeupEvent(CanTrcvWakeupSourceRef)Use Case: Ursache abfragenCanIf_GetTrcvWakeupReason(TransceiverId, TrcvWuReasonPtr)CanTrcv_GetBusWuReason(Transceiver, reason)E_OK, reason = z. B. CANTRCV_WU_BY_BUSE_OK

Diagrama de sequência: Um wake-up é verificado no transceptor por interrupção ou polling via CanIf, reportado ao EcuM e posteriormente consultado quanto à sua causa. Fontes: SWS EcuM p. 179, SWS EcuM p. 138, SWS EcuM p. 140, [SWS_CanTrcv_00146], [SWS_CanTrcv_00112]

CanTrcv_SetWakeupMode [SWS_CanTrcv_00009] controla a notificação de wake-up por meio de CanTrcv_TrcvWakeupModeType [SWS_CanTrcv_00164]:

Na fase bloqueada, nenhum wake-up pode ser perdido [SWS_CanTrcv_00095]. A exclusão serve para descartar wake-ups armazenados com notificação bloqueada sob controle da camada superior [SWS_CanTrcv_00150]. A CanIf repassa a solicitação ao CanTrcv por meio de CanIf_SetTrcvWakeupMode (SWS CanIf p. 100).

Despertar seletivo (Partial Networking)

No Partial Networking, os nós permanecem em modo de baixo consumo até que wake-up frames (WUF) predefinidos os acordem. Transceptores compatíveis com PN não reagem apenas ao wake-up pattern (WUP), mas também a esses frames (SWS CanTrcv p. 27). Se o hardware suporta isso é indicado por CanTrcvHwPnSupport [SWS_CanTrcv_00174]. Somente quando esse parâmetro for TRUE, o container CanTrcvPartialNetwork e cinco APIs existirão: CanTrcv_GetTrcvSystemData, CanTrcv_ClearTrcvWufFlag, CanTrcv_ReadTrcvTimeoutFlag, CanTrcv_ClearTrcvTimeoutFlag e CanTrcv_ReadTrcvSilenceFlag [SWS_CanTrcv_00175].

Os parâmetros CanTrcvPnFrameCanId, CanTrcvPnFrameCanIdMask e CanTrcvPnFrameDataMask definem a quais frames o transceptor reage [SWS_CanTrcv_00177]. CanTrcv_SetPNActivationState [SWS_CanTrcv_00219] ativa a função de despertar PN com PN_ENABLED [SWS_CanTrcv_00221] e a desativa com PN_DISABLED [SWS_CanTrcv_00222].

O procedimento de shutdown é central:

  1. O CanSM limpa a flag WUF por meio de CanTrcv_ClearTrcvWufFlag para que nenhum wake-up por frame seja perdido ao entrar no modo de baixo consumo. Em seguida, o transceptor passa para STANDBY [SWS_CanTrcv_00194].
  2. O CanTrcv confirma a limpeza com CanIf_ClearTrcvWufFlagIndication [SWS_CanTrcv_00195].
  3. Por fim, o CanSM solicita a verificação assíncrona CanTrcv_CheckWakeFlag [SWS_CanTrcv_00223]. O CanTrcv reporta o resultado por meio de CanIf_CheckTrcvWakeFlagIndication [SWS_CanTrcv_00224].

Para conexão SPI, a especificação descreve uma variante assíncrona (SWS CanTrcv p. 55) e uma síncrona (SWS CanTrcv p. 57).

Shutdown com Partial Networking (SPI assíncrono)CanSMCanIfCanTrcvSpiAusgang: Anforderung NoCom,Transceiver NORMAL, Controller STARTEDUse Case: Parte I: limpar flag WUF, STANDBYCanIf_ClearTrcvWufFlag(TransceiverId)CanTrcv_ClearTrcvWufFlag(Transceiver)Spi_AsyncTransmit(Sequence)CanIf_ClearTrcvWufFlagIndication(TransceiverId)CanSM_ClearTrcvWufFlagIndicationCanIf_SetControllerMode(ControllerId, CAN_CS_STOPPED)CanIf_SetTrcvMode(TransceiverId, CANIF_TRCV_MODE_STANDBY)CanTrcv_SetOpMode(Transceiver, STANDBY)Spi_AsyncTransmit(Sequence)CanIf_TrcvModeIndication(TransceiverId, STANDBY)CanSM_TransceiverModeIndication(TransceiverId, STANDBY)Use Case: Parte II: sleep do controlador, verificar flag de wake-upCanIf_SetControllerMode(ControllerId, CAN_CS_SLEEP)CanIf_CheckTrcvWakeFlag(TransceiverId)CanTrcv_CheckWakeFlag(Transceiver)Spi_AsyncTransmit (Wake-Flag lesen)CanIf_CheckTrcvWakeFlagIndication(TransceiverId)<User_CheckTrcvWakeFlagIndication>

Diagrama de sequência: No shutdown de PN, a flag WUF é limpa, o transceptor é comutado para STANDBY e a flag de wake é verificada assincronamente após o sleep do controlador. Fontes: SWS CanTrcv p. 55, SWS CanTrcv p. 56, SWS CanSM p. 36, [SWS_CanTrcv_00194], [SWS_CanTrcv_00224]

Para o diagnóstico, CanTrcv_GetTrcvSystemData [SWS_CanTrcv_00213] lê a configuração e o estado do transceptor como uint32 a partir de [SWS_CanTrcv_00189]. As flags de timeout e de silêncio são lidas ou apagadas através de CanTrcv_ReadTrcvTimeoutFlag [SWS_CanTrcv_00215], CanTrcv_ClearTrcvTimeoutFlag [SWS_CanTrcv_00216] e CanTrcv_ReadTrcvSilenceFlag [SWS_CanTrcv_00217]. O seu estado é indicado por CanTrcv_TrcvFlagStateType a [SWS_CanTrcv_00211].

Configuração e referência de instâncias

Para cada tipo de hardware de transceptor existe uma instância de driver que atende todos os componentes deste tipo [SWS_CanTrcv_00016]. O diagrama do CanIf ilustra o caso de controladores idênticos com diferentes tipos de transceptor, o que exige dois drivers de transceptor (SWS CanIf p. 34). Cada canal é descrito por um contentor CanTrcvChannel (multiplicidade 1..*). Este contém, entre outros, CanTrcvHwPnSupport, CanTrcvInitState, CanTrcvWakeupByBusUsed e as referências da fonte de wake-up (SWS CanTrcv p. 70).

Uma diferença entre as fontes diz respeito ao estado após o Init. O diagrama de configuração indica CanTrcvOpModeNormal como padrão de CanTrcvInitState (ECUC-Parameter p. 187). No entanto, a especificação normativa para o R20-11 é [SWS_CanTrcv_00148], que prevê apenas SLEEP ou STANDBY após o Init. O driver deve rejeitar configurações com mapeamentos de partição não suportados [SWS_CanTrcv_00231].

Comportamento em caso de erro

Os erros de desenvolvimento de [SWS_CanTrcv_00050] seguem um padrão uniforme. Com a DET ativada, as APIs notificam:

Se a DET estiver desativada, as APIs retornam E_NOT_OK nestes casos.

Se a comunicação com o transceptor estiver perturbada, o driver reporta o erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL [SWS_CanTrcv_91006] através de Det_ReportRuntimeError [SWS_CanTrcv_00085]. Isto aplica-se, por exemplo, em Init [SWS_CanTrcv_00113], SetOpMode [SWS_CanTrcv_00114], GetOpMode [SWS_CanTrcv_00115], SetWakeupMode [SWS_CanTrcv_00117], GetTrcvSystemData [SWS_CanTrcv_00190] e ClearTrcvWufFlag [SWS_CanTrcv_00196]. Uma exceção é CanTrcv_GetBusWuReason: neste caso, de acordo com [SWS_CanTrcv_00116], retorna E_OK. Uma taxa de transmissão não suportada é reportada pelo Init como CANTRCV_E_BAUDRATE_NOT_SUPPORTED [SWS_CanTrcv_00168].

fehler start aufruf API-Aufruf, z. B. CanTrcv_SetOpMode start->aufruf init Modul initialisiert? aufruf->init eUninit DET: CANTRCV_E_UNINIT (DET aus: E_NOT_OK) init->eUninit não id ID do transceptor válido? init->id sim eId DET: CANTRCV_E_INVALID_TRANSCEIVER (DET aus: E_NOT_OK) id->eId não ptr Zeigerparameter != NULL? id->ptr sim ePtr DET: CANTRCV_E_PARAM_POINTER (DET aus: E_NOT_OK) ptr->ePtr não modus modo / transição permitido(a)? ptr->modus ja / kein Zeiger eModus DET: CANTRCV_E_PARAM_TRCV_OPMODE, CANTRCV_E_TRCV_NOT_NORMAL ou CANTRCV_E_TRCV_NOT_STANDBY (DET desativado: E_NOT_OK) modus->eModus não hw acesso ao hardware via Dio / Spi modus->hw sim komm Kommunikation korrekt? hw->komm eKomm Det_ReportRuntimeError: CANTRCV_E_NO_TRCV_CONTROL retorno E_NOT_OK (GetBusWuReason: E_OK) komm->eKomm não ok E_OK komm->ok sim

Diagrama de atividades: as chamadas de API passam por verificações de erros de desenvolvimento e, em seguida, pelo acesso ao hardware com tratamento de erros de tempo de execução. A ordem de verificação é uma interpretação. Fontes: [SWS_CanTrcv_00050], [SWS_CanTrcv_00122], [SWS_CanTrcv_00123], [SWS_CanTrcv_00132], [SWS_CanTrcv_00114], [SWS_CanTrcv_00116]

Erros de barramento são tratados como erros de produção. O pré-requisito é que o hardware consiga distinguir erros de barramento de outros erros [SWS_CanTrcv_00178] e CanTrcvBusErrFlag = TRUE [SWS_CanTrcv_00205]. Então, CanTrcv_MainFunctionDiagnostics [SWS_CanTrcv_00218] lê ciclicamente a flag BUSERR. Reporta CANTRCV_E_BUS_ERROR como DEM_EVENT_STATUS_FAILED [SWS_CanTrcv_00206] ou DEM_EVENT_STATUS_PASSED [SWS_CanTrcv_00227] ao DEM [SWS_CanTrcv_00228] [SWS_CanTrcv_00229]. O evento do DEM é referenciado através de CanTrcvDemEventParameterRefs (SWS CanTrcv p. 78).

Evidências mais detalhadas

Guia gerado por IA com base nos requisitos e passagens documentais incluídos no payload para CanTrcv (Classic, R20-11). Passagens documentais de outros releases foram utilizadas de forma complementar; onde houver divergências, tal é indicado. As afirmações assinaladas como interpretação não são normativas.

CAN Transceiver Driver (CanTrcv)

Controls physical bus transceiver states and wakeup detection on CAN lines.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

função CanTrcv_Init [SWS_CanTrcv_00001] 📄 PDF

void CanTrcv_Init (const CanTrcv_ConfigType* ConfigPtr);

Initializes the Can Trcv module.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 69eb894dc0d7 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função CanTrcv_Init serve para a inicialização básica do módulo CanTrcv, bem como de todos os transceptores CAN conectados [SWS_CanTrcv_00001] [SWS_CanTrcv_00180]. A execução ocorre de forma síncrona e é especificada como não reentrante [SWS_CanTrcv_00001]. Como parâmetro de passagem, ela espera através de ConfigPtr um ponteiro para a configuração do driver e não possui valor de retorno [SWS_CanTrcv_00001].

Interação e verificação de hardware

Durante o processo, a função executa as sequências de inicialização relacionadas ao hardware de todos os transceptores conectados de acordo com a configuração, suportando assim a sequência de inicialização da pilha AUTOSAR [SWS_CanTrcv_00180]. Através da chamada, cada transceptor muda separadamente, dependendo de sua respectiva configuração, para o modo CANTRCV_TRCVMODE_SLEEP ou para CANTRCV_TRCVMODE_STANDBY [SWS_CanTrcv_00148]. Se suportado pelo hardware, CanTrcv_Init também verifica se houve previamente um evento de despertar devido à atividade do transceptor e o reporta ao EcuM através de EcuM_SetWakeupEvent com a fonte definida em CanTrcvWakeupSourceRef [SWS_CanTrcv_00167].

Tratamento de erros

Em caso de falha ou ausência de comunicação com o hardware (por exemplo, através de pinos de porta ou SPI), a função reporta o erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL ao Default Error Tracer [SWS_CanTrcv_00113]. Se a detecção de erros de desenvolvimento estiver ativa, também é reportado CANTRCV_E_BAUDRATE_NOT_SUPPORTED caso uma taxa de transmissão configurada não seja suportada pelo respectivo transceptor [SWS_CanTrcv_00168].

Este texto foi gerado por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_SetOpMode [SWS_CanTrcv_00002] 📄 PDF

Std_ReturnType CanTrcv_SetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType OpMode);

Sets the mode of the Transceiver to the value Op Mode.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 62862d69beb4 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTrcv_SetOpMode serve para a comutação assíncrona do modo de operação de um transceptor CAN [SWS_CanTrcv_00002]. Ela recebe o número do dispositivo do transceptor (Transceiver) bem como o modo de destino desejado (OpMode), o qual pode assumir os valores CANTRCV_TRCVMODE_NORMAL, CANTRCV_TRCVMODE_STANDBY ou CANTRCV_TRCVMODE_SLEEP [SWS_CanTrcv_00102]. A função é reentrante para diferentes transceptores [SWS_CanTrcv_00002]. O valor de retorno E_OK confirma a aceitação da ordem de comutação; E_NOT_OK sinaliza a rejeição da solicitação, erros de parâmetro ou falta de suporte ao modo pelo hardware [SWS_CanTrcv_00002], [SWS_CanTrcv_00105].

Ao chamar, devem ser respeitadas transições de estado predefinidas:

  • Se o transceptor estiver no modo CANTRCV_TRCVMODE_NORMAL, apenas CANTRCV_TRCVMODE_STANDBY ou CANTRCV_TRCVMODE_NORMAL pode ser passado como modo de destino [SWS_CanTrcv_00103].
  • Se o transceptor estiver em CANTRCV_TRCVMODE_STANDBY, a função só pode ser chamada com CANTRCV_TRCVMODE_SLEEP ou CANTRCV_TRCVMODE_STANDBY [SWS_CanTrcv_00104].

Com a detecção de erros de desenvolvimento (DET) ativada, a função reporta chamadas antes da inicialização como CANTRCV_E_UNINIT [SWS_CanTrcv_00122], números inválidos de transceptor como CANTRCV_E_INVALID_TRANSCEIVER [SWS_CanTrcv_00123] e modos de operação não permitidos como CANTRCV_E_PARAM_TRCV_OPMODE [SWS_CanTrcv_00087]. Caso o Standby seja solicitado sem que o transceptor esteja em Normal ou Standby, CANTRCV_E_TRCV_NOT_NORMAL é disparado [SWS_CanTrcv_00120]; na solicitação de Sleep fora de Standby ou Sleep, ocorre a notificação CANTRCV_E_TRCV_NOT_STANDBY [SWS_CanTrcv_00121]. Se o DET estiver desativado, retorna-se E_NOT_OK nesses casos. Em caso de comunicação ausente ou falha de comunicação do transceptor, o erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL é reportado ao DET e E_NOT_OK é retornado [SWS_CanTrcv_00114].

Se o Selective Wakeup for suportado pelo hardware, a API verifica as flags de status POR e SYSERR [SWS_CanTrcv_00186]. Assim que o transceptor atingir o modo solicitado, o módulo informa a camada superior por meio do callback CanIf_TrcvModeIndication [SWS_CanTrcv_00158].

Este texto foi gerado por uma IA com base nos requisitos da especificação.

Guia do implementador em breve (complexidade I2)

função CanTrcv_GetBusWuReason [SWS_CanTrcv_00007] 📄 PDF

Std_ReturnType CanTrcv_GetBusWuReason (uint8 Transceiver, CanTrcv_TrcvWakeupReasonType* reason);

Gets the wakeup reason for the Transceiver and returns it in parameter Reason.

função CanTrcv_SetWakeupMode [SWS_CanTrcv_00009] 📄 PDF

Std_ReturnType CanTrcv_SetWakeupMode (uint8 Transceiver, CanTrcv_TrcvWakeupModeType TrcvWakeupMode);

En ables, disables or clears wake - up events of the Transceiver according to Trcv Wakeup Mode.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7ddf69d5a7ae Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função síncrona CanTrcv_SetWakeupMode serve para ativar, desativar ou limpar eventos de wake-up para um transceptor específico [SWS_CanTrcv_00009]. A ela são passados o transceptor de destino através do parâmetro Transceiver, bem como o modo desejado através de TrcvWakeupMode. Em caso de alteração de estado bem-sucedida, a função retorna E_OK. Se o estado não puder ser alterado ou se um parâmetro for inválido, é retornado E_NOT_OK e o estado anterior permanece inalterado [SWS_CanTrcv_00009].

Modos de operação e interação

Se TrcvWakeupMode for chamada com o valor CANTRCV_WUMODE_CLEAR, a função limpa um evento de wake-up armazenado do transceptor endereçado [SWS_CanTrcv_00094]. Quando chamada com CANTRCV_WUMODE_ENABLE, o módulo atualiza o evento de wake-up para o estado “present”, desde que já exista um evento de wake-up armazenado pendente para o barramento em questão [SWS_CanTrcv_00111]. Interpretação: Para a desativação de eventos de wake-up, deve existir de forma análoga um valor de modo correspondente, mesmo que este não esteja detalhado separadamente no presente extrato de requisitos. Pergunta Q-e0f15d1d0855db81 (aberta)

Tratamento de erros e simultaneidade

A função é reentrante para diferentes instâncias de transceptor [SWS_CanTrcv_00009]. Antes da chamada, o driver do transceptor deve estar completamente inicializado: uma chamada no estado não inicializado dispara o erro CANTRCV_E_UNINIT se a detecção de erros de desenvolvimento (DET) estiver ativa; caso contrário, é retornado E_NOT_OK [SWS_CanTrcv_00127]. Um índice inválido em Transceiver leva a CANTRCV_E_INVALID_TRANSCEIVER (ou E_NOT_OK) [SWS_CanTrcv_00131], e um valor de modo inadmissível em TrcvWakeupMode reporta CANTRCV_E_PARAM_TRCV_WAKEUP_MODE ou retorna E_NOT_OK [SWS_CanTrcv_00089]. Se não houver comunicação ou houver comunicação com falha com o transceptor, o erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL é reportado ao Default Error Tracer e E_NOT_OK é retornado [SWS_CanTrcv_00117].

Esta nota de uso foi gerada de forma automatizada com base na especificação do AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I2)

função CanTrcv_GetTrcvSystemData [SWS_CanTrcv_00213] 📄 PDF

Std_ReturnType CanTrcv_GetTrcvSystemData (uint8 Transceiver, uint32* TrcvSysData);

Reads the transceiver configuration/ status data and returns it through parameter Trcv Sys Data. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

função CanTrcv_ClearTrcvWufFlag [SWS_CanTrcv_00214] 📄 PDF

Std_ReturnType CanTrcv_ClearTrcvWufFlag (uint8 Transceiver);

Clears the WUF flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 10eca0b578cb Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTrcv_ClearTrcvWufFlag limpa a flag de Wake-up Frame (WUF) no hardware do transcetor CAN endereçado e só está disponível se o suporte a Selective Wakeup estiver configurado (CanTrcvHwPnSupport = TRUE) [SWS_CanTrcv_00214], [SWS_CanTrcv_00175]. Em caso de limpeza bem-sucedida, é retornado E_OK, caso contrário E_NOT_OK [SWS_CanTrcv_00214], [SWS_CanTrcv_00194].

Interação e fluxo

A API é utilizada pelo módulo CanSM aquando da entrada num modo de baixo consumo de energia (Low-Power-Modus), a fim de assegurar que nenhum evento de wake-up por frame seja perdido durante a transição de estado [SWS_CanTrcv_00194]. Após a reposição da flag WUF, o transcetor CAN deve ser colocado no modo Standby (CANTRCV_STANDBY) [SWS_CanTrcv_00194].

Simultaneidade e contexto de chamada

As chamadas de CanTrcv_ClearTrcvWufFlag são reentrantes para diferentes instâncias de transcetor (Transceiver) [SWS_CanTrcv_00214].

Tratamento de erros

  • Erros de desenvolvimento (DET): Se a deteção de erros estiver ativa, a função reporta CANTRCV_E_UNINIT [SWS_CanTrcv_00197] em caso de controlador não inicializado e o erro CANTRCV_E_INVALID_TRANSCEIVER [SWS_CanTrcv_00198] em caso de parâmetro Transceiver inválido. Se o DET estiver desativado, nestes casos é diretamente retornado E_NOT_OK [SWS_CanTrcv_00197], [SWS_CanTrcv_00198].
  • Erro de tempo de execução: Se a comunicação com o transcetor falhar ou for errónea, a função reporta o erro de tempo de execução CANTRCV_E_NO_TRCV_CONTROL ao Default Error Tracer e retorna E_NOT_OK [SWS_CanTrcv_00196].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_ReadTrcvTimeoutFlag [SWS_CanTrcv_00215] 📄 PDF

Std_ReturnType CanTrcv_ReadTrcvTimeoutFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);

Reads the status of the tim eout flag from the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a58e25cc2696 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTrcv_ReadTrcvTimeoutFlag lê o status da flag de timeout diretamente do hardware do transceptor CAN [SWS_CanTrcv_00215]. Como parâmetro de entrada, Transceiver serve para identificar o transceptor a ser acessado, enquanto através do parâmetro de saída FlagState do tipo CanTrcv_TrcvFlagStateType* é retornado o estado da flag [SWS_CanTrcv_00215]. O valor de retorno sinaliza com E_OK uma leitura bem-sucedida e com E_NOT_OK que o status da flag de timeout não pôde ser determinado [SWS_CanTrcv_00215].

Para a utilização e integração no driver do transceptor, aplicam-se as seguintes condições de contorno:

  • Configuração: a API está disponível exclusivamente se o suporte de hardware para rede parcial estiver ativado (CanTrcvHwPnSupport = TRUE) [SWS_CanTrcv_00215]. O contêiner de configuração correspondente CanTrcvPartialNetwork também só existe sob esse pré-requisito [SWS_CanTrcv_00175].
  • Concorrência: a função é especificada como não reentrante (Non Reentrant) [SWS_CanTrcv_00215].

O tratamento de erros faz distinção conforme o estado da detecção de erros de desenvolvimento (Development Error Detection, DET):

  • Se for passado um identificador de transceptor inválido, o módulo gera com o DET ativo o erro CANTRCV_E_INVALID_TRANSCEIVER; com o DET desativado, é retornado E_NOT_OK em seu lugar [SWS_CanTrcv_00199].
  • Se for passado um ponteiro nulo para FlagState (FlagState = NULL), o módulo reporta com o DET ativo o erro CANTRCV_E_PARAM_POINTER; se o DET estiver desligado, a chamada retorna E_NOT_OK [SWS_CanTrcv_00200].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR CP R20-11.

Guia do implementador em breve (complexidade I2)

função CanTrcv_ClearTrcvTimeoutFlag [SWS_CanTrcv_00216] 📄 PDF

Std_ReturnType CanTrcv_ClearTrcvTimeoutFlag (uint8 Transceiver);

Clears the status of the timeout flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 58509e1d0c7c Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTrcv_ClearTrcvTimeoutFlag serve para resetar a flag de timeout no hardware do transceptor [SWS_CanTrcv_00216]. Ela está disponível exclusivamente se o suporte de hardware para Partial Networking estiver ativado através do parâmetro de configuração CanTrcvHwPnSupport = TRUE [SWS_CanTrcv_00175], [SWS_CanTrcv_00216].

Uso e interface

A chamada ocorre de forma síncrona através da interface em CanTrcv.h, informando o transceptor de destino:

  • Parâmetros: Transceiver determina, como valor de entrada (uint8), o canal de transceptor a ser acessado [SWS_CanTrcv_00216].
  • Valor de retorno: um Std_ReturnType sinaliza com E_OK a limpeza bem-sucedida da flag de hardware ou com E_NOT_OK uma falha da operação [SWS_CanTrcv_00216].

Tratamento de erros

Se for passado à função um identificador inválido para o parâmetro Transceiver, aplica-se um tratamento de erros diferenciado:

  • Com a detecção de erros de desenvolvimento (Development Error Detection) ativa, o erro CANTRCV_E_INVALID_TRANSCEIVER é reportado ao DET [SWS_CanTrcv_00201].
  • Se a detecção de erros de desenvolvimento estiver desativada, a chamada é abortada e retorna E_NOT_OK ao chamador [SWS_CanTrcv_00201].

Simultaneidade e integração do sistema

A função é classificada como não reentrante (Non Reentrant) [SWS_CanTrcv_00216]. Chamadas paralelas para a mesma unidade de hardware devem, portanto, ser evitadas ou sincronizadas pela camada chamadora. Além disso, a função faz parte do escopo funcional para funções de wake-up seletivo (Partial Networking); as estruturas de configuração associadas no contêiner CanTrcvPartialNetwork também só existem com CanTrcvHwPnSupport definido [SWS_CanTrcv_00175].

Esta nota de uso baseia-se na especificação AUTOSAR CP R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_ReadTrcvSilenceFlag [SWS_CanTrcv_00217] 📄 PDF

Std_ReturnType CanTrcv_ReadTrcvSilenceFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);

Reads the status of the silence flag from the transceiver hardware. This API shall exi st only if Can Trcv Hw Pn Support = TRUE.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: be15c667bc30 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona e não reentrante CanTrcv_ReadTrcvSilenceFlag (ID de serviço 0x0d) serve para ler o status da flag de silence diretamente do hardware do transceptor CAN [SWS_CanTrcv_00217]. Ela é disponibilizada através do cabeçalho CanTrcv.h e, devido à ausência de reentrância, não pode ser executada concorrentemente [SWS_CanTrcv_00217].

Parâmetros e valores de retorno

  • Transceiver: parâmetro de entrada (uint8) para endereçar a respectiva instância do transceptor por meio de seu identificador [SWS_CanTrcv_00217].
  • FlagState: parâmetro de saída como ponteiro para CanTrcv_TrcvFlagStateType, através do qual é retornado o status lido da flag de silence [SWS_CanTrcv_00217].
  • Valor de retorno (Std_ReturnType): retorna E_OK caso o estado de hardware da flag de silence tenha sido lido com sucesso; caso contrário, E_NOT_OK [SWS_CanTrcv_00217].

Tratamento de erros

Se for passado um ponteiro nulo para o parâmetro de saída da função (FlagState == NULL), o tratamento de erros depende do controle de desenvolvimento: com o DET ativado, o driver do transceptor CAN reporta o erro de desenvolvimento CANTRCV_E_PARAM_POINTER; se o DET estiver desativado, a chamada é imediatamente abortada com E_NOT_OK [SWS_CanTrcv_00203].

Configuração e interação

A função insere-se no contexto de wake-up seletivo (Selective Wakeup). O contêiner de configuração associado CanTrcvPartialNetwork bem como a interface CanTrcv_ReadTrcvSilenceFlag só estão disponíveis no driver se o suporte de hardware para Partial Networking estiver configurado via CanTrcvHwPnSupport = TRUE [SWS_CanTrcv_00175], [SWS_CanTrcv_00217].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_CheckWakeup [SWS_CanTrcv_00143] 📄 PDF

Std_ReturnType CanTrcv_CheckWakeup (uint8 Transceiver);

Service is called by underlying CANIF in case a wake up interrupt is detected.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3bcebb868332 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona e reentrante CanTrcv_CheckWakeup é chamada pela interface subjacente CanIf assim que uma interrupção de wakeup é detectada [SWS_CanTrcv_00143]. O transceptor CAN a ser verificado é endereçado através do parâmetro Transceiver [SWS_CanTrcv_00143]. O valor de retorno E_OK sinaliza a aceitação da chamada, enquanto E_NOT_OK indica a não aceitação [SWS_CanTrcv_00143].

Se suportado pelo hardware, a função verifica se realmente existe um evento de despertar decorrente de atividade no transceptor [SWS_CanTrcv_00146]. Se este for o caso, a notificação de despertar para o EcuM ocorre através da API EcuM_SetWakeupEvent com a fonte de wakeup referenciada em CanTrcvWakeupSourceRef [SWS_CanTrcv_00146].

Para o tratamento de erros com a detecção de desenvolvimento (DET) ativada, aplicam-se as seguintes especificações:

  • Se a função for chamada antes da inicialização do módulo CanTrcv, é reportado o erro de desenvolvimento CANTRCV_E_UNINIT; com o DET desativado, a chamada retorna E_NOT_OK em seu lugar [SWS_CanTrcv_00144].
  • Ao passar um número de transceptor inválido, a função reporta CANTRCV_E_INVALID_TRANSCEIVER; se o DET estiver desativado, é retornado E_NOT_OK [SWS_CanTrcv_00145].

Esta nota de uso baseia-se exclusivamente nos requisitos de especificação do AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_SetPNActivationState [SWS_CanTrcv_00219] 📄 PDF

Std_ReturnType CanTrcv_SetPNActivationState (CanTrcv_PNActivationType ActivationState);

The API configures the wake - up of the transceiver for Standby and Sleep Mode: Either the CAN transceiver is woken up by a remote wake - up pattern (standard CAN wake - up) or by the configured remote wake - up frame.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ed5e02955479 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTrcv_SetPNActivationState configura o comportamento de wake-up do transceptor CAN para o modo Standby e Sleep ([SWS_CanTrcv_00219]). Ela define se o transceptor é acordado por meio de um padrão padrão de wake-up ou de forma direcionada por meio de um quadro de wake-up remoto configurado no âmbito de Partial Networking ([SWS_CanTrcv_00219]).

Utilização e parâmetros

A função é disponibilizada através de CanTrcv.h com a ID de serviço 0x0f e executada de forma síncrona ([SWS_CanTrcv_00219]). Seu parâmetro de passagem ActivationState do tipo CanTrcv_PNActivationType controla o modo de operação:

Como valor de retorno, a função fornece E_OK quando o transceptor é comutado com sucesso para a configuração de PN solicitada. Se a comutação falhar, E_NOT_OK é retornado; nesse caso, a configuração anterior permanece inalterada ([SWS_CanTrcv_00219]).

Restrições e tratamento de erros

A função é não reentrante (Non Reentrant) ([SWS_CanTrcv_00219]). Como pré-requisito mandatório, o módulo CanTrcv deve ter sido completamente inicializado antes da chamada: se a chamada ocorrer antes da inicialização, a função reporta ao DET o erro CANTRCV_E_UNINIT com a detecção de erros de desenvolvimento ativa; se o DET estiver desativado, a chamada é imediatamente rejeitada com o valor de retorno E_NOT_OK ([SWS_CanTrcv_00220]).

Esta nota de utilização foi gerada automaticamente com base na especificação.

Guia do implementador em breve (complexidade I1)

função CanTrcv_CheckWakeFlag [SWS_CanTrcv_00223] 📄 PDF

Std_ReturnType CanTrcv_CheckWakeFlag (uint8 Transceiver);

Requests to check the status of the wakeup flag from the transceiver hardware.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 3347f44cb215 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTrcv_CheckWakeFlag solicita a verificação do status da flag de wake-up diretamente do hardware do transceptor ([SWS_CanTrcv_00223]). A chamada ocorre de forma assíncrona e refere-se, através do parâmetro de entrada Transceiver, ao respectivo identificador do transceptor CAN a ser acessado ([SWS_CanTrcv_00223]).

Como valor de retorno, a função fornece o status Std_ReturnType ([SWS_CanTrcv_00223]):

Em relação à concorrência, está definido que a função é não reentrante (Non Reentrant) ([SWS_CanTrcv_00223]). Como o serviço é especificado como assíncrono, o valor de retorno reflete apenas a aceitação da ordem de verificação; a leitura efetiva do hardware deve ocorrer posteriormente ([SWS_CanTrcv_00223]). Pergunta Q-f09b7ff49c24cea8 (aberta) Códigos de erro concretos, bem como mensagens DET ou DEM, não estão listados para este serviço.

Esta nota de uso foi gerada por uma IA com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade I1)

função CanTrcv_DeInit [SWS_CanTrcv_91001] 📄 PDF

void CanTrcv_DeInit (void);

De - initializes the Can Trcv module.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f6b7395c6c6d Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona CanTrcv_DeInit serve para a desinicialização do driver do transceptor CAN [SWS_CanTrcv_91001]. Ela não recebe parâmetros, não retorna valor e é especificada como não reentrante (Non Reentrant) [SWS_CanTrcv_91001]. A interface é disponibilizada através do cabeçalho CanTrcv.h com o Service-ID 0x10 [SWS_CanTrcv_91001].

Durante a execução, a função coloca o hardware do transceptor CAN no estado NOT_ACTIVE [SWS_CanTrcv_91003]. Como CanTrcv_DeInit não é reentrante, as chamadas não devem ocorrer de forma interruptiva ou concorrente entre si [SWS_CanTrcv_91001].

Em relação ao tratamento de erros e condições de sequência, aplica-se:

  • Se a detecção de erros de desenvolvimento (Development Error Detection) estiver ativada para o módulo, a função verifica o modo de operação do transceptor. Se o transceptor não estiver no modo CANTRCV_TRCVMODE_NORMAL no momento da chamada, CanTrcv_DeInit reporta o erro de desenvolvimento CANTRCV_E_TRCV_NOT_NORMAL [SWS_CanTrcv_91005].
  • Disto resulta para o chamador a pré-condição funcional de operar o transceptor no estado CANTRCV_TRCVMODE_NORMAL antes da desinicialização, a fim de evitar um relatório de erro no modo de desenvolvimento [SWS_CanTrcv_91005].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR CP R20-11.

função CanTrcv_MainFunction [SWS_CanTrcv_00013] 📄 PDF

void CanTrcv_MainFunction (void);

Service to scan all busses for wake up events and perform these event.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8f993661c2b3 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTrcv_MainFunction atua como serviço de driver central do driver do transceptor CAN para monitorar todos os canais de barramento conectados quanto a eventos de wake-up ocorridos, bem como para executar esses eventos [SWS_CanTrcv_00013]. Ela possui a assinatura em C void CanTrcv_MainFunction(void), é definida sob o ID de serviço hexadecimal 0x06 e opera de forma síncrona, sem parâmetros de passagem ou valores de retorno [SWS_CanTrcv_00013].

Para o monitoramento cíclico, a função varre deliberadamente todos os barramentos que se encontram nos estados de repouso STANDBY ou SLEEP [SWS_CanTrcv_00112]. Se o driver detectar um evento de despertar em um dos barramentos monitorados, CanTrcv_MainFunction define uma flag interna de evento de wake-up a fim de desencadear a execução e o processamento posteriores desses eventos no sistema [SWS_CanTrcv_00112].

Em relação ao contexto de chamada, a interface é disponibilizada através do arquivo de cabeçalho SchM_CanTrcv.h [SWS_CanTrcv_00013]. Interpretação: a disponibilização através deste cabeçalho SchM sugere que a função provavelmente deve ser chamada periodicamente pelo escalonador BSW no contexto de uma tarefa cíclica, a fim de amostrar regularmente os canais de barramento em estados inativos. Pergunta Q-588109b1111a0f43 (aberta) Códigos de erro específicos, mensagens para o DET ou DEM, bem como requisitos de reentrância não são mencionados no presente excerto de especificação.

Este texto foi gerado por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função CanTrcv_MainFunctionDiagnostics [SWS_CanTrcv_00218] 📄 PDF

void CanTrcv_MainFunctionDiagnostics (void);

Reads the transceiver diagnostic status periodically and sets product/ development accordingly.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 958c670ba046 Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função CanTrcv_MainFunctionDiagnostics (Service-ID 0x08) lê periodicamente o estado de diagnóstico do transceptor e define os erros de produção e de desenvolvimento correspondentes [SWS_CanTrcv_00218]. A função não tem parâmetros, não possui valor de retorno (void CanTrcv_MainFunctionDiagnostics(void)) e é disponibilizada através do cabeçalho SchM_CanTrcv.h [SWS_CanTrcv_00218].

Contexto de chamada e concorrência

Devido à disponibilização através de SchM_CanTrcv.h, a função principal é presumivelmente chamada de forma cíclica pelo escalonador BSW (SchM) em um contexto de tarefa (interpretação). Pergunta Q-ab1f6c55abcb8d4b (aberta) Como a especificação não indica reentrância, deve-se assumir uma execução não reentrante.

Tratamento de erros e interação com o DEM

A avaliação de diagnóstico ocorre em função da configuração e do suporte de hardware:

  • Se a flag BUSERR reportada pelo BSW estiver definida, a função chama a API Dem_SetEventStatus com o parâmetro EventId como CANTRCV_E_BUS_ERROR e EventStatus como DEM_EVENT_STATUS_FAILED [SWS_CanTrcv_00206].
  • Se a flag BUSERR for redefinida, CanTrcv_MainFunctionDiagnostics chama a API Dem_SetEventStatus com o mesmo EventId (CANTRCV_E_BUS_ERROR) e o estado DEM_EVENT_STATUS_PASSED [SWS_CanTrcv_00227].

Este texto foi gerado por uma IA. Ele não substitui o estudo das especificações AUTOSAR correspondentes.

Guia do implementador em breve (complexidade I1)

tipo CanTrcv_ConfigType [SWS_CanTrcv_00209] 📄 PDF

This is the type of the external data structure containing the overall initialization data for the CAN transceiver driver and settings affecting all transceivers. Furthermore it contains pointers to transceiver configuration structures. The con tents of the initialization data structure are CAN transceiver hardware specific.

tipo CanTrcv_PNActivationType [SWS_CanTrcv_00210] 📄 PDF

Datatype used for describing whether PN wakeup functionality in Can Trcv is enabled or disabled.

tipo CanTrcv_TrcvFlagStateType [SWS_CanTrcv_00211] 📄 PDF

Provides the state of a flag in the transceiver hardware.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 4ef0e0487226 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração CanTrcv_TrcvFlagStateType representa o estado de uma flag individual no hardware do transceptor [SWS_CanTrcv_00211]. A declaração é disponibilizada para módulos de software e drivers aplicadores através do arquivo de cabeçalho CanTrcv.h [SWS_CanTrcv_00211].

A faixa de valores possui estrutura binária e distingue dois estados discretos de acordo com [SWS_CanTrcv_00211]:

  • CANTRCV_FLAG_SET: indica que a respectiva flag no hardware do transceptor está definida [SWS_CanTrcv_00211].
  • CANTRCV_FLAG_CLEARED: indica que a flag no hardware do transceptor está limpa ou não definida [SWS_CanTrcv_00211].

Em relação ao uso prático, pode-se constatar que o tipo serve primariamente para o mapeamento padronizado de estados de registradores próximos ao hardware [SWS_CanTrcv_00211]. Interpretação: Camadas chamadoras, como o driver da CAN Interface ou módulos de diagnóstico, devem tipicamente ler este tipo por meio de funções de consulta via parâmetros de ponteiro ou valor de retorno, para avaliar eventuais flags de erro ou de wake-up. Pergunta Q-1b75b4baf2f4c6e3 (aberta) Como o tipo em si não contém lógica de função, restrições de reentrância ou mensagens do DET, a verificação de faixas de valores válidas cabe às interfaces de processamento.

Este texto foi gerado por uma IA e serve como orientação. A especificação AUTOSAR é vinculativa.

Guia do implementador em breve (complexidade I1)

tipo CanTrcv_TrcvModeType [SWS_CanTrcv_00163] 📄 PDF

Operating modes of the CAN Transceiver Driver.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: b8ef2e8c5d35 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração CanTrcv_TrcvModeType define, de acordo com [SWS_CanTrcv_00163], os modos de operação padronizados para o driver do transceptor CAN (CanTrcv). A declaração é disponibilizada através do arquivo de cabeçalho Can_GeneralTypes.h para interfaces intermodulares de software na pilha de comunicação AUTOSAR.

Faixa de valores e significados

De acordo com [SWS_CanTrcv_00163], estão disponíveis três valores de enumeração:

  • CANTRCV_TRCVMODE_NORMAL (valor 0x00): identifica o modo de operação regular do transceptor para a transmissão e recepção de mensagens CAN.
  • CANTRCV_TRCVMODE_STANDBY: representa o modo standby do transceptor, no qual a comunicação fica em repouso e há um consumo reduzido de energia.
  • CANTRCV_TRCVMODE_SLEEP: representa o modo sleep do transceptor para economia máxima de energia.

Uso e restrições

A enumeração serve como representação comum de tipo de dados para o estado de hardware do transceptor CAN [SWS_CanTrcv_00163]. Interpretação: O tipo deve servir principalmente para a passagem de parâmetros em interfaces de controle e consulta do driver do transceptor, por meio das quais camadas superiores, como a CAN Interface, solicitam transições de modo ou leem o status atual. Pergunta Q-95fceb6988818621 (aberta) Como o presente extrato da especificação não contém erros de tempo de execução (DET/DEM), indicações de reentrância ou assinaturas concretas de funções, os contextos de chamada e as regras de concorrência devem ser consultados nas respectivas funções do driver que o utilizam.

Esta nota de uso baseia-se exclusivamente nos dados de especificação do AUTOSAR R20-11 referentes a [SWS_CanTrcv_00163].

Guia do implementador em breve (complexidade I1)

tipo CanTrcv_TrcvWakeupModeType [SWS_CanTrcv_00164] 📄 PDF

This type shall be used to control the CAN transceiver concerning wake up events and wake up notifications.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ceecd083c1cd Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração CanTrcv_TrcvWakeupModeType serve para o controle de um transceptor CAN em relação a eventos de wake-up e notificações de wake-up [SWS_CanTrcv_00164]. A definição do tipo é disponibilizada através do arquivo de cabeçalho Can_GeneralTypes.h e fica, assim, disponível em toda a pilha [SWS_CanTrcv_00164].

A faixa de valores abrange três modos de controle para o respectivo transceptor endereçado [SWS_CanTrcv_00164]:

  • CANTRCV_WUMODE_ENABLE (valor 0x00): ativa a notificação para eventos de wake-up no transceptor endereçado [SWS_CanTrcv_00164].
  • CANTRCV_WUMODE_DISABLE (valor 0x01): desativa a notificação para eventos de wake-up no transceptor endereçado [SWS_CanTrcv_00164].
  • CANTRCV_WUMODE_CLEAR (valor 0x02): limpa um evento de wake-up armazenado no transceptor endereçado [SWS_CanTrcv_00164].

Interpretação: Na prática, o tipo deve ser utilizado primariamente como parâmetro de passagem em funções de controle do driver do transceptor, a fim de ligar ou desligar dinamicamente notificações de wake-up, bem como redefinir eventos de wake-up detectados. Pergunta Q-c53d60cdad0442ca (aberta) Como a especificação, sendo um tipo puro de enumeração, não prescreve assinaturas de função, semântica de execução, códigos de erro ou regras de concorrência, esses aspectos são totalmente determinados pelas interfaces do driver que chamam e processam [SWS_CanTrcv_00164].

Este texto foi criado por uma IA; a exatidão não pode ser garantida.

Guia do implementador em breve (complexidade I1)

tipo CanTrcv_TrcvWakeupReasonType [SWS_CanTrcv_00165] 📄 PDF

This type denotes the wake up reason detected by the CAN transceiver in detail. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CANTransceiverDriver

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

Record
AUTOSAR/AP/record/CP_MOD_CanTrcv
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_CanTrcv@rel:R20-11#523dfe2c
Content hash
523dfe2c
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransceiverDriver.pdf#nameddest=SWS_CanTrcv_00001

Inicialização e estado

De - initializes the Can Trcv module.

void CanTrcv_DeInit (void);

Gets the version of the module and returns it in Version Info.

void CanTrcv_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTrcv_Init função

Initializes the Can Trcv module.

void CanTrcv_Init (const CanTrcv_ConfigType* ConfigPtr);

Serviços · Get…

Gets the wakeup reason for the Transceiver and returns it in parameter Reason.

Std_ReturnType CanTrcv_GetBusWuReason (uint8 Transceiver, CanTrcv_TrcvWakeupReasonType* reason);

Gets the mode of the Transceiver and returns it in Op Mode.

Std_ReturnType CanTrcv_GetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType* OpMode);

Reads the transceiver configuration/ status data and returns it through parameter Trcv Sys Data. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

Std_ReturnType CanTrcv_GetTrcvSystemData (uint8 Transceiver, uint32* TrcvSysData);

Serviços · Set…

Sets the mode of the Transceiver to the value Op Mode.

Std_ReturnType CanTrcv_SetOpMode (uint8 Transceiver, CanTrcv_TrcvModeType OpMode);

The API configures the wake - up of the transceiver for Standby and Sleep Mode: Either the CAN transceiver is woken up by a remote wake - up pattern (standard CAN wake - up) or by the configured remote wake - up frame.

Std_ReturnType CanTrcv_SetPNActivationState (CanTrcv_PNActivationType ActivationState);

En ables, disables or clears wake - up events of the Transceiver according to Trcv Wakeup Mode.

Std_ReturnType CanTrcv_SetWakeupMode (uint8 Transceiver, CanTrcv_TrcvWakeupModeType TrcvWakeupMode);

Serviços · Outros

Requests to check the status of the wakeup flag from the transceiver hardware.

Std_ReturnType CanTrcv_CheckWakeFlag (uint8 Transceiver);

Service is called by underlying CANIF in case a wake up interrupt is detected.

Std_ReturnType CanTrcv_CheckWakeup (uint8 Transceiver);

Clears the status of the timeout flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

Std_ReturnType CanTrcv_ClearTrcvTimeoutFlag (uint8 Transceiver);

Clears the WUF flag in the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

Std_ReturnType CanTrcv_ClearTrcvWufFlag (uint8 Transceiver);

Reads the status of the silence flag from the transceiver hardware. This API shall exi st only if Can Trcv Hw Pn Support = TRUE.

Std_ReturnType CanTrcv_ReadTrcvSilenceFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);

Reads the status of the tim eout flag from the transceiver hardware. This API shall exist only if Can Trcv Hw Pn Support = TRUE.

Std_ReturnType CanTrcv_ReadTrcvTimeoutFlag (uint8 Transceiver, CanTrcv_TrcvFlagStateType* FlagState);

Cíclico

Service to scan all busses for wake up events and perform these event.

void CanTrcv_MainFunction (void);

Reads the transceiver diagnostic status periodically and sets product/ development accordingly.

void CanTrcv_MainFunctionDiagnostics (void);

Tipos

This is the type of the external data structure containing the overall initialization data for the CAN transceiver driver and settings affecting all transceivers. Furthermore it contains pointers to transceiver configuration structures. The con tents of the initialization data structure are CAN transceiver hardware specific.

Datatype used for describing whether PN wakeup functionality in Can Trcv is enabled or disabled.

Provides the state of a flag in the transceiver hardware.

Operating modes of the CAN Transceiver Driver.

This type shall be used to control the CAN transceiver concerning wake up events and wake up notifications.

This type denotes the wake up reason detected by the CAN transceiver in detail. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CANTransceiverDriver