DEENESPTFRRUARHIKOZHNL

AUTOSAR Classic Microcontroller Abstraction (MCAL)

Die Microcontroller Abstraction Layer (MCAL) enthält hardware-spezifische Treiber für interne Mikrocontroller-Peripherie (ADC-Wandler, PWM-Generatoren, Hardware-Watchdog) und entkoppelt obere BSW-Schichten von der Silizium-Plattform.

Карта тем

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

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

Adc

Adc_DeInit функция

Returns all ADC HW Units to a state comparable to their power on reset state.

void Adc_DeInit (void);

Disables the notification mechanism for the requested ADC Channel group.

void Adc_DisableGroupNotification (Adc_GroupType Group);

Disables the hardware trigger for the requested ADC Channel group.

void Adc_DisableHardwareTrigger (Adc_GroupType Group);

Enables the notification mechanism for the requested ADC Channel group.

void Adc_EnableGroupNotification (Adc_GroupType Group);

Enables the hardware trigger for the requested ADC Channel group.

void Adc_EnableHardwareTrigger (Adc_GroupType Group);

Service Adc_GetCurrentPowerState.

Std_ReturnType Adc_GetCurrentPowerState (Adc_PowerStateType* CurrentPowerState, Adc_PowerStateRequestResultType* Result);
Adc_GetGroupStatus функция

Returns the conversion status of the requested ADC Channel group.

Adc_StatusType Adc_GetGroupStatus (Adc_GroupType Group);

Returns the number of valid samples per channel, stored in the result buffer. Reads a pointer, pointing to a position in the group result buffer. With the pointer position, the results of all group channels of the last completed conversion round can be acc essed. With the pointer and the return value, all valid group conversion results can be accessed (the user has to take the layout of the result buffer into account).

Adc_StreamNumSampleType Adc_GetStreamLastPointer (Adc_GroupType Group, Adc_ValueGroupType* * PtrToSamplePtr);

Service Adc_GetTargetPowerState.

Std_ReturnType Adc_GetTargetPowerState (Adc_PowerStateType* TargetPowerState, Adc_PowerStateRequestResultType* Result);
Adc_GetVersionInfo функция

Returns the version information of this module.

void Adc_GetVersionInfo (Std_VersionInfoType* versioninfo);
Adc_Init функция

Initializes the ADC hardware units and driver.

void Adc_Init (const Adc_ConfigType* ConfigPtr);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Adc_ Notify Ready For Power State (see Adc Power State Ready Cb k Ref configuration parameter).

void Adc_Main_PowerTransitionManager (void);
Adc_PreparePowerState функция

This API starts the needed process to allow the ADC HW module to enter the AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_ADCDriver requested power state.

Std_ReturnType Adc_PreparePowerState (Adc_PowerStateType PowerState, Adc_PowerStateRequestResultType* Result);
Adc_ReadGroup функция

Reads the group conversion result of the last completed conversion round of the requested group and stores the channe l values starting at the Data Buffer Ptr address. The group channel values are stored in ascending channel number order ( in contrast to the storage layout of the result buffer if streaming access is configured).

Std_ReturnType Adc_ReadGroup (Adc_GroupType Group, Adc_ValueGroupType* DataBufferPtr);
Adc_SetPowerState функция

This API configures the Adc module so that it enters the already prepared power state, chosen between a predefined set of configured ones.

Std_ReturnType Adc_SetPowerState (Adc_PowerStateRequestResultType* Result);
Adc_SetupResultBuffer функция

Initializes ADC driver with the group specific result buffer start address where the conversion results will be stored. The applicatio n has to ensure that the application buffer, where Data Buffer Ptr points to, can hold all the conversion results of the specified group. The initialization with Adc_ Setup Result Buffer is required after reset, before a group conversion can be started.

Std_ReturnType Adc_SetupResultBuffer (Adc_GroupType Group, Adc_ValueGroupType* DataBufferPtr);

Starts the conversion of all channels of the requested ADC Channel group.

void Adc_StartGroupConversion (Adc_GroupType Group);

Stops the conversion of the requested ADC Channel group.

void Adc_StopGroupConversion (Adc_GroupType Group);

The API shall be invoked by the ADC Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Adc_NotifyReadyForPowerState<#Mode> (void);

In case of active limit checking: defines which conversion values are taken into account related to the boardes defineed with Adc Channel Low Limit and Adc Channel High Limit.

Numeric ID of an ADC channel.

Data structure containing the set of configuration parameters required for initializing the ADC Driver and ADC HW Unit(s).

Type of conversion time, i.e. the time during which the sampled analogue value is converted into digital representation. (This is not an API type).

Type for configuring the access mode to group conversion results.

Type for configuring the conversion mode of an ADC Channel group. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_ADCDriver

Type for assignment of channels to a channel group (this is not an API type).

Priority level of the channel. Lowest priority is 0.

Replacement mechanism, which is used on ADC group level, if a group conversion is interrupted by a group which has a higher priority.

Numeric ID of an ADC channel group.

Type for configuring on which edge of the hardware trigger signal the driver should react, i.e. start the conversion (only if supported by the ADC hardware).

Type for the reload value of the ADC module embedded timer (only if supported by the ADC hardware).

Type Adc_PowerStateRequestResultType.

Power state currently active or set as target power state.

Type of clock prescaler factor. (This is not an API type).

Type for configuring the prioritization mechanism.

Type of channel resolution in number of bits. (This is not an API type).

Type for alignment of ADC raw results in ADC result buffer (left/ right alignment).

Type of sampling time, i.e. the time during which the value is sampled, (in clock - cycles). (This is not an API type).

Current status of the conversion of the requested ADC Channel group.

Type for configuring the streaming access mode buffer type.

Type for configuring the number of group conversions in streaming access mode (in single access mode, parameter is 1). Available Adc.h AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_ADCDriver via

Type for configuring the trigger source for an ADC Channel group.

Type for reading the converted values of a channel group (raw, without further scaling, alignment according precompile switch ADC_ RESULT_ ALIGNMENT).

CorTst

CorTst_Abort функция

Service to change from CORTST_ INIT to CORTST_ ABORT state

void CorTst_Abort(void);
CorTst_DeInit функция

Service to change from CORTST_ ABORT or CORTST_ INIT to CORTST_ UNINIT state

void CorTst_DeInit(void);

Service for Core Test to get indicator of the last executed Core Test result

void CorTst_GetCurrentStatus(CorTst_ErrOkType* ErrOk);
CorTst_GetVersionInfo функция

Service returns the version information of this module.

void CorTst_GetVersionInfo(Std_VersionInfoType* versioninfo);
CorTst_Init функция

Service for initialization and change of state of the Core Test

void CorTst_Init(const CorTst_ConfigType* ConfigPtr);
CorTst_MainFunction функция

Cyclically called by scheduler to perform processing of Core Test.

void CorTst_MainFunction(void);
CorTst_Start функция

Service for executing foreground Core Test.

Std_ReturnType CorTst_Start(CorTst_TestIdFgndType TestId);

The function Cor Tst_ Test Completed Notification shall be called every time when a complete test cycle has been executed.

void CorTst_TestCompletedNotification(CorTst_ErrOkType ResultOfLastCorTstRun);

Service to get signature of the last executed Core Test in background mode.

CorTst_CsumSignatureBgndType CorTst_GetSignature(void);

Service to get signature of the last executed Core Test in foreground mode.

CorTst_CsumSignatureType CorTst_GetFgndSignature(void);

Service for Core Test to immediately return status on currently executed Core Test.

CorTst_StateType CorTst_GetState(void);

Configuration data structure of the Cor Tst module.

Type for test signature in background mode

This is the type of the Core Test return value if a checksum/ signature is returned from API to the caller of the API.

