HAL RAMECC Use Cases

SRAM ECC : POLLING MODE AT MONITOR LEVEL

@startuml
hide footbox
' To add a number by line
'autonumber
' Fix order of each column
skinparam ParticipantPadding 40
participant "User Application" as part1
participant "System" as part2
participant "RAMECC Driver" as part3
participant "RCC Driver" as part4
activate part1
group #lightskyblue Initialization
part1->part2 : HAL_Init()
activate part2
part2 --> part1
deactivate part2
part1->part2 : SystemClock_Config()
activate part2
part2 --> part1
deactivate part2
end
group #lightblue Process
part1->part3 :  HAL_RAMECC_EnableMonitor()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_GetInfo()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_CleanInfo()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_DisableMonitor()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions:

SRAM ECC : INTERRUPT MODE AT MONITOR LEVEL

@startuml
hide footbox
' To add a number by line
'autonumber
' Fix order of each column
skinparam ParticipantPadding 40
participant "User Application" as part1 
participant "System" as part2
participant "RAMECC Driver" as part3
participant "CORTEX Driver" as part4
participant "NVIC" as part5
participant "HW" as part6
participant "RCC Driver" as part7
activate part1
group #lightskyblue Initialization
part1->part2 : HAL_Init()
activate part2
part2 --> part1
deactivate part2
part1->part2 : SystemClock_Config()
activate part2
part2 --> part1
deactivate part2
end
group #lightblue Process
part1->part3 :  HAL_RAMECC_EnableMonitor_IT()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part6 --> part5 : interrupt
part5 --> part3 : HAL_RAMECC_IRQHandler
part3 --> part1 : User callback
part1->part3 :  HAL_RAMECC_DisableMonitor()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions:

SRAM ECC : POLLING MODE AT CONTROLLER LEVEL

@startuml
hide footbox
' To add a number by line
'autonumber
' Fix order of each column
skinparam ParticipantPadding 40
participant "User Application" as part1
participant "System" as part2
participant "RAMECC Driver" as part3
participant "RCC Driver" as part4
activate part1
group #lightskyblue Initialization
part1->part2 : HAL_Init()
activate part2
part2 --> part1
deactivate part2
part1->part2 : SystemClock_Config()
activate part2
part2 --> part1
deactivate part2
end
group #lightblue Process
part1->part3 :  HAL_RAMECC_EnableController()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_GetInfo()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_CleanInfo()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMECC_DisableController()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions:

SRAM ECC : INTERRUPT MODE AT CONTROLLER LEVEL

@startuml
hide footbox
' To add a number by line
'autonumber
' Fix order of each column
skinparam ParticipantPadding 40
participant "User Application" as part1
participant "System" as part2
participant "RAMECC Driver" as part3
participant "CORTEX Driver" as part4
participant "NVIC" as part5
participant "HW" as part6
participant "RCC Driver" as part7
activate part1
group #lightskyblue Initialization
part1->part2 : HAL_Init()
activate part2
part2 --> part1
deactivate part2
part1->part2 : SystemClock_Config()
activate part2
part2 --> part1
deactivate part2
end
group #lightblue Process
part1->part3 :  HAL_RAMECC_EnableController_IT()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part6 --> part5 : interrupt
part5 --> part3 : HAL_RAMECC_IRQHandler
part3 --> part1 : User callback
part1->part3 :  HAL_RAMECC_DisableController()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions: