3.5. DCC Safety Example¶
3.5.1. Introduction¶
This example demonstrates how to configure the DCC and use it to monitor clocks in the two supported modes (continuous and single-shot modes). It also demonstrates how to receive errors generated by DCC in the MCU and Main domain.
This example displays:
Initializing the ESM to detect the DCC error event(s)
Registration of application callback for notification of ESM error events for the MCU ESM instance
Configuration of one MCU DCC instance to monitor a single clock in continuous mode
Forcing of an error to create a DCC error event
Using a single MCU DCC instance to monitor 3 different clocks by cycling through them in single-shot mode
The above will be done using first the backup clock source (RC OSC) as reference, and then with the primary clock source as reference (HFOSC0/1)
The above will be repeated for a Main domain DCC instance
The following methods can be used as a trigger for the DCC error event:
Change ratio criterion for stable clocks
Use Sciclient API to change clock dividers (with ratio criterion stable) to speed up clock
Use Sciclient API to change clock dividers (with ratio criterion stable) to slow down clock
Turn off power for the monitored input clock
3.5.2. Use Cases¶
Use Case
Description
DCC Inst
ESM
Input Event
Ref Clock
Input Clock
Mode
Input Trigger
Action
UC-1
Configuration of MCU DCC instance with Reference clock set to RC OSC and input clock is set to MCU_PLL1_HSDIV2_CLK0 (MCAN) Error event is forced.
MCU_DCC0
MCU_ESM0
MCU_DCC0_INTR_ERR_LEVEL_0
RC OSC
MCU_PLL1_HSDIV2_CLKO (MCAN)
Continuous
One of the possible methods detailed above.
Error event is logged by application. Print event to UART. Clock is reset by using Sciclient API to re-setup the clock, as needed.
Error event is cleared and execution continues.
UC-2
Configuration of MCU DCC instance with Reference clock set to RC OSC and inputs used as: MCU_PLL1_HSDIV2_CLK0 (MCAN) MCU_PLL1_HSDIV1_CLKOUT (ADC) MCU_SYSCLK/3 No error events.
MCU_DCC0
MCU_ESM0
MCU_DCC0_INTR_ERR_LEVEL_0
RC OSC
MCU_PLL1_HSDIV2_CLKO (MCAN) MCU_PLL1_HSDIV1_CLKOUT (ADC) MCU_SYSCLK/3
Single-shot
No errors, monitoring happens without issue.
Print pass to UART upon successful completion.
UC-3
Configuration of MCU DCC instance with Reference clock set to HFOSC0 and input clock is set to MCU_PLL1_HSDIV2_CLK0 (MCAN) Error event is forced.
MCU_DCC0
MCU_ESM0
MCU_DCC0_INTR_ERR_LEVEL_0
HFOSC0
MCU_PLL1_HSDIV2_CLKO (MCAN)
Continuous
One of the possible methods detailed above.
Error event is logged by application. Print event to UART. Clock is reset by using Sciclient API to re-setup the clock, as needed.
Error event is cleared and execution continues.
UC-4
Configuration of MCU DCC instance with Reference clock set to HFOSC0 and inputs used as: MCU_PLL1_HSDIV2_CLK0 (MCAN) MCU_PLL1_HSDIV1_CLKOUT (ADC) MCU_SYSCLK/3 No error events.
MCU_DCC0
MCU_ESM0
MCU_DCC0_INTR_ERR_LEVEL_0
HFOSC0
MCU_PLL1_HSDIV2_CLKO (MCAN) MCU_PLL1_HSDIV1_CLKOUT (ADC) MCU_SYSCLK/3
Single-shot
No errors, monitoring happens without issue.
Print pass to UART upon successful completion.
UC-5
Configuration of Main DCC instance with Reference clock set to RC OSC and input clock is set to MAIN_PLL0_HSDIV4_CLKOUT Error event is forced.
DCC0
ESM0
DCC0_INTR_ERR_LEVEL_0
RC OSC
MAIN_PLL0_HSDIV4_CLKOUT
Continuous
One of the possible methods detailed above.
Error event is logged by application. Print event to UART. Clock is reset by using Sciclient API to re-setup the clock, as needed.
Error event is cleared and execution continues.
UC-6
Configuration of Main DCC instance with Reference clock set to HFOSC0 and input clock is set to MAIN_PLL0_HSDIV4_CLKOUT Error event is forced.
DCC0
ESM0
DCC0_INTR_ERR_LEVEL_0
HFOSC0
MAIN_PLL0_HSDIV4_CLKOUT
Continuous
One of the possible methods detailed above.
Error event is logged by application. Print event to UART. Clock is reset by using Sciclient API to re-setup the clock, as needed.
Error event is cleared and execution continues.
UC-7
Configuration of Main DCC instance with Reference clock set to RC OSC and input clock is set to HFOSC1. No error events. Use case is stopped after some time.
DCC0
ESM0
DCC0_INTR_ERR_LEVEL_0
RC OSC
HFOSC1
Continuous
No errors. Monitoring happens without issue.
Print pass to UART upon successful completion.
UC-8
Configuration of MCU DCC instance with Reference clock set to RC OSC and input clock is set to HFOSC0. No error events. Use case is stopped after some time.
DCC0
MCU_ESM0
MCU_DCC0_INTR_ERR_LEVEL_0
RC OSC
HFOSC0
Continuous
No errors. Monitoring happens without issue.
Print pass to UART upon successful completion.
3.5.3. Example Details¶
The example should be loaded to the hardware using the Secondary Boot Loader (SBL) from the SDK.
Example Name |
Location |
Build Command |
---|---|---|
dcc_app_uc1 |
[sdl_install_dir]/examples/dcc/UC1/ |
make dcc_app_uc1 PROFILE=release |
dcc_app_uc4_2 |
[sdl_install_dir]/examples/dcc/UC4_2/ |
make dcc_app_uc4_2 PROFILE=release |
dcc_app_uc3 |
[sdl_install_dir]/examples/dcc/UC3/ |
make dcc_app_uc3 PROFILE=release |
dcc_app_uc5 |
[sdl_install_dir]/examples/dcc/UC5/ |
make dcc_app_uc5 PROFILE=release |
dcc_app_uc6 |
[sdl_install_dir]/examples/dcc/UC6/ |
make dcc_app_uc6 PROFILE=release |
dcc_app_uc7 |
[sdl_install_dir]/examples/dcc/UC7/ |
make dcc_app_uc7 PROFILE=release |
dcc_app_uc8 |
[sdl_install_dir]/examples/dcc/UC8/ |
make dcc_app_uc8 PROFILE=release |
3.5.4. Expected Output¶
dcc_app_uc1:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
SDL DCC EXAMPLE TEST: Start UC-1
INSTANCE: MCU_DCC0
Source clock: RC OSC
Test clock: MCAN
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Changing the clock ratios
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for Error interrupt
S
Interrupt is generated to ESM
ESM Call back function called : instType 0x2, intType 0x1, grpChannel 0x2, index 0x16, intSrc 0x56
Take action
DL DCC EXAMPLE TEST: Changing the clock source
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for Error interrupt
SDL DCC EXAMPLE TEST: DCC Generated Error interrupt
SDL DCC EXAMPLE TEST: Indicating clock drift/change
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
ESM Example Application
dcc_app_uc2:
DCC EXAMPLE Test Application
DCC_Test_init: Init MCU ESM complete
SDL DCC TEST: Start UC-2
INSTANCE: MCU_DCC0
Source clock: RC OSC
Test clock source: CBASS
SDL DCC TEST: Seed values calculation done.
SDL DCC TEST: DCC configured
SDL DCC TEST: Enabling DCC and waiting for completion interrupt
SDL DCC TEST: DCC Generated completion interrupt
SDL DCC TEST: No Clock Drift was observed
Test clock source: MCAN
SDL DCC TEST: Seed values calculation done.
SDL DCC TEST: DCC configured
SDL DCC TEST: Enabling DCC and waiting for completion interrupt
SDL DCC TEST: DCC Generated completion interrupt
SDL DCC TEST: No Clock Drift was observed
Test clock source: ADC
SDL DCC TEST: Seed values calculation done.
SDL DCC TEST: DCC configured
SDL DCC TEST: Enabling DCC and waiting for completion interrupt
SDL DCC TEST: DCC Generated completion interrupt
SDL DCC TEST: No Clock Drift was observed
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc3:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
INSTANCE: MCU_DCC0
Source clock: HFOSC0
Test clock: MCAN
SDL DCC EXAMPLE TEST: Start UC-3
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Changing the clock ratios
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for Error interrupt
Interrupt is generated to ESM
ESM Call back function called : instType 0x2, intType 0x1, grpChannel 0x2, index 0x16, intSrc 0x56
Take action
SDL DCC EXAMPLE TEST: DCC Generated Error interrupt
SDL DCC EXAMPLE TEST: Indicating clock drift/change
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc4:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
SDL DCC EXAMPLE TEST: Start UC-4
INSTANCE: MCU_DCC0
Source clock: HFOSC0
Test clock source: CBASS
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: DCC configured
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for completion interrupt
SDL DCC EXAMPLE TEST: DCC Generated completion interrupt
SDL DCC EXAMPLE TEST: No Clock Drift was observed
Test clock source: MCAN
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: DCC configured
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for completion interrupt
SDL DCC EXAMPLE TEST: DCC Generated completion interrupt
SDL DCC EXAMPLE TEST: No Clock Drift was observed
Test clock source: ADC
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: DCC configured
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for completion interrupt
SDL DCC EXAMPLE TEST: DCC Generated completion interrupt
SDL DCC EXAMPLE TEST: No Clock Drift was observed
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc5:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
INSTANCE: DCC0
Source clock: RC OSC
Test clock: MCAN
SDL DCC EXAMPLE TEST: Start UC-5
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Changing the clock ratios
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for Error interrupt
Interrupt is generated to ESM
ESM Call back function called : instType 0x3, intType 0x1, grpChannel 0x3, index 0x8, intSrc 0x68
Take action
SDL DCC EXAMPLE TEST: DCC Generated Error interrupt
SDL DCC EXAMPLE TEST: Indicating clock drift/change
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc6:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
INSTANCE: DCC0
Source clock: HFOSC0
Test clock: MCAN
SDL DCC EXAMPLE TEST: Start UC-6
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Changing the clock ratios
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: Enabling DCC and waiting for Error interrupt
Interrupt is generated to ESM
ESM Call back function called : instType 0x3, intType 0x1, grpChannel 0x3, index 0x8, intSrc 0x68
Take action
SDL DCC EXAMPLE TEST: DCC Generated Error interrupt
SDL DCC EXAMPLE TEST: Indicating clock drift/change
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc7:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
INSTANCE: DCC0
Source clock: RC OSC
Test clock: HFOSC1
SDL DCC EXAMPLE TEST: Start UC-7
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: DCC configured
SDL DCC EXAMPLE TEST: Enabling DCC
SDL DCC EXAMPLE TEST: Waiting for some time to perform Continuous mode
SDL DCC EXAMPLE TEST: DCC module is disabled
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.
dcc_app_uc8:
DCC Example Test Application
DCC_Test_init: Init MCU ESM complete
INSTANCE: MCU_DCC0
Source clock: RC OSC
Test clock: HFOSC0
SDL DCC EXAMPLE TEST: Start UC-8
SDL DCC EXAMPLE TEST: Seed values calculation done.
SDL DCC EXAMPLE TEST: DCC configured
SDL DCC EXAMPLE TEST: Enabling DCC
SDL DCC EXAMPLE TEST: Waiting for some time to perform Continuous mode
SDL DCC EXAMPLE TEST: DCC module is disabled
Test Name: DCC EXAMPLE TEST PASSED
All tests have passed.