This is the type of the Core Test test retu rn if a status is retuned from API to the caller of the API.

This is the type of the Core Test test return if a status is retuned from API to the caller of the API.

This is a status value returned by the API Cor Tst_ Get State().

This is the type of the parameter (Id) used for a specific foreground test configuration to run. (The Id shall be used in the call to the API Cor Tst_ Start(Cor Tst_ Test Id Fgnd Type Test Id)).

Dio

Dio_FlipChannel функция

Service to flip (change from 1 to 0 or from 0 to 1) the level of a channel and return the level of the channel after flip.

Dio_LevelType Dio_FlipChannel(Dio_ChannelType ChannelId);
Dio_GetVersionInfo функция

Service to get the version information of this module.

void Dio_GetVersionInfo(Std_VersionInfoType* VersionInfo);
Dio_MaskedWritePort функция

Service to set the value of a given port with required mask.

void Dio_MaskedWritePort(Dio_PortType PortId, Dio_PortLevelType Level, Dio_PortLevelType Mask);
Dio_ReadChannel функция

Returns the value of the specified DIO channel.

Dio_LevelType Dio_ReadChannel(Dio_ChannelType ChannelId);
Dio_WriteChannel функция

Service to set a level of a channel.

void Dio_WriteChannel(Dio_ChannelType ChannelId, Dio_LevelType Level);
Dio_WriteChannelGroup функция

Service to set a subset of the adjoining bits of a port to a specified level.

void Dio_WriteChannelGroup(const Dio_ChannelGroupType* ChannelGroupIdPtr, Dio_PortLevelType Level);
Dio_WritePort функция

Service to set a value of the port.

void Dio_WritePort(Dio_PortType PortId, Dio_PortLevelType Level);

This Service reads a subset of the adjoining bits of a port.

Dio_PortLevelType Dio_ReadChannelGroup(const Dio_ChannelGroupType* ChannelGroupIdPtr);
LevelTypeDio_ReadPort функция

Returns the level of all channels of that port.

Dio_PortLevelType Dio_ReadPort(Dio_PortType PortId);

Type for the definition of a channel group, which consists of several adjoining channels within a port.

Numeric ID of a DIO channel.

These are the possible levels a DIO channel can have (input or output)

If the µC owns ports of different port widths (e.g. 4, 8,16...Bit) Dio_ Port Level Type inherits the size of the larg est port.

Numeric ID of a DIO port.

Gpt

Gpt_CheckWakeup функция

Checks if a wakeup capable GPT channel is the source for a wakeup event and calls the ECU state manager service Ecu M_ Set Wakeup Event in case of a valid GPT channel wakeup event.

void Gpt_CheckWakeup(EcuM_WakeupSourceType WakeupSource);
Gpt_DeInit функция

Deinitializes the GPT driver.

void Gpt_DeInit(void);

Disables the interrupt notification for a channel (relevant in normal mode).

void Gpt_DisableNotification(Gpt_ChannelType Channel);
Gpt_DisableWakeup функция

Disables the wakeup interrupt of a channel (relevant in sleep mode).

void Gpt_DisableWakeup(Gpt_ChannelType Channel);
Gpt_EnableNotification функция

Enables the interrupt notification for a channel (relevant in normal mode).

void Gpt_EnableNotification(Gpt_ChannelType Channel);
Gpt_EnableWakeup функция

Enables the wakeup interrupt of a channel (relevant in sleep mode).

void Gpt_EnableWakeup(Gpt_ChannelType Channel);

Delivers the current value of the desired GPT Predef Timer.

Std_ReturnType Gpt_GetPredefTimerValue(Gpt_PredefTimerType PredefTimer, uint32* TimeValuePtr);
Gpt_GetTimeElapsed функция

Returns the time already elapsed.

Gpt_ValueType Gpt_GetTimeElapsed(Gpt_ChannelType Channel);
Gpt_GetTimeRemaining функция

Returns the time remaining until the target time is reached.

Gpt_ValueType Gpt_GetTimeRemaining(Gpt_ChannelType Channel);
Gpt_GetVersionInfo функция

Returns the version information of this module.

void Gpt_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
Gpt_Init функция

Initializes the GPT driver.

void Gpt_Init(const Gpt_ConfigType* ConfigPtr);

-

void Gpt_Notification_<channel>(void);
Gpt_SetMode функция

Sets the operation mode of the GPT.

void Gpt_SetMode(Gpt_ModeType Mode);
Gpt_StartTimer функция

Starts a timer channel.

void Gpt_StartTimer(Gpt_ChannelType Channel, Gpt_ValueType Value);
Gpt_StopTimer функция

Stops a timer channel.

void Gpt_StopTimer(Gpt_ChannelType Channel);

Numeric ID of a GPT channel.

This is the type of the data structure including the configuration set required for initializing the GPT timer unit.

Modes of the GPT driver.

Type for GPT Predef Timers

Type for reading and setting the timer values (in number of ticks).

Icu

Icu_CheckWakeup функция

Checks if a wakeup capable ICU channel is the source for a wakeup event and calls the ECU state manager service Ecu M_ Set Wakeup Event in case of a valid ICU channel wakeup event.

void Icu_CheckWakeup(EcuM_WakeupSourceType WakeupSource);
Icu_DeInit функция

This function de - initializes the ICU module.

void Icu_DeInit(void);
Icu_DisableEdgeCount функция

This function disables the counting of edges of the given channel.

void Icu_DisableEdgeCount(Icu_ChannelType Channel);

This function disables the detection of edges of the given channel.

void Icu_DisableEdgeDetection(Icu_ChannelType Channel);

This function disables the notification of a channel.

void Icu_DisableNotification(Icu_ChannelType Channel);

This function disables the notification of a channel.

void Icu_DisableNotificationAsync(Icu_ChannelType Channel);
Icu_DisableWakeup функция

This function disables the wakeup capability of a single ICU channel.

void Icu_DisableWakeup(Icu_ChannelType Channel);
Icu_EnableEdgeCount функция

This function enables the counting of edges of the given channel.

void Icu_EnableEdgeCount(Icu_ChannelType Channel);

This function enables / re - enables the detection of edges of the given channel.

void Icu_EnableEdgeDetection(Icu_ChannelType Channel);
Icu_EnableNotification функция

This function enables the notification on the given channel.

void Icu_EnableNotification(Icu_ChannelType Channel);

This function enables the notification on the given channel.

void Icu_EnableNotificationAsync(Icu_ChannelType Channel);
Icu_EnableWakeup функция

This function (re - )enables the wakeup capability of the given ICU channel.

void Icu_EnableWakeup(Icu_ChannelType Channel);
Icu_GetDutyCycleValues функция

This function reads the coherent active time and period time for the given ICU Channel.

void Icu_GetDutyCycleValues(Icu_ChannelType Channel, Icu_DutyCycleType* DutyCycleValues);
Icu_GetInputState функция

This function returns the status of the ICU input.

Icu_InputStateType Icu_GetInputState(Icu_ChannelType Channel);
Icu_GetTimeElapsed функция

Description This function reads the elapsed Signal Low Time for the given channel.

Icu_ValueType Icu_GetTimeElapsed(Icu_ChannelType Channel);
Icu_GetTimestampIndex функция

This function reads the timestamp index of the given channel.

Icu_IndexType Icu_GetTimestampIndex(Icu_ChannelType Channel);
Icu_GetVersionInfo функция

This function returns the version information of this module.

void Icu_GetVersionInfo(Std_VersionInfoType* versioninfo);
Icu_Init функция

This function initializes the driver.

void Icu_Init(const Icu_ConfigType* ConfigPtr);
Icu_ResetEdgeCount функция

This function resets the value of the counted edges to zero.

void Icu_ResetEdgeCount(Icu_ChannelType Channel);

