AUTOSAR SWS CANDriver
AUTOSAR SWS CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Disclaimer
This work (specification and/or software implementation) and the material contained
in it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR
and the companies that have contributed to it shall not be liable for any use of the
work.
The material contained in this work is protected by copyright and other types of
intellectual property rights. The commercial exploitation of the material contained in
this work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the
work may be utilized or reproduced, in any form or by any means, without permission
in writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Table of Content
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
“If only a single transmit buffer is used inner priority inversion may occur. Because of
low priority a message stored in the buffer waits until the ”traffic on the bus calms
down”. During the waiting time this message could prevent a message of higher
priority generated by the same microcontroller from being transmitted over the bus.”1
1
Picture and text by CiA (CAN in Automation)
15 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
“The problem of outer priority inversion may occur in some CAN implementations. Let
us assume that a CAN node wishes to transmit a package of consecutive messages
with high priority, which are stored in different message buffers. If the interframe
space between these messages on the CAN network is longer than the minimum
space defined by the CAN standard, a second node is able to start the transmission
of a lower priority message. The minimum interframe space is determined by the
Intermission field, which consists of 3 recessive bits. A message, pending during the
transmission of another message, is started during the Bus Idle period, at the earliest
in the bit following the Intermission field. The exception is that a node with a waiting
transmission message will interpret a dominant bit at the third bit of Intermission as
Start-of-Frame bit and starts transmission with the first identifier bit without first
transmitting an SOF bit. The internal processing time of a CAN module has to be
short enough to send out consecutive messages with the minimum interframe space
to avoid the outer priority inversion under all the scenarios mentioned.” 2
2
Text and image by CiA (CAN in Automation)
16 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CAN Controller A
Tx A CAN
CAN
Transceiver Physical Channel A
Rx A Bus A
A
Message Object
Mailbox A
CAN Controller B
Tx B CAN
Transceiver CAN Physical Channel B
Rx B B Bus B
Message Object
Mailbox B
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
3 Related documentation
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[19] CiA601-2 Node and system design Part 2: CAN controller interface
specification
Thus, the specification SWS BSW General shall be considered as additional and
required specification for CAN Driver.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
4.1 Limitations
A CAN controller always corresponds to one physical channel. It is allowed to
connect physical channels on bus side. Regardless the CanIf module will treat the
concerned CAN controllers separately.
A few CAN hardware units support the possibility to combine several CAN controllers
by using the CAN RAM, to extend the number of message objects for one CAN
controller. These combined CAN controller are handled as one controller by the Can
module.
The Can module does not support CAN remote frames.
[SWS_Can_00236] ⌈ The Can module shall initialize the CAN HW to ignore any
remote transmission requests.⌋ (SRS_Can_01147)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00240] ⌈ The Mcu module (SPAL see [8]) shall configure register
settings that are ‘shared’ with other modules.⌋ ()
Implementation hint: The Mcu module shall be initialized before initializing the Can
module.
[SWS_Can_00242] ⌈ If an off-chip CAN controller is used3, the Can module shall use
services of other MCAL drivers (e.g. SPI).⌋ (SRS_BSW_00005)
Implementation hint: If the Can module uses services of other MCAL drivers (e.g.
SPI), it must be ensured that these drivers are up and running before initializing the
Can module.
The sequence of initialization of different drivers is partly specified in [7].
[SWS_Can_00244] ⌈ The Can module shall use the synchronous APIs of the
underlying MCAL drivers and shall not provide callback functions that can be called
by the MCAL drivers.⌋ ()
Thus the type of connection between µC and CAN Hardware Unit has only impact on
implementation and not on the API.
[SWS_Can_00281] ⌈ The Can module shall use the OsCounter provided by the
system service for timeout detection in case the hardware does not react in the
expected time (hardware malfunction) to prevent endless loops.⌋ ()
3
In this case the CAN driver is not any more part of the µC abstraction layer but put part of the ECU
abstraction layer. Therefore it is (theoretically) allowed to use any µC abstraction layer driver it needs.
21 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Implementation hint: The blocking time of the Can module function that is waiting for
hardware reaction shall be shorter than the CAN main function (i.e.
Can_MainFunction_Read) trigger period, because the CAN main functions can’t be
used for that purpose.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
6 Requirements traceability
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
SWS_Can_91007, SWS_Can_91017,
SWS_Can_91018
SRS_BSW_00325 The runtime of interrupt service SWS_Can_00999
routines and functions that are
running in interrupt context shall be
kept short
SRS_BSW_00330 It shall be allowed to use macros SWS_Can_00079
instead of functions where source
code is used and runtime is critical
SRS_BSW_00331 All Basic Software Modules shall SWS_Can_00039, SWS_Can_00104
strictly separate error and status
information
SRS_BSW_00336 Basic SW module shall be able to SWS_Can_00999, SWS_Can_91002
shutdown
SRS_BSW_00337 Classification of development errors SWS_Can_00026, SWS_Can_00104
SRS_BSW_00342 It shall be possible to create an SWS_Can_00999
AUTOSAR ECU out of modules
provided as source code and
modules provided as object code,
even mixed
SRS_BSW_00344 BSW Modules shall support link-time SWS_Can_00021
configuration
SRS_BSW_00347 A Naming seperation of different SWS_Can_00077
instances of BSW drivers shall be in
place
SRS_BSW_00353 All integer type definitions of target SWS_Can_00999
and compiler specific scope shall be
placed and organized in a single
type header
SRS_BSW_00357 For success/failure of an API call a SWS_Can_00506
standard return type shall be defined
SRS_BSW_00358 The return type of init() functions SWS_Can_00223
implemented by AUTOSAR Basic
Software Modules shall be void
SRS_BSW_00359 All AUTOSAR Basic Software SWS_Can_00999
Modules callback functions shall
avoid return types other than void if
possible
SRS_BSW_00361 All mappings of not standardized SWS_Can_00999
keywords of compiler specific scope
shall be placed and organized in a
compiler specific type and keyword
header
SRS_BSW_00369 All AUTOSAR Basic Software SWS_Can_00089, SWS_Can_00506,
Modules shall not return specific SWS_Can_91011, SWS_Can_91012
development error codes via the API
SRS_BSW_00373 The main processing function of SWS_Can_00031
each AUTOSAR Basic Software
Module shall be named according
the defined convention
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Std_ReturnType
SRS_BSW_00453 BSW Modules shall be harmonized SWS_Can_00999
SRS_Can_01005 The CAN Interface shall perform a SWS_Can_00218
check for correct DLC of received
PDUs
SRS_Can_01041 The CAN Driver shall implement an SWS_Can_00245, SWS_Can_00246
interface for initialization
SRS_Can_01042 The CAN Driver shall support SWS_Can_00062
dynamic selection of configuration
sets
SRS_Can_01043 The CAN Driver shall provide a SWS_Can_00049, SWS_Can_00050
service to enable/disable interrupts
of the CAN Controller.
SRS_Can_01045 The CAN Driver shall offer a SWS_Can_00279, SWS_Can_00396
reception indication service.
SRS_Can_01049 The CAN Driver shall provide a SWS_Can_00212, SWS_Can_00213,
dynamic transmission request SWS_Can_00214
service
SRS_Can_01051 The CAN Driver shall provide a SWS_Can_00016
transmission confirmation service
SRS_Can_01053 The CAN Driver shall provide a SWS_Can_00017, SWS_Can_91010
service to change the CAN controller
mode.
SRS_Can_01054 The CAN Driver shall provide a SWS_Can_00235, SWS_Can_00271,
notification for controller wake-up SWS_Can_00364
events
SRS_Can_01055 The CAN Driver shall provide a SWS_Can_00020, SWS_Can_00234
notification for bus-off state
SRS_Can_01059 The CAN Driver shall guarantee data SWS_Can_00011, SWS_Can_00012
consistency of received L-PDUs
SRS_Can_01060 The CAN driver shall not recover SWS_Can_00272, SWS_Can_00273,
from bus-off automatically SWS_Can_00274
SRS_Can_01062 Each event for each CAN Controller SWS_Can_00007
shall be configurable to be detected
by polling or by an interrupt
SRS_Can_01122 The CAN driver shall support the SWS_Can_00048
situation where a wakeup by bus
occurs during the same time the
transition to standby/sleep is in
progress
SRS_Can_01125 The CAN stack shall ensure not to SWS_Can_00999
lose messages in receive direction
SRS_Can_01126 The CAN stack shall be able to SWS_Can_00999
produce 100% bus load
SRS_Can_01130 Receive Status Interface of CAN SWS_Can_00506
Interface
SRS_Can_01132 The CAN driver shall be able to SWS_Can_00099
detect notification events message
object specific by CAN-Interrupt and
28 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
polling
SRS_Can_01134 The CAN Driver shall support SWS_Can_00277, SWS_Can_00401,
multiplexed transmission SWS_Can_00402, SWS_Can_00403
SRS_Can_01135 It shall be possible to configure one SWS_Can_00100
or several TX Hardware Objects
SRS_Can_01139 The CAN Interface and Driver shall SWS_Can_00062
offer a CAN Controller specific
interface for initialization
SRS_Can_01147 The CAN Driver shall not support SWS_Can_00236, SWS_Can_00237
remote frames
SRS_Can_01160 Padding of bytes due to discrete SWS_Can_00502
CAN FD DLC
SRS_Can_01162 The CAN Interface shall support SWS_Can_00501
classic CAN and CAN FD frames
SRS_Can_01166 The CAN Driver shall implement an noname, SWS_Can_91002,
interface for de-initialization SWS_Can_91010
SRS_CAN_01167 - SWS_Can_91008
SRS_Can_01170 The CAN Driver shall provide a SWS_Can_00515, SWS_Can_00520
function to return the current CAN
controller Rx and Tx error counters
SRS_SPAL_00157 All drivers and handlers of the SWS_Can_00026, SWS_Can_00031,
AUTOSAR Basic Software shall SWS_Can_00108, SWS_Can_00112
implement notification mechanisms
of drivers and handlers
SRS_SPAL_12056 All driver modules shall allow the SWS_Can_00235
static configuration of notification
mechanism
SRS_SPAL_12057 All driver modules shall implement SWS_Can_00245, SWS_Can_00246
an interface for initialization
SRS_SPAL_12063 All driver modules shall only support SWS_Can_00059, SWS_Can_00060
raw value mode
SRS_SPAL_12064 All driver modules shall raise an SWS_Can_00999
error if the change of the operation
mode leads to degradation of
running operations
SRS_SPAL_12067 All driver modules shall set their SWS_Can_00257
wake-up conditions depending on
the selected operation mode
SRS_SPAL_12068 The modules of the MCAL shall be SWS_Can_00999
initialized in a defined sequence
SRS_SPAL_12069 All drivers of the SPAL that wake up SWS_Can_00271, SWS_Can_00364
from a wake-up interrupt shall report
the wake-up reason
SRS_SPAL_12075 All drivers with random streaming SWS_Can_00011
capabilities shall use application
buffers
SRS_SPAL_12077 All drivers shall provide a non SWS_Can_00372
blocking implementation
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
7 Functional specification
On L-PDU transmission, the Can module writes the L-PDU in an appropriate buffer
inside the CAN controller hardware.
See chapter 7.5 for closer description of L-PDU transmission.
On L-PDU reception, the Can module calls the RX indication callback function with
ID, Data Length and pointer to L-SDU as parameter.
See chapter 7.6 for closer description of L-PDU reception.
The Can module provides an interface that serves as periodical processing function,
and which must be called by the Basic Software Scheduler module periodically.
Furthermore, the Can module provides services to control the state of the CAN
controllers. Bus-off and Wake-up events are notified by means of callback functions.
The Can module is a Basic Software Module that accesses hardware resources.
Therefore, it is designed to fulfill the requirements for Basic Software Modules
specified in AUTOSAR_SRS_SPAL (see [3]).
[SWS_Can_00033] ⌈ The Can module shall implement the interrupt service routines
for all CAN Hardware Unit interrupts that are needed. ⌋ (SRS_BSW_00164,
SRS_SPAL_12129)
[SWS_Can_00419] ⌈ The Can module shall disable all unused interrupts in the CAN
controller.⌋ ()
[SWS_Can_00420] ⌈ The Can module shall reset the interrupt flag at the end of the
ISR (if not done automatically by hardware). ⌋ ()
Implementation hint: The Can module shall not set the configuration (i.e. priority) of
the vector table entry.
[SWS_Can_00079] ⌈ The Can module shall fulfill all design and implementation
guidelines described in [2].⌋ (SRS_BSW_00007, SRS_BSW_00306,
SRS_BSW_00308, SRS_BSW_00309, SRS_BSW_00330)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CAN_UNINIT
Initial
Can_Init() Can_DeInit()
CAN_READY
Figure 7-1
[SWS_Can_00246] ⌈ The function Can_Init shall change the module state to
CAN_READY, after initializing all controllers inside the HW Unit.⌋
(SRS_SPAL_12057, SRS_Can_01041)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_ 91009] ⌈ The function Can_DeInit shall change the module state to
CAN_UNINIT before de-initializing all controllers inside the HW unit⌋
(SRS_Can_01166)
Refer to [SWS_Can_91010].
These events are indicated either by an interrupt or by a status bit that is polled in the
Can_MainFunction_BusOff or Can_MainFunction_Wakeup.
The Can module does the register settings that are necessary to fulfill the required
behavior (i.e. no hardware recovery in case of bus off).
Then it notifies the CanIf module with the corresponding callback function. The
software state is then changed inside this callback function.
In case development errors are enabled and there is a not allowed transition
requested by the upper layer, the Can module shall rise the development error
CAN_E_TRANSITION.
The Can module does not check the actual state before it performs Can_Write or
raises callbacks.
This chapter describes the required hardware behavior for the different controller
states.
The CAN controller is not initialized. All registers belonging to the CAN module are in
reset state, CAN interrupts are disabled. The CAN Controller is not participating on
the CAN bus.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
In this state the CAN Controller is initialized but does not participate on the bus. In
addition, error frames and acknowledges must not be sent.
(Example: For many controllers entering an ‘initialization’-mode causes the controller
to be stopped.)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
The hardware settings only differ from state STOPPED for CAN hardware that
support a sleep mode (wake-up over CAN bus directly supported by CAN hardware).
[SWS_Can_00257] ⌈ When the CAN hardware supports sleep mode and is triggered
to transition into SLEEP state, the Can module shall set the controller to the SLEEP
state from which the hardware can be woken over CAN Bus.⌋ (SRS_SPAL_12067)
[SWS_Can_00258] ⌈ When the CAN hardware does not support sleep mode and is
triggered to transition into SLEEP state, the Can module shall emulate a logical
SLEEP state from which it returns only, when it is triggered by software to transition
into STOPPED state.⌋ ()
[SWS_Can_00404] ⌈ The CAN hardware shall remain in state STOPPED, while the
logical SLEEP state is active.⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
PowerOff
PowerON reset
UNINIT
Can_DeInit()
Can_DeInit()
STOPPED SLEEP
STARTED
Figure 7-2
[SWS_Can_00259] ⌈ The function Can_Init shall set all CAN controllers in the state
STOPPED.⌋ ()
When the function Can_Init is entered and the Can module is not in state
CAN_UNINIT or the CAN controllers are not in state UNINIT, it shall raise the error
CAN_E_TRANSITION (Compare to SWS_Can_00174 and SWS_Can_00408).
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
The software can trigger a CAN controller state transition with the function
Can_SetControllerMode. Depending on the CAN hardware, a change of a register
setting to transition to a new CAN controller state may take over only after a delay.
The Can module notifies the upper layer (CanIf_ControllerModeIndication) after a
successful state transition about the new state. The monitoring whether the
requested state is achieved is part of an upper layer module and is not part of the
Can module.
[SWS_Can_00372] ⌈ In case the flag signals that the change takes no effect and the
maximum time CanTimeoutDuration is elapsed, the function
Can_SetControllerMode shall be left and the function Can_Mainfunction_Mode shall
continue to poll the flag.⌋ (SRS_SPAL_12077)
[SWS_Can_00373] ⌈ The function Can_Mainfunction_Mode shall call the function
CanIf_ControllerModeIndication to notify the upper layer about a successful state
transition of the corresponding CAN controller referred by abstract CanIf ControllerId,
in case the state transition was triggered by function Can_SetControllerMode.⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
STOPPED STARTED
software triggered
STARTED STOPPED
SLEEP STOPPED
software triggered
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
STOPPED SLEEP
software triggered
[SWS_Can_00290] ⌈ If the CAN HW does not support a sleep mode, the function
Can_SetControllerMode(CAN_CS_SLEEP) shall set the CAN controller to the logical
sleep mode.⌋ ()
This state transition will only occur when sleep mode is supported by hardware.
[SWS_Can_00269] ⌈ The Can module shall not further process the L-PDU that
caused a wake-up.⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00272] ⌈ After bus-off detection, the CAN controller shall transition to the
state STOPPED and the Can module shall ensure that the CAN controller doesn’t
participate on the network anymore. ⌋ (SRS_Can_01060)
[SWS_Can_00273] ⌈ After bus-off detection, the Can module shall cancel still
pending messages. ⌋ (SRS_Can_01060)
- STOPPED -> UNINIT; SLEEP -> UNINIT (for all controllers in HW unit)
- software triggered by the function call Can_DeInit
- prepares all CAN controllers inside HW Unit to be re-configured
[SWS_Can_91010] ⌈ The function Can_DeInit shall set all CAN controllers in the
state UNINIT⌋ (SRS_Can_01166, SRS_Can_01053)
When the function Can_DeInit is entered and the Can module is not in state
CAN_READY or any of the CAN controllers is in state STARTED, it shall raise the
error CAN_E_TRANSITION (Refer to [SWS_Can_91011] and [SWS_Can_91012]).
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00427] ⌈ If the presentation inside the CAN Hardware buffer differs from
AUTOSAR definition, the Can module must provide an adapted SDU-Buffer for the
upper layers.⌋ ()
Figure 7-3: Example of assignment of HTHs and HRHs to the Hardware Objects. The numbering
of HTHs and HRHs are implementation specific. The chosen numbering is only an example.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00277] ⌈ The Can module shall allow that the functionality “Multiplexed
Transmission” is statically configurable (ON | OFF) at pre-compile time.⌋
(SRS_Can_01134)
Figure 7-4: Example of assignment of HTHs and HRHs to the Hardware Objects with
multiplexed transmission. The numbering of HTHs and HRHs are implementation specific. The
chosen numbering is only an example.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00011] ⌈ The Can module shall directly copy the data from the upper
layer buffers. It is the responsibility of the upper layer to keep the buffer consistent
until return of function call (Can_Write).⌋ (SRS_SPAL_12075, SRS_Can_01059)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Figure 7-5: Example of assignment of same HRHs to multiple Hardware Objects The chosen
numbering is only an example.
[SWS_Can_00299] ⌈ The Can module shall copy the L-SDU in a shadow buffer after
reception, if the RX buffer cannot be protected (locked) by CAN Hardware against
overwriting by a newly received message.⌋ ()
[SWS_Can_00300] ⌈ The Can module shall copy the L-SDU in a shadow buffer, if
the CAN Hardware is not globally accessible.⌋ ()
The complete RX processing (including copying to destination layer, e.g. COM) is
done in the context of the RX interrupt or in the context of the
Can_MainFunction_Read.
[SWS_Can_00012] ⌈ The Can module shall guarantee that neither the ISRs nor the
function Can_MainFunction_Read can be interrupted by itself. The CAN hardware (or
shadow) buffer is always consistent, because it is written and read in sequence in
exactly one function that is never interrupted by itself.⌋ (SRS_Can_01059)
If the CAN hardware cannot be configured to lock the RX hardware object after
reception (hardware feature), it could happen that the hardware buffer is overwritten
by a newly arrived message. In this case, the CAN controller detects an “overwrite”
event, if supported by hardware.
If the CAN hardware can be configured to lock the RX hardware object after
reception, it could happen that the newly arrived message cannot be stored to the
hardware buffer. In this case, the CAN controller detects an “overrun” event, if
supported by hardware.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
The ECU State Manager will then set up the MCU and call the Can module back via
the Can Interface, resulting in a call to Can_CheckWakeup.
When wakeup events are detected by polling, the ECU State Manager will cyclically
call Can_CheckWakeup via the Can Interface as before. In both cases,
Can_CheckWakeup will check if there was a wakeup detected by a Can controller
and return the result. The CAN driver will then inform the ECU State Manager of the
wakeup event via EcuM_SetWakeupEvent.
The wakeup validation to prevent false wakeup events, will be done by the ECU
State Manager and the Can Interface afterwards and without any help from the Can
module.
For a general description of the wakeup mechanisms and wakeup sequence
diagrams refer to Specification of ECU State Manager [7].
The configuration of what is and is not polled by the Can module is internal to the
driver, and not visible outside the module. The polling is done inside the CAN main
functions (Can_MainFunction_xxx). Also the polled events are notified by the
appropriate callback function. Then the call context is not the ISR but the CAN main
function. The implementation of all callback functions shall be done as if the call
context was the ISR.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
For further details see also description of the CAN main functions
Can_MainFunction_Read, Can_MainFunction_Write, Can_MainFunction_BusOff and
Can_MainFunction_Wakeup.
Transmit requests are simply forwarded by the CanIf module inside the function
CanIf_Transmit.
The function CanIf_Transmit is re-entrant. Therefore the function Can_Write needs to
be implemented thread-safe (for example by using mutexes):
Further (preemptive) calls will return with CAN_BUSY when the write can’t be
performed re-entrant. (example: write to different hardware TX Handles allowed,
write to same TX Handles not allowed)
In case of CAN_BUSY the CanIf module queues that request. (same behavior as if
all hardware objects are busy).
Can_EnableCanInterrupts and Can_DisableCanInterrupts may be called inside re-
entrant functions. Therefore these functions also need to be reentrant.
All other services don’t need to be implemented as reentrant functions.
The CAN main functions (i.e. Can_MainFunction_Read) shall not be interrupted by
themselves. Therefore these CAN main functions are not reentrant.
(a) ICOM Software implementation: (b) ICOM is a functional hardware (c) ICOM is a separate hardware
ICOM features are exclusively extension of the existing component with its own Communication
implemented in software, reusing Communication Controller Controller
48 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
The use of Intelligent Communication Controllers (ICOM) supports those features (no
specific hardware implementation mandatory). If some or all of the functionality of an
ECU is temporarily not required, e.g., based on the vehicle state, the ECU can enter
a “Pretended Networking” mode. In this mode, the MCU and/or peripherals are
switched into a low-power mode. Only the ICOM and the connected transceivers stay
active. The ICOM generates a wakeup event, caused by, e.g. a received bus
message, when the ECU needs to resume operation.
Depending on the ICOM implementation, message ID and payload of received
messages may either be evaluated and filtered completely in hardware, require a
callback mechanism in software. As shown in Figure 7-6, the ECU implementation
can be divided into three possible variants – Approach (a) software approach, without
specific hardware to support Pretended Networking. Approach (b) depicts a
functional hardware extension of a communication controller and approach (c) shows
a hardware variant with a 2nd extended communication controller for wakeup
handling. All variants and ICOM implementations shall be supported by Pretended
Networking.
Furthermore, Pretended Networking aims at reducing wakeup response time, i.e., the
time between a wakeup event and valid behavior of an ECU. By using the ICOM to
save relevant messages during activated Pretended Networking mode, the
application has access to the last valid signal values directly after resuming
operation. Therefore, the ECU can immediately respond to a user request after
wakeup and does not have to wait until the according message is received again.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00026] ⌈ The Can module shall indicate errors that are caused by
erroneous usage of the Can module API. This covers API parameter checks and call
sequence errors. ⌋ (SRS_BSW_00337, SRS_BSW_00323, SRS_SPAL_00157)
[SWS_Can_00091] ⌈ After return of the DET the Can module’s function that raised
the development error shall return immediately.⌋ (SRS_SPAL_12448)
[SWS_Can_00089] ⌈ The Can module’s environment shall indicate development
errors only in the return values of a function of the Can module when DET is
switched on and the function provides a return value. The returned value is
E_NOT_OK. ⌋ (SRS_BSW_00369, SRS_BSW_00386, SRS_SPAL_12448)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
The Can module does not call the Diagnostic Event Manager, because there is no
production error code defined for the Can module.
CAN_BUSY is reported via return value of the function Can_Write. The CanIf module
reacts according the sequence diagrams specified for the CanIf module.E_NOT_OK
is reported via return value in case of a wakeup during transition to sleep mode.Bus-
off and Wake-up events are forwarded via notification callback functions.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8 API specification
The prefix of the function names may be changed in an implementation with several
Can modules as described in [SWS_Can_00284].
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.2.1 Can_ConfigType
[SWS_Can_00413] ⌈
Name: Can_ConfigType
Type: Structure
Range: Implementation specific.
Description: This is the type of the external data structure containing the overall initialization
data for the CAN driver and SFR settings affecting all controllers. Furthermore it
contains pointers to controller configuration structures. The contents of the
initialization data structure are CAN hardware specific.
Available via: Can.h
⌋ ()
8.2.2 Can_PduType
[SWS_Can_00415] ⌈
Name: Can_PduType
Type: Structure
Element: PduIdType swPduHandle --
uint8 length --
Can_IdType id --
uint8* sdu --
Description: This type unites PduId (swPduHandle), SduLength (length), SduData (sdu), and
CanId (id) for any CAN L-SDU.
Available via: Can_GeneralTypes.h
⌋ ()
8.2.3 Can_IdType
[SWS_Can_00416] ⌈
Name: Can_IdType
Type: uint32
Range: Standard32Bit -- 0..0x400007FF
Extended32Bit -- 0..0xDFFFFFFF
Description: Represents the Identifier of an L-PDU. The two most significant bits specify the
frame type:
00 CAN message with Standard CAN ID
01 CAN FD frame with Standard CAN ID
10 CAN message with Extended CAN ID
11 CAN FD frame with Extended CAN ID
Available via: Can_GeneralTypes.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.2.4 Can_HwHandleType
[SWS_Can_00429] ⌈
Name: Can_HwHandleType
Type: uint8, uint16
Range: Standard -- 0..0x0FF
Extended -- 0..0xFFFF
Description: Represents the hardware object handles of a CAN hardware unit. For CAN
hardware units with more than 255 HW objects use extended range.
Available via: Can_GeneralTypes.h
⌋ ()
8.2.5 Can_HwType
[SWS_CAN_00496] ⌈
Name: Can_HwType
Type: Structure
Element: Can_IdType CanId Standard/Extended CAN ID of CAN L-
PDU
Can_HwHandleType Hoh ID of the corresponding Hardware
Object Range
uint8 ControllerId ControllerId provided by CanIf clearly
identify the corresponding controller
Description: This type defines a data structure which clearly provides an Hardware Object
Handle including its corresponding CAN Controller and therefore CanDrv as well
as the specific CanId.
Available via: Can_GeneralTypes.h
⌋ ()
[SWS_Can_00039] ⌈
Range: CAN_BUSY 0x02 transmit request could not be processed because no
transmit object was available
Description: Overlayed return value of Std_ReturnType for CAN driver API Can_Write()
Available via: Can_GeneralTypes.h
⌋ (SRS_BSW_00331)
8.2.7 Can_ErrorStateType
[SWS_Can_91003] ⌈
Name: Can_ErrorStateType
Type: Enumeration
Range: CAN_ERRORSTATE_ACTIVE -- The CAN controller takes fully part in communication.
CAN_ERRORSTATE_PASSIVE -- The CAN controller takes part in communication, but
does not send active error frames.
CAN_ERRORSTATE_BUSOFF -- The CAN controller does not take part in
communication.
55 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.2.8 Can_ControllerStateType
[SWS_Can_91013] ⌈
Name: Can_ControllerStateType
Type: Enumeration
Range: CAN_CS_UNINIT 0x00 CAN controller state UNINIT.
CAN_CS_STARTED 0x01 CAN controller state STARTED.
CAN_CS_STOPPED 0x02 CAN controller state STOPPED.
CAN_CS_SLEEP 0x03 CAN controller state SLEEP.
Description: States that are used by the several ControllerMode functions.
Available via: Can_GeneralTypes.h
⌋ ()
8.3.1.1 Can_Init
[SWS_Can_00223] ⌈
Service name: Can_Init
Syntax: void Can_Init(
const Can_ConfigType* Config
)
Service ID[hex]: 0x00
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): Config Pointer to driver configuration.
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: This function initializes the module.
Available via: Can.h
⌋ (SRS_BSW_00358, SRS_BSW_00414)
Symbolic names of the available configuration sets are provided by the configuration
description of the Can module. See chapter 10 about configuration description.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.3.1.2 Can_GetVersionInfo
[SWS_Can_00224] ⌈
Service name: Can_GetVersionInfo
Syntax: void Can_GetVersionInfo(
Std_VersionInfoType* versioninfo
)
Service ID[hex]: 0x07
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): None
Parameters None
(inout):
Parameters (out): versioninfo Pointer to where to store the version information of this module.
Return value: None
Description: This function returns the version information of this module.
Available via: Can.h
⌋ ()
8.3.1.3 Can_DeInit
[SWS_Can_91002] ⌈
Service name: Can_DeInit
Syntax: void Can_DeInit(
void
)
Service ID[hex]: 0x10
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): None
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: This function de-initializes the module.
Available via: Can.h
⌋ (SRS_Can_01166, SRS_BSW_00336)
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Caveat: Caller of the Can_DeInit function has to be sure no CAN controller is in the
state STARTED
8.3.2.1 Can_SetBaudrate
[SWS_CAN_00491] ⌈
Service name: Can_SetBaudrate
Syntax: Std_ReturnType Can_SetBaudrate(
uint8 Controller,
uint16 BaudRateConfigID
)
Service ID[hex]: 0x0f
Sync/Async: Synchronous
Reentrancy: Reentrant for different Controllers. Non reentrant for the same Controller.
Controller CAN controller, whose baud rate shall be set
Parameters (in): BaudRateConfigID references a baud rate configuration by ID (see
CanControllerBaudRateConfigID)
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Service request accepted, setting of (new) baud rate
Return value: started
E_NOT_OK: Service request not accepted
Description: This service shall set the baud rate configuration of the CAN controller. Depending
on necessary baud rate modifications the controller might have to reset.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00500] ⌈ If the requested baud rate change can not performed without a
re-initialization of the CAN Controller E_NO_OK shall be returned.⌋ ()
8.3.2.2 Can_SetControllerMode
[SWS_Can_00230] ⌈
Service name: Can_SetControllerMode
Syntax: Std_ReturnType Can_SetControllerMode(
uint8 Controller,
Can_ControllerStateType Transition
)
Service ID[hex]: 0x03
Sync/Async: Asynchronous
Reentrancy: Non Reentrant
Controller CAN controller for which the status shall be changed
Parameters (in):
Transition Transition value to request new CAN controller state
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: request accepted
Return value:
E_NOT_OK: request not accepted, a development error
occurred
Description: This function performs software triggered state transitions of the CAN controller
State machine.
Available via: Can.h
⌋ ()
[SWS_Can_00384] ⌈ Each time the CAN controller state machine is triggered with
the state transition value CAN_CS_STARTED, the function Can_SetControllerMode
59 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
shall re-initialize the CAN controller with the same controller configuration set
previously used by functions Can_SetBaudrate or Can_Init.⌋ ()
Refer to SWS_Can_00048 for the case of a wakeup event from CAN bus occurred
during sleep transition.
8.3.2.3 Can_DisableControllerInterrupts
[SWS_Can_00231] ⌈
Service name: Can_DisableControllerInterrupts
Syntax: void Can_DisableControllerInterrupts(
uint8 Controller
)
Service ID[hex]: 0x04
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): Controller CAN controller for which interrupts shall be disabled.
Parameters None
(inout):
Parameters (out): None
60 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
⌋ (SRS_BSW_00312)
[SWS_Can_00204] ⌈ The Can module shall track all individual enabling and disabling
of interrupts in other functions (i.e. Can_SetControllerMode) , so that the correct
interrupt enable state can be restored.⌋ ()
Implementation example:
• in ‘interrupts enabled mode’: For each interrupt state change does not only
modify the interrupt enable bit, but also a software flag.
• in ‘interrupts disabled mode’: only the software flag is modified.
• Can_DisableControllerInterrupts and Can_EnableControllerInterrupts do not
modify the software flags.
• Can_EnableControllerInterrupts reads the software flags to re-enable the
correct interrupts.
8.3.2.4 Can_EnableControllerInterrupts
[SWS_Can_00232] ⌈
Service name: Can_EnableControllerInterrupts
Syntax: void Can_EnableControllerInterrupts(
uint8 Controller
)
Service ID[hex]: 0x05
Sync/Async: Synchronous
Reentrancy: Reentrant
61 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Parameters (in): Controller CAN controller for which interrupts shall be re-enabled
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: This function enables all allowed interrupts.
Available via: Can.h
⌋ (SRS_BSW_00312)
8.3.2.5 Can_CheckWakeup
[SWS_Can_00360] ⌈
Service name: Can_CheckWakeup
Syntax: Std_ReturnType Can_CheckWakeup(
uint8 Controller
)
Service ID[hex]: 0x0b
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): Controller Controller to be checked for a wakeup.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: API call has been accepted
Return value:
E_NOT_OK: API call has not been accepted
Description: This function checks if a wakeup has occurred for the given controller.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.3.2.6 Can_GetControllerErrorState
[SWS_Can_91004] ⌈
Service name: Can_GetControllerErrorState
Syntax: Std_ReturnType Can_GetControllerErrorState(
uint8 ControllerId,
Can_ErrorStateType* ErrorStatePtr
)
Service ID[hex]: 0x11
Sync/Async: Synchronous
Reentrancy: Non Reentrant for the same ControllerId
ControllerId Abstracted CanIf ControllerId which is assigned to a CAN
Parameters (in):
controller, which is requested for ErrorState.
Parameters None
(inout):
ErrorStatePtr Pointer to a memory location, where the error state of the CAN
Parameters (out):
controller will be stored.
Std_ReturnType E_OK: Error state request has been accepted.
Return value:
E_NOT_OK: Error state request has not been accepted.
Description: This service obtains the error state of the CAN controller.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.3.2.7 Can_GetControllerMode
[SWS_Can_91014] ⌈
Service name: Can_GetControllerMode
Syntax: Std_ReturnType Can_GetControllerMode(
uint8 Controller,
Can_ControllerStateType* ControllerModePtr
)
Service ID[hex]: 0x12
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): Controller CAN controller for which the status shall be requested.
Parameters None
(inout):
ControllerModePtr Pointer to a memory location, where the current
Parameters (out):
mode of the CAN controller will be stored.
Std_ReturnType E_OK: Controller mode request has been accepted.
Return value: E_NOT_OK: Controller mode request has not been
accepted.
Description: This service reports about the current status of the requested CAN controller.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.3.2.8 Can_GetControllerRxErrorCounter
[SWS_Can_00511] ⌈
Service name: Can_GetControllerRxErrorCounter
Syntax: Std_ReturnType Can_GetControllerRxErrorCounter(
uint8 ControllerId,
uint8* RxErrorCounterPtr
)
Service ID[hex]: 0x30
Sync/Async: Synchronous
Reentrancy: Non Reentrant for the same ControllerId
ControllerId CAN controller, whose current Rx error counter shall be
Parameters (in):
acquired.
Parameters None
(inout):
RxErrorCounterPtr Pointer to a memory location, where the current Rx error
Parameters (out):
counter of the CAN controller will be stored.
Std_ReturnType E_OK: Rx error counter available.
Return value: E_NOT_OK: Wrong ControllerId, or Rx error counter not
available.
Description: Returns the Rx error counter for a CAN controller. This value might not be
available for all CAN controllers, in which case E_NOT_OK would be returned.
Please note that the value of the counter might not be correct at the moment the
API returns it, because the Rx counter is handled asynchronously in hardware.
Applications should not trust this value for any assumption about the current bus
state.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
register of Can Controller and shall return the Rx error count to upper layer.⌋
(SRS_Can_01170)
8.3.2.9 Can_GetControllerTxErrorCounter
[SWS_Can_00516] ⌈
Service name: Can_GetControllerTxErrorCounter
Syntax: Std_ReturnType Can_GetControllerTxErrorCounter(
uint8 ControllerId,
uint8* TxErrorCounterPtr
)
Service ID[hex]: 0x31
Sync/Async: Synchronous
Reentrancy: Non Reentrant for the same ControllerId
ControllerId CAN controller, whose current Tx error counter shall be
Parameters (in):
acquired.
Parameters None
(inout):
TxErrorCounterPtr Pointer to a memory location, where the current Tx error
Parameters (out):
counter of the CAN controller will be stored.
Std_ReturnType E_OK: Tx error counter available.
Return value: E_NOT_OK: Wrong ControllerId, or Tx error counter not
available.
Description: Returns the Tx error counter for a CAN controller. This value might not be
available for all CAN controllers, in which case E_NOT_OK would be returned.
Please note that the value of the counter might not be correct at the moment the
API returns it, because the Tx counter is handled asynchronously in hardware.
Applications should not trust this value for any assumption about the current bus
state.
Available via: Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
register of Can Controller and shall return the Tx error count to upper layer. ⌋
(SRS_Can_01170)
8.3.3.1 Can_Write
[SWS_Can_00233] ⌈
Service name: Can_Write
Syntax: Std_ReturnType Can_Write(
Can_HwHandleType Hth,
const Can_PduType* PduInfo
)
Service ID[hex]: 0x06
Sync/Async: Synchronous
Reentrancy: Reentrant (thread-safe)
Hth information which HW-transmit handle shall be used for transmit.
Implicitly this is also the information about the controller to use
Parameters (in): because the Hth numbers are unique inside one hardware unit.
PduInfo Pointer to SDU user memory, Data Length and Identifier.
Parameters None
(inout):
Parameters (out): None
Std_ReturnType E_OK: Write command has been accepted
⌋ (SRS_BSW_00312)
The function Can_Write first checks if the hardware transmit object that is identified
by the HTH is free and if another Can_Write is ongoing for the same HTH.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00504] ⌈ If the trigger transmit API is enabled for the hardware object,
Can_Write() shall interpret a null pointer as SDU (Can_PduType.Can_SduPtrType =
NULL) as request for using the trigger transmit interface. If so and the hardware
object is free, Can_Write() shall call CanIf_TriggerTransmit() with the maximum size
of the message buffer to acquire the PDU’s data.⌋ ()
Note: Using the message buffer size allows for late changes of the PDU size, e.g. if a
container PDU receives another contained PDU between the call to Can_Write() and
the call of CanIf_TriggerTransmit().
68 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
[SWS_Can_00486] ⌈ The CAN Frame has to be sent according to the two most
significant bits of Can_PduType->id. The CAN FD frame bit is only evaluated if
CAN Controller is in CAN FD mode (valid CanControllerFdBaudrateConfig).⌋ ()
The Can module does not provide callback functions. Only synchronous MCAL API
may used to access external CAN controllers.
The AUTOSAR CAN module supports optional L-PDU callouts on every reception of a
L-PDU.
[SWS_Can_00443] ⌈
Service name: <LPDU_CalloutName>
Syntax: boolean <LPDU_CalloutName>(
uint8 Hrh,
Can_IdType CanId,
uint8 CanDataLegth,
const uint8* CanSduPtr
)
Service ID[hex]: 0x20
Sync/Async: Asynchronous
Reentrancy: Non Reentrant
Hrh --
CanId --
Parameters (in):
CanDataLegth --
CanSduPtr --
Parameters None
69 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
(inout):
Parameters (out): None
Return value: boolean --
Description: --
Available via: Can_Externals.h
⌋ ()
where <LPDU_CalloutName> has to be substituted with the concrete L-PDU callout
name which is configurable, see ECUC_Can_00434.
[SWS_Can_00444] ⌈ If the L-PDU callout returns false, the L-PDU shall not be
processed any further. ⌋ ()
[SWS_Can_00445] ⌈ Can driver shall use the following APIs provided by Icu driver,
to enable and disable the wakeup event notification:
Icu_EnableNotification
Icu_DisableNotification⌋ ()
8.5.1.1 Can_MainFunction_Write
[SWS_Can_00225] ⌈
Service name: Can_MainFunction_Write
Syntax: void Can_MainFunction_Write(
void
)
Service ID[hex]: 0x01
Description: This function performs the polling of TX confirmation when
CAN_TX_PROCESSING is set to POLLING.
Available via: SchM_Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.5.1.2 Can_MainFunction_Read
[SWS_Can_00226] ⌈
Service name: Can_MainFunction_Read
Syntax: void Can_MainFunction_Read(
void
)
Service ID[hex]: 0x08
Description: This function performs the polling of RX indications when
CAN_RX_PROCESSING is set to POLLING.
Available via: SchM_Can.h
⌋ ()
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
8.5.1.3 Can_MainFunction_BusOff
[SWS_Can_00227] ⌈
Service name: Can_MainFunction_BusOff
Syntax: void Can_MainFunction_BusOff(
void
)
Service ID[hex]: 0x09
Description: This function performs the polling of bus-off events that are configured statically as
'to be polled'.
Available via: SchM_Can.h
⌋ ()
8.5.1.4 Can_MainFunction_Wakeup
[SWS_Can_00228] ⌈
Service name: Can_MainFunction_Wakeup
Syntax: void Can_MainFunction_Wakeup(
void
)
Service ID[hex]: 0x0a
Description: This function performs the polling of wake-up events that are configured statically
as 'to be polled'.
Available via: SchM_Can.h
⌋ ()
8.5.1.5 Can_MainFunction_Mode
[SWS_Can_00368] ⌈
Service name: Can_MainFunction_Mode
Syntax: void Can_MainFunction_Mode(
void
)
Service ID[hex]: 0x0c
Description: This function performs the polling of CAN controller mode transitions.
Available via: SchM_Can.h
72 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
⌋ ()
This chapter defines all interfaces which are required to fulfill the core functionality of
the module. All callback functions that are called by the Can module are implemented
in the CanIf module. These callback functions are not configurable.
[SWS_Can_00234] ⌈
API function Header File Description
CanIf_ControllerBusOff CanIf_Can.h This service indicates a Controller BusOff event referring
to the corresponding CAN Controller with the abstract
CanIf ControllerId.
CanIf_ControllerModeIndication CanIf_Can.h This service indicates a controller state transition referring
to the corresponding CAN controller with the abstract
CanIf ControllerId.
CanIf_RxIndication CanIf_Can.h This service indicates a successful reception of a received
CAN Rx L-PDU to the CanIf after passing all filters and
validation checks.
CanIf_TxConfirmation CanIf_Can.h This service confirms a previously successfully processed
transmission of a CAN TxPDU.
Det_ReportRuntimeError Det.h Service to report runtime errors. If a callout has been
configured then this callout shall be called.
GetCounterValue Os.h This service reads the current count value of a counter
(returning either the hardware timer ticks if counter is
driven by hardware or the software ticks when user drives
counter).
⌋ (SRS_Can_01055)
This chapter defines all interfaces that are required to fulfill an optional functionality of
the module.
[SWS_Can_00235] ⌈
API function Header File Description
CanIf_CurrentIcomConfiguration CanIf_Can.h This service shall inform about the change of the
Icom Configuration of a CAN controller using the
abstract CanIf ControllerId.
CanIf_TriggerTransmit CanIf.h Within this API, the upper layer module (called
module) shall check whether the available data fits
73 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
There is no configurable target for the Can module. The Can module always reports
to CanIf module.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
9 Sequence diagrams
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
10 Configuration specification
This chapter defines configuration parameters and their clustering into containers. In
order to support the specification Chapter 10.1 describes fundamentals. It also
specifies a template (table) you shall use for the parameter specification. We intend
to leave Chapter 10.1 in the specification to guarantee comprehension.
Chapter 10.2 specifies the structure (containers) and the parameters of the Can
module.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Can: EcucModuleDef
upperMultiplicity = *
lowerMultiplicity = 0
+container
CanConfigSet: EcucParamConfContainerDef
+container +subContainer
+subContainer
CanGeneral: CanHardwareObject:
EcucParamConfContainerDef CanController: CanControllerRef:
+destination +reference EcucParamConfContainerDef
EcucParamConfContainerDef
EcucReferenceDef
upperMultiplicity = 1 upperMultiplicity = *
lowerMultiplicity = 1 upperMultiplicity = *
lowerMultiplicity = 1
lowerMultiplicity = 1
+subContainer +subContainer
CanControllerBaudrateConfig: CanIcom:
EcucParamConfContainerDef EcucParamConfContainerDef
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 1 upperMultiplicity = 1
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanConfigSet: EcucParamConfContainerDef
Can: EcucModuleDef +container
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
CanControllerId: CanController:
EcucIntegerParamDef EcucParamConfContainerDef
+parameter CanWakeupSourceRef: EcuMWakeupSource:
upperMultiplicity = 1 +reference EcucReferenceDef +destination EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1 lowerMultiplicity = 1 lowerMultiplicity = 0 lowerMultiplicity = 1
symbolicNameValue = true
upperMultiplicity = 1 upperMultiplicity = 32
min = 0
requiresSymbolicNameValue = true
max = 255
CanControllerBaudrateConfig:
CanControllerBaseAddress:
+subContainer EcucParamConfContainerDef
EcucIntegerParamDef +parameter
upperMultiplicity = *
min = 0
lowerMultiplicity = 1
max = 4294967295
+destination
CanWakeupSupport: +parameter
EcucBooleanParamDef CanControllerDefaultBaudrate:
+reference
EcucReferenceDef
CanWakeupFunctionalityAPI:
+parameter
EcucBooleanParamDef MIXED:
+literal EcucEnumerationLiteralDef
defaultValue = false
+parameter CanTxProcessing:
EcucEnumerationParamDef +literal
+literal
+parameter CanRxProcessing:
EcucEnumerationParamDef INTERRUPT:
+literal EcucEnumerationLiteralDef
+literal
CanBusoffProcessing:
+parameter +literal
EcucEnumerationParamDef
+literal
POLLING:
+literal EcucEnumerationLiteralDef
+literal
+parameter CanWakeupProcessing:
EcucEnumerationParamDef
+literal
CanControllerEcucPartitionRef: EcucPartition:
+reference +destination
EcucReferenceDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = *
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanControllerBaudrateConfig:
CanControllerBaudRate:
EcucParamConfContainerDef
+parameter EcucFloatParamDef
upperMultiplicity = *
min = 0
lowerMultiplicity = 1
max = 2000
CanControllerPropSeg:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSeg1:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSeg2:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSyncJumpWidth:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerBaudRateConfigID:
EcucIntegerParamDef
+parameter
min = 0
max = 65535
defaultValue = 0
CanControllerFdBaudrateConfig:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Can: EcucModuleDef
upperMultiplicity = *
lowerMultiplicity = 0
CanMultiplexedTransmission: +parameter
EcucBooleanParamDef
+parameter CanVersionInfoApi:
EcucBooleanParamDef
defaultValue = false
CanTimeoutDuration:
EcucFloatParamDef +parameter
CanMainFunctionModePeriod:
EcucFloatParamDef +parameter
min = 0
max = INF
OsCounter:
CanOsCounterRef:
CanMainFunctionBusoffPeriod: +destination EcucParamConfContainerDef
+reference EcucReferenceDef
EcucFloatParamDef lowerMultiplicity = 0
+parameter lowerMultiplicity = 0
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1
upperMultiplicity = 1
min = 0
max = INF
CanLPduReceiveCalloutFunction:
+parameter EcucFunctionNameDef
CanSetBaudrateApi: upperMultiplicity = 1
EcucBooleanParamDef lowerMultiplicity = 0
+parameter
defaultValue = False
lowerMultiplicity = 0
upperMultiplicity = 1
EcucPartition:
CanEcucPartitionRef:
+destination EcucParamConfContainerDef
CanIcomGeneral: +reference EcucReferenceDef
EcucParamConfContainerDef +subContainer lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = *
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1
CanPublicIcomSupport: +parameter
EcucBooleanParamDef
defaultValue = false
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanControllerFdBaudrateConfig: CanControllerFdBaudRate:
EcucParamConfContainerDef EcucFloatParamDef
+parameter
lowerMultiplicity = 0 min = 0
upperMultiplicity = 1 max = 16000
CanControllerTxBitRateSwitch:
+parameter
EcucBooleanParamDef
defaultValue = true
CanControllerPropSeg:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSeg1:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSeg2:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSyncJumpWidth:
+parameter EcucIntegerParamDef
min = 0
max = 255
CanControllerSspOffset:
EcucIntegerParamDef
+parameter
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Can: EcucModuleDef
TRANSMIT: RECEIVE:
BASIC: FULL: EcucEnumerationLiteralDef
upperMultiplicity = * EcucEnumerationLiteralDef
EcucEnumerationLiteralDef EcucEnumerationLiteralDef lowerMultiplicity = 0
+subContainer +parameter
CanHardwareObject: EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
+reference CanFdPaddingValue:
CanIdType: EcucEnumerationParamDef
EcucIntegerParamDef CanControllerRef:
CanMainFunctionRWPeriodRef: EcucReferenceDef
min = 0
EcucReferenceDef
max = 255
lowerMultiplicity = 0 defaultValue = 0
upperMultiplicity = 1 lowerMultiplicity = 0
upperMultiplicity = 1 +literal
+literal
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = false
+parameter +parameter
CanHardwareObjectUsesPolling: CanHwObjectCount:
EcucBooleanParamDef EcucIntegerParamDef
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanIcom: CanIcomConfig:
EcucParamConfContainerDef CanIcomConfigId:
EcucParamConfContainerDef +parameter EcucIntegerParamDef
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 min = 1
upperMultiplicity = * max = 255
+subContainer
CanIcomWakeOnBusOff:
+parameter EcucBooleanParamDef
defaultValue = true
+subContainer CanIcomWakeupCauses:
EcucParamConfContainerDef
+literal CAN_ICOM_LEVEL_TWO:
EcucEnumerationLiteralDef
+literal CAN_ICOM_VARIANT_HW:
EcucEnumerationLiteralDef
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanIcomRxMessageSignalConfig: CanIcomSignalMask:
EcucParamConfContainerDef +parameter EcucIntegerParamDef
lowerMultiplicity = 0 min = 0
upperMultiplicity = *
CanIcomSignalValue:
+parameter EcucIntegerParamDef
min = 0
+literal XOR:
+parameter EcucEnumerationLiteralDef
+literal
GREATER:
EcucEnumerationLiteralDef
+literal SMALLER:
EcucEnumerationLiteralDef
+literal
EQUAL:
EcucEnumerationLiteralDef
CanIcomSignalRef:
EcucReferenceDef ComSignal:
+reference +destination EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
upperMultiplicity = *
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
CanIcomMessageIdMask:
EcucIntegerParamDef
+parameter
min = 0
max = 536870912
lowerMultiplicity = 0
upperMultiplicity = 1
CanIcomCounterValue:
EcucIntegerParamDef
+parameter
+subContainer min = 1
max = 65536
lowerMultiplicity = 0
upperMultiplicity = 1
CanIcomMissingMessageTimerValue:
+parameter EcucFloatParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
CanIcomPayloadLengthError:
+parameter
EcucBooleanParamDef
defaultValue = false
CanIcomRxMessageSignalConfig:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
10.2.1 Can
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters and sub
CanConfigSet 1
containers of the AUTOSAR Can module.
This container contains the parameters related each CAN
CanGeneral 1
Driver Unit.
10.2.2 CanGeneral
Multiplicity 1
Type EcucBooleanParamDef
Default value false
Post-Build Variant Value false
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Type EcucFloatParamDef
Range ]0 .. INF[
Default value --
Post-Build Variant Value false
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Post-build time --
Scope / Dependency scope: ECU
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
modules API available in this partition. The CAN driver will operate as an
independent instance in each of the partitions.
Tags:
atp.Status=draft
Multiplicity 0..*
Type Reference to [ EcucPartition ]
Post-Build Variant
true
Multiplicity
Post-Build Variant Value true
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the general configuration parameters
CanIcomGeneral 0..1
of the ICOM Configuration.
This container contains the parameter for configuring the
CanMainFunctionRWPeriods 0..*
period for cyclic call to Can_MainFunction_Read or
91 of 114 Document ID 011: AUTOSAR_SWS_CANDriver
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
10.2.3 CanController
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Default value --
Post-Build Variant Value false
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: local
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Controller.
Multiplicity 1
Type Reference to [ CanControllerBaudrateConfig ]
Post-Build Variant Value true
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time --
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Included Containers
Container Name Multiplicity Scope / Dependency
CanControllerBaudrateConfi This container contains bit timing related configuration
1..*
g parameters of the CAN controller(s).
CanTTController is specified in the SWS TTCAN and contains
the configuration parameters of the TTCAN controller(s) (which
are needed in addition to the configuration parameters of the
CanTTController 0..1 CAN controller(s)).
This container is only included and valid if TTCAN is supported
by the controller, enabled (see CanSupportTTCANRef,
ECUC_Can_00430), and used.
10.2.4 CanControllerBaudrateConfig
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Included Containers
Container Name Multiplicity Scope / Dependency
This optional container contains bit timing related
CanControllerFdBaudrateConfi configuration parameters of the CAN controller(s) for
0..1
g payload and CRC of a CAN FD frame. If this container
exists the controller supports CAN FD frames.
10.2.5 CanControllerFdBaudrateConfig
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Example:
CAN controller clock frequency = 20MHz => MTQ = 1/20 * 10^(-6) s = 0,05
us = 50ns
Baud rate = 1MBit/s => BitTime = 1/(1 * 10^6) s/Bit = 1 * 10^(-6) = 1us/Bit
SSP = 75% => SSP in seconds = 0,75 * 1us = 750 ns
CanControllerSspOffset in MTQ = 750ns / 50ns = 15
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Note: Please consider the minimum range (0..63) stated in [17] and the
range definition (0..127) used as per [19].
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 255
Default value --
Post-Build Variant
true
Multiplicity
Post-Build Variant Value true
Multiplicity ConfigurationPre-compile time X VARIANT-PRE-COMPILE
Class Link time --
Post-build time X VARIANT-POST-BUILD
Value Configuration Class Pre-compile time X VARIANT-PRE-COMPILE
Link time --
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: local
No Included Containers
10.2.6 CanHardwareObject
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
standard identifier
- extended identifier
- mixed mode
ImplementationType: Can_IdType
Multiplicity 1
Type EcucEnumerationParamDef
Range EXTENDED All the CANIDs are of type extended only
(29 bit).
MIXED The type of CANIDs can be both
Standard or Extended.
STANDARD All the CANIDs are of type standard only
(11bit).
Post-Build Variant
true
Value
Value Pre-compile time X VARIANT-PRE-COMPILE
Configuration Link time --
Class Post-build time X VARIANT-POST-BUILD
Scope / scope: ECU
Dependency
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Description Holds the handle ID of HRH or HTH. The value of this parameter is unique
in a given CAN Driver, and it should start with 0 and continue without any
gaps.
The HRH and HTH Ids share a common ID range.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Included Containers
Container Name Multiplicity Scope / Dependency
This container is only valid for HRHs and contains the
CanHwFilter 0..*
configuration (parameters) of one hardware filter.
CanTTHardwareObjectTrigger is specified in the SWS
TTCAN and contains the configuration (parameters) of
TTCAN triggers for Hardware Objects, which are additional to
CanTTHardwareObjectTrigge
0..* the configuration (parameters) of CAN Hardware Objects.
r
This container is only included and valid if TTCAN is
supported by the controller and, enabled (see
CanSupportTTCANRef, ECUC_Can_00430), and used.
10.2.7 CanHwFilter
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Scope / Dependency
No Included Containers
10.2.8 CanConfigSet
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters of the
CanController 1..*
CAN controller(s).
This container contains the configuration (parameters) of CAN
CanHardwareObject 1..*
Hardware Objects.
This container contains the parameters for configuring
CanIcom 0..1
pretended networking
10.2.9 CanMainFunctionRWPeriods
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
No Included Containers
10.2.10 CanIcom
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters of the
CanIcomConfig 1..*
ICOM Configuration.
10.2.11 CanIcomConfig
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Default value --
Post-Build Variant Value false
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters of the
CanIcomWakeupCauses 1
wakeup causes to leave the power saving mode.
10.2.12 CanIcomGeneral
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
No Included Containers
10.2.13 CanIcomRxMessage
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
communication channel.
Multiplicity 0..1
Type EcucFloatParamDef
Range [-INF .. INF]
Default value --
Post-Build Variant
false
Multiplicity
Post-Build Variant Value false
Multiplicity ConfigurationPre-compile time X All Variants
Class Link time --
Post-build time --
Value Configuration Class Pre-compile time X All Variants
Link time --
Post-build time --
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters for
the wakeup causes for matching signals.
It has to be configured as often as a signal is defined as
wakeup cause. If at least one Signal conditions defined in
CanIcomRxMessageSignalConfi
0..* a CanIcomRxMessageSignalConfig evaluates to true or if
g
no CanIcomRxMessageSignalConfig are defined, the
whole wakeup condition is considered to be true. All
instances of this container refer to the same frame/pdu
(see CanIcomMessageId).
10.2.14 CanIcomRxMessageSignalConfig
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
No Included Containers
10.2.15 CanIcomWakeupCauses
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
Included Containers
Container Name Multiplicity Scope / Dependency
This container contains the configuration parameters for the
wakeup causes for matching received messages. It has to be
configured as often as received messages are defined as
CanIcomRxMessage 1..* wakeup cause.
constraint: For all CanIcomRxMessage instances the Message
IDs which are defined in CanIcomMessageId and in
CanIcomRxMessageIdMask shall not overlap.
- AUTOSAR confidential -
Specification of CAN Driver
AUTOSAR CP Release 4.4.0
- AUTOSAR confidential -