With complex vehicle architectures designed into modern vehicles for ADAS, EV systems, gateways etc., a simple ignition key driven ECU wake up architecture is no longer adequate. New strategies that require ECUs to be woken up by CAN traffic, or on a specific CAN message, are becoming a requirement. For example, EV architectures require a periodic wake-up of the ECU to perform some scheduling and background tasks, even when the vehicle is not in use. This requires a real-time clock wake up functionality in ECUs.
The M560 and M580 families of Functional Safety (ISO 26262) Vehicle Control Units (VCU) take modern vehicle architectures into consideration. They have the following wake sources:
- Wake on RTC clock
- Ignition (Pin XD1)
- Fuel Door Button (Pin ZA2)
- Control Pilot (Pin XF1)
- Wake on CAN bus A Message(s) (Traffic present or Specific Message IDs) (Pins YE4 & YF4)
- Wake on CAN bus B Messages (Traffic present) (Pins YJ4 & YK4)
The Wake_M560_M580_Sleep example Simulink model demonstrates the M560 and M580 ECU’s flexibility to either bring the ECU to a sleep state, or wake it from a sleep state. The Simulink model follows a top down/left right flow, allowing the user to easily follow the logic. Within the Simulink model, the user will be able to identify the following key characteristics of the M560 or M580:
- Selecting the type of Real Time Workshop (RTW) build,
- Configuring CAN/CCP settings,
- Enabling the secondary microcontroller and
- Details about configuring the six wake-sources for the M560 or M580
An easy to use, and easy to build, example Simulink model supporting OpenECU M560 and M580 families of rapid control prototyping embedded controllers is available for download here. It is intended to introduce users to the ease and simplicity of creating, and building, applications using OpenECU.
Use cases for testing the wake sources
- Download the Example model: http://support.openecu.com/
- Download the User Guide for Simulink API
- Read the comments in the model to take next steps
A snippet of the instructions for the example model with various wake sources is provided below:
- RTC (Real Time Clock)
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to a value that you want to wake the M5xx up after it has been asleep (units are in Minutes)
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Observe that in the time set on slpc_mins_RTCData that the M5xx wakes up and then goes back to sleep
- The steps of operation to test this feature are as follows:
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to 999 (we do not want to wake the M5xx up after it has been asleep
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Set pin xD1 true and verify that the variable slp_b_WakeSourceOff goes true and that the M5xx wakes up
- The M5xx will stay awake based on the value set on the calibration variable slpc_s_PsuHoldOffDelay.
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to 999 (we do not want to wake the M5xx up after it has been asleep
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Set pin ZA2 true and verify that the variable slp_b_WakeSourceOff goes true and that the M5xx wakes up
- The M5xx will stay awake based on the value set on the calibration variable slpc_s_PsuHoldOffDelay.
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to 999 (we do not want to wake the M5xx up after it has been asleep
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Set pin XF1 true and verify that the variable slp_b_WakeSourceOff goes true and that the M5xx wakes up
- The M5xx will stay awake based on the value set on the calibration variable slpc_s_PsuHoldOffDelay.
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to 999 (we do not want to wake the M5xx up after it has been asleep
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Transmit CAN Message 512 on CAN Channel A and verify that the variable slp_b_WakeSourceOff goes true and that the M5xx wakes up
- The M5xx will stay awake based on the value set on the calibration variable slpc_s_PsuHoldOffDelay.
- The steps of operation to test this feature are as follows:
- Set slpc_mins_RTCData to 999 (we do not want to wake the M5xx up after it has been asleep
- Verify that slp_b_WakeSourceOff is not true
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- slp_b_XD1Ign (ignition input)
- slp_b_ZA2FuelDoorButton (fuel door button input)
- slp_b_XF1ControlPilot (control pilot input)
- slp_b_canAwaketrg (CAN A wakeup flag)
- slp_b_canBwaketrg (CAN B wakeup flag)
- To verify which source is holding slp_b_WakeSourceOff False look at the following variables:
- Whichever input is true, disconnect that input and verify that slp_b_WakeSourceOff goes true
- Transmit a CAN Message on CAN Channel B and verify that the variable slp_b_WakeSourceOff goes true and that the M5xx wakes up
- The M5xx will stay awake based on the value set on the calibration variable slpc_s_PsuHoldOffDelay.