This function sets the activation - edge for the given channel.

void Icu_SetActivationCondition(Icu_ChannelType Channel, Icu_ActivationType Activation);
Icu_SetMode функция

This function sets the ICU mode.

void Icu_SetMode(Icu_ModeType Mode);

According to the last call of Icu_ Enable Notification, this notification function to be called if the requested signal edge (rising / falling / both edges) occurs (once per edge).

void Icu_SignalNotification_<Channel>(void);

This function starts the measurement of signals.

void Icu_StartSignalMeasurement(Icu_ChannelType Channel);
Icu_StartTimestamp функция

This function starts the capturing of timer values on the edges.

void Icu_StartTimestamp(Icu_ChannelType Channel, Icu_ValueType* BufferPtr, uint16 BufferSize, uint16 NotifyInterval);

This function stops the measurement of signals of the given channel.

void Icu_StopSignalMeasurement(Icu_ChannelType Channel);
Icu_StopTimestamp функция

This function stops the timestamp measurement of the given channel.

void Icu_StopTimestamp(Icu_ChannelType Channel);

This notification to be called if the number of requested timestamps (Notification interval > 0) are acquired and if the notification has been enabled by the call of Icu_ Enable Notification().

void Icu_TimestampNotification_<Channel>(void);

This function reads the number of counted edges.

Icu_EdgeNumberType Icu_GetEdgeNumbers(Icu_ChannelType Channel);

Definition of the type of activation of an ICU channel.

Numeric identifier of an ICU channel Avail able via Icu.h

This type contains initialization data.

Type which shall contain the values, needed for calculating duty cycles.

Type, to abstract the return value of the service Icu_ Get Edge Numbers().

Type, to abstract the return value of the service Icu_ Get Timestamp Index().Since circular buffer handling is supported and Icu_ Get Timestamp Index can return '0' as a legally true value ( not as an error according to ICU107 and ICU135), Icu_ Index Type may be implemented to have values 1..xyz.

Input state of an ICU channel

Definition of the measurement mode type

Allow enabling / disabling of all interrupts which are not required for the ECU wakeup.

Def inition of the measurement property type

Definition of the timestamp measurement property type

Width of the buffer for timestamp ticks and measured elapsed timeticks.

IoHwAb

<#group ID> функция

Will be called by the ADC Driver when a group conversion is completed for group <#group ID>.

void IoHwAb_AdcNotification<#group ID>(void);
<Ecu Signal Name> функция

This function provides control access to a certain ECU Signal t o the DCM module (<Ecu Signalname> is the symbolic name of an ECU Signal). The ECU signal can be locked and unlocked by this function. Locking 'freezes' the ECU signal to the current value, the configured default value or a value given by the parameter 'si gnal'.

void IoHwAb_Dcm_<Ecu Signal Name>(uint8 action, <Ecu Signal DataType> signal);
<Ecu Signal Name>#2 функция

This function provides read access to a certain ECU Signal to the DCM module (<Ecu Signalname> is the symbolic name of an ECU Signal).

void IoHwAb_Dcm_Read<Ecu Signal Name>(<Ecu Signal DataType>* signal);

The API shall be invoked by the ADC Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Adc_NotifyReadyForPowerState<#Mode>(void);

The API shall be invoked by the Io Hw Abs in order to effectively enter a power state which was prepared by the API Io Hw Ab_ Prepare Power State<#Mode> () . The aim of this API is to incapsulate all actions to set the HW in a power state corresponding to a predefined power mode, decoupling application power definition from HW power states.

void IoHwAb_EnterPowerState<#Mode>(void);
IoHwAb_GetVersionInfo функция

Returns the version information of this module.

void IoHwAb_GetVersionInfo(Std_VersionInfoType* versioninfo);

Will be called by the GPT driver when a timer value expires on channel <#channel>.

void IoHwAb_GptNotification<#channel>(void);

Will be called by the ICU driver when a signal edge occurs on channel <#channel>.

void IoHwAb_IcuNotification<#channel>(void);
IoHwAb_InitInit_Id функция

Initializes either all the IO Hardware Abstraction software or is a part of the IO Hardware Abstraction.

void IoHwAb_Init<Init_Id>(const IoHwAb{Init_Id}_ConfigType* ConfigPtr);

Will be called by the OCU driver when the current value of the threshold matches the threshold on the channel<#channel>.

void IoHwAb_OcuNotification<#channel>(void);

The API shall be invoked by the Io Hw Abs in order to prepare the transition to a given power state. The aim of this API is to incapsulate all actions to prepare the HW for a predefined power mode, decoupling application power definition from HW power stat es.

void IoHwAb_PreparePowerState<#Mode>(void);

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode>(void);

Will be called by the PWM Driver when a signal edge occurs on channel <#channel>.

void IoHwAb_PwmNotification<#channel>(void);

Configuration data structure of the Io Hw Ab module.

Mcu

Mcu_DistributePllClock функция

This service activates the PLL clock to the MCU clock distribution.

Std_ReturnType Mcu_DistributePllClock(void);
Mcu_GetRamState функция

This service provides the actual status of the microcontroller Ram. (if supported)

Mcu_RamStateType Mcu_GetRamState(void);
Mcu_GetResetReason функция

The service reads the reset type from the hardware, if supported.

Mcu_ResetType Mcu_GetResetReason(void);
Mcu_GetVersionInfo функция

This service returns the version information of this module.

void Mcu_GetVersionInfo(Std_VersionInfoType* versioninfo);
Mcu_Init функция

This service initializes the MCU driver.

void Mcu_Init(const Mcu_ConfigType* ConfigPtr);
Mcu_InitClock функция

This service initializes the PLL and other MCU specific clock options.

Std_ReturnType Mcu_InitClock(Mcu_ClockType ClockSetting);
Mcu_InitRamSection функция

This service initializes the RAM section wise.

Std_ReturnType Mcu_InitRamSection(Mcu_RamSectionType RamSection);
Mcu_PerformReset функция

The service performs a microcontroller reset.

void Mcu_PerformReset(void);
Mcu_SetMode функция

This service activates the MCU power modes.

void Mcu_SetMode(Mcu_ModeType McuMode);

The service reads the reset type from the hardware register, if supported.

Mcu_RawResetType Mcu_GetResetRawValue(void);

This service provides the lock status of the PLL.

Mcu_PllStatusType Mcu_GetPllStatus(void);

Specifies the identification (ID) for a clock setting, which is configured in the configuration structure

A pointer to such a structure is provided to the MCU initialization routines for configuration.

Name Mcu_ Mode Type Kind Type Derived from uint Range 0..<number of MCU modes> - 1 -- The range is dependent on the number of MCU modes provided in the configuration structure. The type shall be chosen depending on MCU platform for best performance. Des cription This type specifies the identification (ID) for a MCU mode, which is configured in the configuration structure. Available via Mcu.h

This is a status value returned by the function Mcu_ Get Pll Status of the MCU module.

This type specifies the identification (ID) for a RAM section, which is conf igured in the configuration structure.

This is the Ram State data type returned by the function Mcu_ Get Ram State of the Mcu module. It is not required that all RAM state types are supported by the hardware.

This type specifies the reset reason in raw register format read from a reset status register.

This is the type of the reset enumerator containing the subset of reset types. It is not required that all reset types are supported by hardware.

Ocu

Ocu_DeInit функция

This function de - initializes the OCU module.

void Ocu_DeInit(void);

This service is used to disable notifications from an OCU channel.

void Ocu_DisableNotification(Ocu_ChannelType ChannelNumber);
Ocu_EnableNotification функция

This service is used to enable notifications from an OCU channel.

void Ocu_EnableNotification(Ocu_ChannelType ChannelNumber);
Ocu_GetCounter функция

Service to read the current value of the counter.

Ocu_ValueType Ocu_GetCounter(Ocu_ChannelType ChannelNumber);
Ocu_GetVersionInfo функция

This service returns the version information of this module.

void Ocu_GetVersionInfo(Std_VersionInfoType* versioninfo);
Ocu_Init функция

Service for OCU initialization.

void Ocu_Init(const Ocu_ConfigType* ConfigPtr);

This notification function is called when a compare match occurs on the associated channel.

void Ocu_Notification_<Channel>(void);

Service to set the value of the channel threshold using an absolute input data.

Ocu_ReturnType Ocu_SetAbsoluteThreshold(Ocu_ChannelType ChannelNumber, Ocu_ValueType ReferenceValue, Ocu_ValueType AbsoluteValue);
Ocu_SetPinAction функция

Service to indicate the driver what shall be done automatically by hardware (if supported) upon compare match.

void Ocu_SetPinAction(Ocu_ChannelType ChannelNumber, Ocu_PinActionType PinAction);
Ocu_SetPinState функция

Service to set immediately the level of the pin associated to an OCU channel.

void Ocu_SetPinState(Ocu_ChannelType ChannelNumber, Ocu_PinStateType PinState);

Service to set the value of the channel threshold relative to the current value of the counter.

Ocu_ReturnType Ocu_SetRelativeThreshold(Ocu_ChannelType ChannelNumber, Ocu_ValueType RelativeValue);
Ocu_StartChannel функция

Service to start an OCU channel.

Std_ReturnType Ocu_StartChannel(Ocu_ChannelType ChannelNumber);
Ocu_StopChannel функция

Service to stop an OCU channel.

void Ocu_StopChannel(Ocu_ChannelType ChannelNumber);

Numeric identifier of an OCU channel.

This is the type of the data structure containing the initialization data for the OCU driver.

Automatic action (by hardware) to be performed on a pin attached to an OCU channel. A vailable via Ocu.h

Output state of the pin linked to an OCU channel.

Return information after setting a new threshold value.

Type for reading the counter and writing the threshold values (in number of ticks).

Port

Port_GetVersionInfo функция

Returns the version information of this module.

void Port_GetVersionInfo(Std_VersionInfoType* versioninfo);
Port_Init функция

Initializes the Port Driver module.

void Port_Init(const Port_ConfigType* ConfigPtr);

Refreshes port direction.

void Port_RefreshPortDirection(void);
Port_SetPinDirection функция

Sets the port pin direction

void Port_SetPinDirection(Port_PinType Pin, Port_PinDirectionType Direction);
Port_SetPinMode функция

Sets the port pin mode.

void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode);

Type of the external data structure containing the initialization data for this module.

Possible directions of a port pin.

Different port pin modes.

Data type for the symbolic name of a port pin.

Pwm

The API shall be invoked by the PWM Driver when the requested power state preparation for mode <#Mode> is completed.

void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> (void);
Pwm_DeInit функция

Service for PWM De - Initialization.

void Pwm_DeInit (void);

Service to disable the PWM signal edge notification.

void Pwm_DisableNotification (Pwm_ChannelType ChannelNumber);
Pwm_EnableNotification функция

Service to enable the PWM signal edge notification according to notification pa rameter.

void Pwm_EnableNotification (Pwm_ChannelType ChannelNumber, Pwm_EdgeNotificationType Notification);

This API returns the current power state of the PWM HW unit. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_GetCurrentPowerState (Pwm_PowerStateType* CurrentPowerState, Pwm_PowerStateRequestResultType* Result);
Pwm_GetOutputState функция

Service to read the internal state of the PWM out put signal.

Pwm_OutputStateType Pwm_GetOutputState (Pwm_ChannelType ChannelNumber);

This API returns the Target power state of the PWM HW unit.

Std_ReturnType Pwm_GetTargetPowerState (Pwm_PowerStateType* TargetPowerState, Pwm_PowerStateRequestResultType* Result);
Pwm_GetVersionInfo функция

Service returns the version information of this module.

void Pwm_GetVersionInfo (Std_VersionInfoType* versioninfo);
Pwm_Init функция

Service for PWM initialization.

void Pwm_Init (const Pwm_ConfigType* ConfigPtr);

This API is cyclically called and supervises the power state transitions, checking for the readiness of the module and issuing the callbacks Io Hw Ab_ Pwm_ Notify Ready For Power State (see Pwm Power State Ready Cb k Ref configuration parameter). AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

void Pwm_Main_PowerTransitionManager (void);
Pwm_Notification_ функция

The Pwm module shall call the function Pwm_ Notification_<#Channel> accordingly to the last call of Pwm_ Enable Notification for channel <#Channel>.

void Pwm_Notification_<#Channel> (void);
Pwm_PreparePowerState функция

This API starts the needed process to allow the PWM HW module to enter the requested power state. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_PWMDriver

Std_ReturnType Pwm_PreparePowerState (Pwm_PowerStateType PowerState, Pwm_PowerStateRequestResultType* Result);
Pwm_SetDutyCycle функция

Service sets the duty cycle of the PWM channel.

void Pwm_SetDutyCycle (Pwm_ChannelType ChannelNumber, uint16 DutyCycle);
Pwm_SetOutputToIdle функция

Service sets the PWM output to the configured Idle state.

void Pwm_SetOutputToIdle (Pwm_ChannelType ChannelNumber);
Pwm_SetPeriodAndDuty функция

Service sets the period and the duty cycle of a PWM channel

void Pwm_SetPeriodAndDuty (Pwm_ChannelType ChannelNumber, Pwm_PeriodType Period, uint16 DutyCycle);
Pwm_SetPowerState функция

This API configures the Pwm module so that it enters the already prepared power st ate, chosen between a predefined set of configured ones.

Std_ReturnType Pwm_SetPowerState (Pwm_PowerStateRequestResultType* Result);

Defines the class of a PWM channel

Nume ric identifier of a PWM channel.

This is the type of data structure containing the initialization data for the PWM driver.

Definition of the type of edge notification of a PWM channel.

Output state of a PWM channel.

Definition of the period of a PWM channel.

Result of the requests related to power state transitions.

Power state currently active or set as target power state.

Spi

JobEnd функция

Callback routine provided by the user for each Job to notify the caller that a job has been finished.

void(* Spi_JobEndNotification); ⚠️

This service returns the last transmission result of the specified Job.

Spi_JobResultType Spi_GetJobResult(Spi_JobType Job);

This service returns the last transmission result of the specified Sequence.

Spi_SeqResultType Spi_GetSequenceResult(Spi_SequenceType Sequence);
SeqEnd функция

Callback routine provided by the user for each Sequence to notify the caller that a sequence has been finished.

void(* Spi_SeqEndNotification); ⚠️
Spi_AsyncTransmit функция

Service to transmit data on the SPI bus.

Std_ReturnType Spi_AsyncTransmit(Spi_SequenceType Sequence);
Spi_Cancel функция

Service cancels the specified on - going sequence transmission.

void Spi_Cancel(Spi_SequenceType Sequence);
Spi_DeInit функция

Service for SPI de - initialization.

Std_ReturnType Spi_DeInit(void);
Spi_GetHWUnitStatus функция

This service returns the status of the specified SPI Hardware microcontroller peripheral.

Spi_StatusType Spi_GetHWUnitStatus(Spi_HWUnitType HWUnit);
Spi_GetStatus функция

Service returns the SPI Handler/ Driver software module status.

Spi_StatusType Spi_GetStatus(void);
Spi_GetVersionInfo функция

This service returns the version information of this module.

void Spi_GetVersionInfo(Std_VersionInfoType* versioninfo);
Spi_Init функция

Service for SPI initialization.

void Spi_Init(const Spi_ConfigType* ConfigPtr);

-

void Spi_MainFunction_Handling(void);
Spi_ReadIB функция

Service for reading synchronously one or more data from an IB SPI Handler/ Driver Channel specified by parameter.

Std_ReturnType Spi_ReadIB(Spi_ChannelType Channel, Spi_DataBufferType* DataBufferPointer);
Spi_SetAsyncMode функция

Service to set the asynchronous mechanism mode for SPI busses handled asynchronously.

Std_ReturnType Spi_SetAsyncMode(Spi_AsyncModeType Mode);
Spi_SetupEB функция

Service to setup the buffers and the length of data for the EB SPI Handle r/ Driver Channel specified.

Std_ReturnType Spi_SetupEB(Spi_ChannelType Channel, const Spi_DataBufferType* SrcDataBufferPtr, Spi_DataBufferType* DesDataBufferPtr, Spi_NumberOfDataType Length);
Spi_SyncTransmit функция

Service to transmit data on the SPI bus

Std_ReturnType Spi_SyncTransmit(Spi_SequenceType Sequence);
Spi_WriteIB функция

Service for writing one or more data to an IB SPI Handler/ Driver Channel specified by parameter.

Std_ReturnType Spi_WriteIB(Spi_ChannelType Channel, const Spi_DataBufferType* DataBufferPtr);

Specifies the asynchronous mechanism mode for SPI busses handled asynchronously.

Specifies the identification (ID) for a Channel.

This type of the external data structure shall contain the initialization data for the SPI Handler/ Driver.

Type of application data buffer elements.

Specifies the identification (ID) for a SPI Hardware microcontroller peripheral (unit).

This type defines a range of specific Jobs status for SPI Handler/ Driver.

Specifies the identification (ID) for a Job.

Type for defining the number of data elements of the type Spi_ Data Buffer Type to send and / or receive by Channel

This type defines a range of specific Sequences status for SPI Handler/ Driver.

Specifies the identification (ID) for a sequence of jobs.

This type defines a range of specific status for SPI Handler/ Driver.

Wdg

Wdg_GetVersionInfo функция

Returns the version information of the module.

void Wdg_GetVersionInfo (Std_VersionInfoType* versioninfo);
Wdg_Init функция

Initializes the module.

void Wdg_Init (const Wdg_ConfigType* ConfigPtr);
Wdg_SetMode функция

Switches the watchdog into the mode Mode. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_WatchdogDriver

Std_ReturnType Wdg_SetMode (WdgIf_ModeType Mode);

Sets the timeout value for the trigger counter.

void Wdg_SetTriggerCondition (uint16 timeout);

Used for pointers to structures holding configuration data provided to the Wdg module initialization routine for configuration of the module and watchdog hardware.

WdgIf

WdgIf_GetVersionInfo функция

Returns the version information.

void WdgIf_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
WdgIf_SetMode функция

Map the service Wdg If_ Set Mode to the serv ice Wdg_ Set Mode of the corresponding Watchdog Driver.

Std_ReturnType WdgIf_SetMode(uint8 DeviceIndex, WdgIf_ModeType WdgMode);

Map the service Wdg If_ Set Trigger Condition to the service Wdg_ Set Trigger Condition of the corresponding Wa tchdog Driver.

void WdgIf_SetTriggerCondition(uint8 DeviceIndex, uint16 Timeout);

Mode type of the Wdg If module

Руководство по кластеруСОЗДАНО ИИ

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

Предоставляет низкоуровневые драйверы для прямой инкапсуляции и управления периферией микроконтроллера и внутренними регистрами.

Кластер модулей Microcontroller Abstraction (MCAL) включает драйверы Port, Dio, Adc, Pwm, Spi и Wdg для низкоуровневой инкапсуляции и управления встроенной периферией (SWS_ECUStateManager с. 34). К ключевым задачам относятся конфигурирование выводов перед обращением к периферии, управление аналоговыми и широтно-импульсными сигналами, а также контроль выполнения с отслеживанием времени ([SWS_Adc_00507], [SWS_Wdg_00155]). Центральные переключения режимов и состояний питания при этом должны выполняться строго последовательно и нереентерабельно ([SWS_Wdg_00107]).

Кластер модулей Microcontroller Abstraction (MCAL) инкапсулирует физические встроенные ресурсы микроконтроллера и предоставляет стандартизированные интерфейсы для абстракции аппаратного обеспечения ввода-вывода (IoHwAb), интерфейса сторожевого таймера (WdgIf), а также EcuM и BswM (SWS_ECUStateManager с. 34). Он включает шесть компонентов драйверов: Port (мультиплексирование выводов), Dio (цифровой ввод-вывод), Adc (аналого-цифровое преобразование), Pwm (широтно-импульсная модуляция), Spi (последовательная коммуникация с периферией) и Wdg (аппаратный контроль выполнения) ([SWS_Adc_00507], [SWS_Pwm_00197], [SWS_Wdg_00155]).

Модули функционируют в условиях фиксированных зависимостей: Port_Init настраивает назначение выводов до того, как драйверы, такие как Pwm или Adc, активируют соответствующие аппаратные блоки (AUTOSAR_CP_RS_PWMDriver с. 14, ModemanagementGuide с. 54). Буферы данных предоставляются со стороны приложения через Adc_SetupResultBuffer ([SWS_Adc_91000]), тогда как обслуживание сторожевого таймера асинхронно развязывается через прерывания таймера (AUTOSAR_SWS_WatchdogDriver с. 31).

G cluster_system System Services & Modus-Management cluster_abstraction ECU Abstraction Layer cluster_mcal Microcontroller Abstraction Layer (MCAL) cluster_hardware Mikrocontroller Peripherie & Hardware EcuM EcuM Port Port EcuM->Port Adc Adc EcuM->Adc Pwm Pwm EcuM->Pwm Wdg Wdg EcuM->Wdg BswM BswM IoHwAb IoHwAb BswM->IoHwAb WdgM WdgM WdgIf WdgIf WdgM->WdgIf Dio Dio IoHwAb->Dio IoHwAb->Adc IoHwAb->Pwm WdgIf->Wdg Port_Logic Port_Logic Port->Port_Logic ADC_HW ADC_HW Adc->ADC_HW PWM_HW PWM_HW Pwm->PWM_HW Spi Spi SPI_HW SPI_HW Spi->SPI_HW Wdg->Dio Wdg->Spi Watchdog_HW Watchdog_HW Wdg->Watchdog_HW

Архитектурная диаграмма: многоуровневая архитектура и классификация кластера MCAL. Источники: SWS_ECUStateManager с. 34, AUTOSAR_CP_RS_PWMDriver с. 14.

В то время как вызовы драйверов для отдельных каналов и групп являются реентерабельными для непересекающихся экземпляров ([SWS_Pwm_91000], [SWS_Adc_00367]), переключения режимов и состояний требуют строго синхронных, нереентерабельных путей ([SWS_Wdg_00107]). Для снижения энергопотребления Adc и Pwm выполняют двухфазные переходы состояний питания с асинхронными сообщениями о готовности в IoHwAb ([SWS_Adc_00478], [SWS_Pwm_00183], AUTOSAR_CP_SWS_IOHardwareAbstraction с. 57).

Ошибки управления, такие как неинициализированные вызовы, передаются в DET ([SWS_Pwm_00177]), тогда как аппаратные дефекты регистрируются в DEM ([SWS_Wdg_00111]). В случае деградации Wdg_SetTriggerCondition позволяет целенаправленно вызвать сброс ECU путём передачи таймаута 0 ([SWS_Wdg_00155], SWS_WatchdogDriver с. 29).

Системная архитектура & роль кластера модулей

Кластер модулей уровня абстракции микроконтроллера (Microcontroller Abstraction Layer, MCAL) образует наиболее близкий к аппаратному обеспечению фундамент AUTOSAR Classic Platform. Он инкапсулирует обращения к регистрам встроенных периферийных модулей и предоставляет верхним уровням стандартизированный, независимый от микроконтроллера интерфейс. В рамках многоуровневой архитектуры драйверы обслуживают абстракцию аппаратного обеспечения ввода-вывода (IoHwAb), интерфейс сторожевого таймера (WdgIf), а также центральные системные службы, такие как ECU State Manager (EcuM) и Basic Software Mode Manager (BswM) (SWS_ECUStateManager с. 34).

Кластер включает шесть взаимодополняющих компонентов драйверов: Port берёт на себя глобальное конфигурирование выводов и мультиплексирование выводов микроконтроллера (AUTOSAR_CP_RS_PWMDriver с. 14). Dio реализует быстрый побитовый и попортовый цифровой доступ ввода-вывода, в то время как Spi инкапсулирует синхронную и асинхронную последовательную коммуникацию по шине с встроенными на плате периферийными компонентами. Для аналоговых и широтно-импульсных сигналов Adc ([SWS_Adc_00507]) и Pwm ([SWS_Pwm_00197]) предоставляют развитые службы преобразования и модуляции. Wdg управляет аппаратным контролем времени для защиты целостности выполнения программы ([SWS_Wdg_00155]).

G cluster_system System Services & Modus-Management cluster_abstraction ECU Abstraction Layer cluster_mcal Microcontroller Abstraction Layer (MCAL) cluster_hardware Mikrocontroller Peripherie & Hardware EcuM EcuM Port Port EcuM->Port Adc Adc EcuM->Adc Pwm Pwm EcuM->Pwm Wdg Wdg EcuM->Wdg BswM BswM IoHwAb IoHwAb BswM->IoHwAb WdgM WdgM WdgIf WdgIf WdgM->WdgIf Dio Dio IoHwAb->Dio IoHwAb->Adc IoHwAb->Pwm WdgIf->Wdg Port_Logic Port_Logic Port->Port_Logic ADC_HW ADC_HW Adc->ADC_HW PWM_HW PWM_HW Pwm->PWM_HW Spi Spi SPI_HW SPI_HW Spi->SPI_HW Wdg->Dio Wdg->Spi Watchdog_HW Watchdog_HW Wdg->Watchdog_HW

Архитектурная диаграмма: многоуровневая архитектура и структурное расположение кластера MCAL между системными службами, уровнями абстракции и периферией. Источники: SWS_ECUStateManager с. 34, AUTOSAR_CP_RS_PWMDriver с. 14, AUTOSAR_SWS_WatchdogDriver с. 11.

Взаимодействие и пути взаимодействия между модулями

Модули функционируют в чётко определённых потоках сигналов и буферов. Драйвер Port предварительно инициализирует электрическую логику портов и мультиплексирование, после чего такие драйверы, как Pwm или Adc, управляют назначенными периферийными блоками без необходимости иметь информацию о разводке контактных площадок (AUTOSAR_CP_RS_PWMDriver с. 14). При считывании внутренних логических состояний через [SWS_Pwm_00100] модуль Pwm_GetOutputState считывает состояние регистра блока PWM, а не физический вывод порта ([SWS_Pwm_00108], AUTOSAR_SWS_PWMDriver с. 51).

В аналоговом тракте вышестоящий IoHwAb запрашивает измерения и предоставляет буферы со стороны приложения (AUTOSAR_CP_SWS_IOHardwareAbstraction с. 55). С помощью [SWS_Adc_91000] модуль Adc_SetupResultBuffer инициализирует внутренний указатель на область памяти вызывающей стороны (AUTOSAR_SWS_ADCDriver с. 31). После запуска преобразования программным путём ([SWS_Adc_00367]) или аппаратным триггером ([SWS_Adc_91001]) необработанные данные записываются в буфер. Доступ для чтения осуществляется синхронно через [SWS_Adc_00369] (копирование самых последних результатов) или через [SWS_Adc_00375] с помощью Adc_GetStreamLastPointer (SWS_ADCDriver с. 27).

Тракт сторожевого таймера разделяет логический контроль выполнения и аппаратное обслуживание: WdgM управляет бюджетами контроля и задаёт временное окно в Wdg_SetTriggerCondition через WdgIf с помощью [SWS_Wdg_00155] (SWS_WatchdogDriver с. 29). Непосредственное аппаратное обслуживание выполняется циклически через аппаратные прерывания таймера (AUTOSAR_SWS_WatchdogDriver с. 31). Внешние компоненты сторожевого таймера при необходимости опрашиваются через экземпляры драйверов Dio или Spi ([SWS_Wdg_00111], AUTOSAR_SWS_WatchdogDriver с. 11).

Циклический мониторинг и аппаратное обслуживание сторожевого таймераWdgMWdgIfWdgWatchdog_HWTimer_HWUse Case: Zyklische Budget-AktualisierungWdgIf_SetTriggerCondition(DeviceIndex, timeout)Wdg_SetTriggerCondition(timeout)Вычислить значение счетчика из мсUse Case: Hardware-Servicing via Timer-InterruptTimer-Interrupt()Trigger Watchdog Hardware()Use Case: ModusumschaltungWdgIf_SetMode(DeviceIndex, Mode)Wdg_SetMode(Mode)Hardware-Modus anpassen()E_OKE_OK

Диаграмма последовательности: взаимодействие WdgM, WdgIf и Wdg при циклическом продлении триггера и переключении режима. Источники: AUTOSAR_SWS_WatchdogDriver с. 31, AUTOSAR_SWS_WatchdogDriver с. 34, [SWS_Wdg_00155], [SWS_Wdg_00107].

Синхронизация, реентерабельность и контексты задач

Драйверы MCAL подчиняются дифференцированным правилам реентерабельности. В модуле Pwm функции управления, такие как Pwm_SetDutyCycle ([SWS_Pwm_91000]), Pwm_SetPeriodAndDuty ([SWS_Pwm_91001]) и Pwm_SetOutputToIdle ([SWS_Pwm_91002]), реентерабельны для различных каналов, однако не должны вызываться параллельно для одного и того же канала (AUTOSAR_CP_SWS_PWMDriver с. 46). В модуле Adc API управления и чтения, такие как Adc_StartGroupConversion ([SWS_Adc_00367]), Adc_StopGroupConversion ([SWS_Adc_00368]) и Adc_ReadGroup ([SWS_Adc_00369]), реентерабельны относительно различных групп каналов.

Напротив, центральные API конфигурирования и режимов строго нереентерабельны. Это относится к Wdg_SetMode ([SWS_Wdg_00107]), Wdg_SetTriggerCondition ([SWS_Wdg_00155]), а также к подпрограммам инициализации и деинициализации всех драйверов ([SWS_Adc_00366], [SWS_Pwm_00096]). Конкурирующие вызовы из различных задач OS должны быть защищены через исключительные области SchM (AUTOSAR_SWS_WatchdogDriver с. 11).

Уведомления о событиях (например, смене фронта или завершении преобразования) инициируются из контекста прерывания (ISR) через конфигурируемые обратные вызовы, такие как Pwm_Notification_<#Channel> ([SWS_Pwm_00105]) или Adc_Notification_Group_<x> ([SWS_Adc_91003]). При активации уведомлений ожидающие флаги прерываний сбрасываются ([SWS_Pwm_91004]). Если несколько групп ADC конкурируют за ресурсы преобразователя, в зависимости от конфигурации вступает в силу аппаратная приоритезация или программная организация очередей ([SWS_Adc_00522]) с настраиваемым механизмом прерывания/перезапуска (Abort/Restart) или приостановки/возобновления (Suspend/Resume) ([SWS_Adc_00523], SWS_ADCDriver с. 97).

Типичные жизненные циклы и режимы работы

Жизненный цикл драйверов MCAL начинается на фазе запуска всей системы под управлением EcuM (SWS_ECUStateManager с. 34). С помощью правил BswM обеспечивается детерминированная последовательность: сначала Port_Init инициализирует функциональность выводов (ModemanagementGuide с. 54). Только после этого следуют периферийные драйверы, такие как Dio_Init, Spi_Init, Adc_Init ([SWS_Adc_00365]), Pwm_Init ([SWS_Pwm_00095]) и Wdg_Init ([SWS_Wdg_00106], AUTOSAR_CP_SWS_PWMDriver с. 47).

В процессе работы Wdg различает три статических режима: WDGIF_OFF_MODE, WDGIF_SLOW_MODE и WDGIF_FAST_MODE ([SWS_Wdg_00107]). Модуль Adc различает однократные и непрерывные преобразования ([SWS_Adc_00515]), а также режимы одиночного и потокового доступа ([SWS_Adc_00528], [SWS_Adc_00519]). Статус группы при этом проходит через состояния ADC_IDLE, ADC_BUSY, ADC_COMPLETED и ADC_STREAM_COMPLETED ([SWS_Adc_00513], [SWS_Adc_00374], SWS_ADCDriver с. 37).

Для режимов энергосбережения (Low Power) Adc и Pwm реализуют стандартизированный двухфазный протокол состояний питания: сначала Adc_PreparePowerState ([SWS_Adc_00478]) и Pwm_PreparePowerState ([SWS_Pwm_00183]) подготавливают переход ([SWS_Pwm_00165], [SWS_Adc_00527]). После асинхронного завершения абстракция аппаратного обеспечения сообщает о готовности через обратные вызовы, такие как IoHwAb_Adc_NotifyReadyForPowerState<#Mode> ([SWS_Adc_00480]). Наконец, Adc_SetPowerState ([SWS_Adc_00475]) и Pwm_SetPowerState ([SWS_Pwm_00166]) переключают аппаратное обеспечение в целевое состояние (AUTOSAR_CP_SWS_IOHardwareAbstraction с. 57). Циклический контроль обеспечивается в задачах с помощью Pwm_Main_PowerTransitionManager ([SWS_Pwm_00189], [SWS_Pwm_00190]).

При завершении работы системы или сбросе службы деинициализации, такие как Adc_DeInit ([SWS_Adc_00366], AUTOSAR_SWS_ADC_Driver с. 76) и Pwm_DeInit ([SWS_Pwm_00096], AUTOSAR_SWS_PWMDriver с. 47), переводят модули в безопасное состояние покоя и деактивируют все прерывания.

Двухфазный асинхронный переход Power StateBswMIoHwAbAdcPwmUse Case: Фаза 1: подготовка целевого состоянияAnforderung LowPowerModeAdc_PreparePowerState(PowerState, &Result)E_OK (ADC_SERVICE_ACCEPTED)Pwm_PreparePowerState(PowerState, &Result)E_OK (PWM_SERVICE_ACCEPTED)Use Case: Phase 2: Asynchrone BereitschaftsmeldungIoHwAb_Adc_NotifyReadyForPowerState<Mode>()IoHwAb_Pwm_NotifyReadyForPowerState<Mode>()Use Case: Phase 3: Umschaltung aktivierenAdc_SetPowerState(&Result)E_OK (Power Mode changed)Pwm_SetPowerState(&Result)E_OK (Power Mode changed)

Диаграмма последовательности: двухфазное асинхронное переключение состояния питания в кластере MCAL через BswM и IoHwAb. Источники: AUTOSAR_CP_SWS_IOHardwareAbstraction с. 57, [SWS_Adc_00478], [SWS_Pwm_00183], [SWS_Adc_00475], [SWS_Pwm_00166].

Обработка ошибок, трассировка DET и деградация

Ошибки строго разделяются на ошибки разработки и эксплуатационные ошибки. При активном контроле разработки драйверы сообщают о вызовах до выполнения инициализации в Default Error Tracer (DET), например через PWM_E_UNINIT ([SWS_Pwm_00177], [SWS_Pwm_00104]) или ADC_E_UNINIT ([SWS_Adc_00476]). Параметры-указатели проверяются на NULL, например в GetVersionInfo через ADC_E_PARAM_POINTER ([SWS_Adc_00376]) и WDG_E_PARAM_POINTER ([SWS_Wdg_00109]).

Ошибки времени выполнения защищают от недопустимых эксплуатационных переходов: если Pwm_SetPowerState вызывается в момент, когда каналы не находятся в состоянии IDLE или ещё присутствуют активные уведомления, драйвер сообщает об ошибке времени выполнения PWM_E_NOT_DISENGAGED ([SWS_Pwm_00202]). В случае Adc попытка повторного запуска занятой группы каналов в конфигурациях без очередей приводит к отправке сообщения времени выполнения ADC_E_BUSY в DET (SWS_ADCDriver с. 95).

Серьёзные эксплуатационные ошибки и отказы периферии передаются в Diagnostic Event Manager (DEM) через Dem_SetEventStatus ([SWS_Wdg_00111]). Для деградации в аварийных режимах работы Pwm_SetOutputToIdle обеспечивает немедленную деактивацию отдельных выходов PWM ([SWS_Pwm_91002]). В драйвере сторожевого таймера установка таймаута триггера в значение 0 позволяет немедленно остановить обслуживание и форсирует быстрый сброс ECU ([SWS_Wdg_00155], [SWS_Wdg_00136], SWS_WatchdogDriver с. 29).

Данное руководство основано исключительно на спецификациях и артефактах трассируемости полезной нагрузки AUTOSAR Classic R20-11.

Module im Cluster

ADC Driver (Adc)

Provides initialization and conversion services for analog-to-digital converters.

BSW ID 123 43 APIs (19 Funktionen, 24 Typen) #include "Adc.h"

Core Test (CorTst)

AUTOSAR Classic Microcontroller Drivers-Modul Core Test (CorTst, Spezifikation: AUTOSAR_CP_SWS_CoreTest.pdf, AUTOSAR_SWS_CoreTest.pdf).

BSW ID 103 11 APIs (11 Funktionen, 0 Typen) #include "CorTst.h"

DIO Driver (Dio)

AUTOSAR Classic I/O Drivers-Modul DIO Driver (Dio, Spezifikation: AUTOSAR_CP_SWS_DIODriver.pdf, AUTOSAR_SWS_DIODriver.pdf, AUTOSAR_SWS_DIO_Driver.pdf).

BSW ID 120 9 APIs (9 Funktionen, 0 Typen) #include "Dio.h"

GPT Driver (Gpt)

AUTOSAR Classic Microcontroller Drivers-Modul GPT Driver (Gpt, Spezifikation: AUTOSAR_CP_SWS_GPTDriver.pdf, AUTOSAR_SWS_GPTDriver.pdf, AUTOSAR_SWS_GPT_Driver.pdf).

BSW ID 100 15 APIs (15 Funktionen, 0 Typen) #include "Gpt.h"

I2C Driver (I2c)

AUTOSAR Classic Communication Drivers-Modul I2C Driver (I2c, Spezifikation: AUTOSAR_CP_SWS_I2CDriver.pdf).

Keine C-API · 0 Records #include "I2c.h"

ICU Driver (Icu)

AUTOSAR Classic I/O Drivers-Modul ICU Driver (Icu, Spezifikation: AUTOSAR_CP_SWS_ICUDriver.pdf, AUTOSAR_SWS_ICUDriver.pdf, AUTOSAR_SWS_ICU_Driver.pdf).

BSW ID 122 28 APIs (28 Funktionen, 0 Typen) #include "Icu.h"

I/O Hardware Abstraction (IoHwAb)

AUTOSAR Classic I/O HW Abstraction-Modul I/O Hardware Abstraction (IoHwAb, Spezifikation: AUTOSAR_CP_SWS_IOHardwareAbstraction.pdf, AUTOSAR_SWS_IOHardwareAbstraction.pdf, AUTOSAR_SWS_IO_HWAbstraction.pdf).

BSW ID 254 13 APIs (13 Funktionen, 0 Typen) #include "IoHwAb.h"

MCU Driver (Mcu)

AUTOSAR Classic Microcontroller Drivers-Modul MCU Driver (Mcu, Spezifikation: AUTOSAR_CP_SWS_MCUDriver.pdf, AUTOSAR_SWS_MCUDriver.pdf, AUTOSAR_SWS_MCU_Driver.pdf).

BSW ID 101 11 APIs (11 Funktionen, 0 Typen) #include "Mcu.h"

OCU Driver (Ocu)

AUTOSAR Classic I/O Drivers-Modul OCU Driver (Ocu, Spezifikation: AUTOSAR_CP_SWS_OCUDriver.pdf, AUTOSAR_SWS_OCUDriver.pdf).

BSW ID 125 13 APIs (13 Funktionen, 0 Typen) #include "Ocu.h"

Port Driver (Port)

AUTOSAR Classic I/O Drivers-Modul Port Driver (Port, Spezifikation: AUTOSAR_CP_SWS_PortDriver.pdf, AUTOSAR_SWS_PortDriver.pdf, AUTOSAR_SWS_Port_Driver.pdf).

BSW ID 124 5 APIs (5 Funktionen, 0 Typen) #include "Port.h"

PWM Driver (Pwm)

Generates pulse-width-modulated signals with configurable duty cycle and period.

BSW ID 121 24 APIs (16 Funktionen, 8 Typen) #include "Pwm.h"

SPI Handler Driver (Spi)

AUTOSAR Classic Communication Drivers-Modul SPI Handler Driver (Spi, Spezifikation: AUTOSAR_CP_SWS_SPIHandlerDriver.pdf, AUTOSAR_SWS_SPIHandlerDriver.pdf, AUTOSAR_SWS_SPI_HandlerDriver.pdf).

BSW ID 83 15 APIs (15 Funktionen, 0 Typen) #include "Spi.h"

Watchdog Driver (Wdg)

Hardware watchdog timer servicing and mode configuration.

BSW ID 102 5 APIs (4 Funktionen, 1 Typen) #include "Wdg.h"

Watchdog Interface (WdgIf)

AUTOSAR Classic Onboard Device Abstraction-Modul Watchdog Interface (WdgIf, Spezifikation: AUTOSAR_CP_SWS_WatchdogInterface.pdf, AUTOSAR_SWS_WatchdogInterface.pdf).

BSW ID 43 3 APIs (3 Funktionen, 0 Typen) #include "WdgIf.h"

Дополнительные модули MCAL (каталог)

Dio, Port und Spi gehören zum MCAL-Cluster, haben aber noch keine Modulseite (die festen 44 Modul-Records enthalten sie nicht). Die Tabellen sind die API-Kataloge aus den SWS-Definitionen von R23-11. Die Modulseiten selbst erzeugt die Modul-Registry; bis dahin steht der Katalog direkt auf dieser Seite.

DIO Driver (Dio)

BSW ID 120 #include "Dio.h" 9 функций API

ServiceSyntaxSWS
Dio_ReadChannelDio_LevelType Dio_ReadChannel(Dio_ChannelType ChannelId);SWS_Dio_00133
Dio_WriteChannelvoid Dio_WriteChannel(Dio_ChannelType ChannelId, Dio_LevelType Level);SWS_Dio_00134
Dio_ReadPortDio_PortLevelType Dio_ReadPort(Dio_PortType PortId);SWS_Dio_00135
Dio_WritePortvoid Dio_WritePort(Dio_PortType PortId, Dio_PortLevelType Level);SWS_Dio_00136
Dio_ReadChannelGroupDio_PortLevelType Dio_ReadChannelGroup(const Dio_ChannelGroupType* ChannelGroupIdPtr);SWS_Dio_00137
Dio_WriteChannelGroupvoid Dio_WriteChannelGroup(const Dio_ChannelGroupType* ChannelGroupIdPtr, Dio_PortLevelType Level);SWS_Dio_00138
Dio_GetVersionInfovoid Dio_GetVersionInfo(Std_VersionInfoType* VersionInfo);SWS_Dio_00139
Dio_FlipChannelDio_LevelType Dio_FlipChannel(Dio_ChannelType ChannelId);SWS_Dio_00190
Dio_MaskedWritePortvoid Dio_MaskedWritePort(Dio_PortType PortId, Dio_PortLevelType Level, Dio_PortLevelType Mask);SWS_Dio_00300

Port Driver (Port)

BSW ID 124 #include "Port.h" 5 функций API

ServiceSyntaxSWS
Port_Initvoid Port_Init(const Port_ConfigType* ConfigPtr);SWS_Port_00140
Port_SetPinDirectionvoid Port_SetPinDirection(Port_PinType Pin, Port_PinDirectionType Direction);SWS_Port_00141
Port_RefreshPortDirectionvoid Port_RefreshPortDirection(void);SWS_Port_00142
Port_GetVersionInfovoid Port_GetVersionInfo(Std_VersionInfoType* versioninfo);SWS_Port_00143
Port_SetPinModevoid Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode);SWS_Port_00145

SPI Handler/Driver (Spi)

BSW ID 83 #include "Spi.h" 15 функций API

ServiceSyntaxSWS
Spi_Initvoid Spi_Init(const Spi_ConfigType* ConfigPtr);SWS_Spi_00175
Spi_DeInitStd_ReturnType Spi_DeInit(void);SWS_Spi_00176
Spi_WriteIBStd_ReturnType Spi_WriteIB(Spi_ChannelType Channel, const Spi_DataBufferType* DataBufferPtr);SWS_Spi_00177
Spi_AsyncTransmitStd_ReturnType Spi_AsyncTransmit(Spi_SequenceType Sequence);SWS_Spi_00178
Spi_ReadIBStd_ReturnType Spi_ReadIB(Spi_ChannelType Channel, Spi_DataBufferType* DataBufferPointer);SWS_Spi_00179
Spi_SetupEBStd_ReturnType Spi_SetupEB(Spi_ChannelType Channel, const Spi_DataBufferType* SrcDataBufferPtr, Spi_DataBufferType* DesDataBufferPtr, Spi_NumberOfDataType Length);SWS_Spi_00180
Spi_GetStatusSpi_StatusType Spi_GetStatus(void);SWS_Spi_00181
Spi_GetJobResultSpi_JobResultType Spi_GetJobResult(Spi_JobType Job);SWS_Spi_00182
Spi_GetSequenceResultSpi_SeqResultType Spi_GetSequenceResult(Spi_SequenceType Sequence);SWS_Spi_00183
Spi_GetVersionInfovoid Spi_GetVersionInfo(Std_VersionInfoType* versioninfo);SWS_Spi_00184
Spi_SyncTransmitStd_ReturnType Spi_SyncTransmit(Spi_SequenceType Sequence);SWS_Spi_00185
Spi_GetHWUnitStatusSpi_StatusType Spi_GetHWUnitStatus(Spi_HWUnitType HWUnit);SWS_Spi_00186
Spi_Cancelvoid Spi_Cancel(Spi_SequenceType Sequence);SWS_Spi_00187
Spi_SetAsyncModeStd_ReturnType Spi_SetAsyncMode(Spi_AsyncModeType Mode);SWS_Spi_00188
Spi_MainFunction_Handlingvoid Spi_MainFunction_Handling(void);SWS_Spi_00189