HAL RAMCFG Use Cases

SRAM ERASE

@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 "RAMCFG 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
group #pink Alternative
part1->part4 : HAL_RCC_RAMCFG_EnableClock()
activate part4
note right: User can enable the RAMCFG Clock at application \n by calling HAL_RCC_RAMCFG_EnableClock()
part4->part1
deactivate part4
end
end
group #application Configuration
group #lightpink Optional
part1->part3 : HAL_RAMCFG_EnablePageWRP()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 : HAL_RAMCFG_EnableWRPByAddr()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
end
group #lightblue Process 
part1->part3 :  HAL_RAMCFG_MassErase()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
@enduml

Called functions:

MULTI PROCESS: ERASE and ECC

@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 "RAMCFG 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
group #pink Alternative
part1->part4 : HAL_RCC_RAMCFG_EnableClock()
activate part4
note right: User can enable the RAMCFG Clock at application \n by calling HAL_RCC_RAMCFG_EnableClock()
part4->part1
deactivate part4
end
end
group #application Configuration
group #lightpink Optional
part1->part3 : HAL_RAMCFG_EnablePageWRP()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 : HAL_RAMCFG_EnableWRPByAddr()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
end
group #lightblue Process
part1->part3 :  HAL_RAMCFG_ECC_Enable_IT()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 : HAL_RAMCFG_MassErase()
activate part3
part6 --> part5 : interrupt
part5 --> part3 : HAL_RAMCFG_IRQHandler
part3 --> part1 : User callback
part3 --> part1 : HAL_OK
deactivate part3
part6 --> part5 : interrupt
part5 --> part3 : HAL_RAMCFG_NMI_IRQHandler
part3 --> part1 : User callback
deactivate part3
part1->part3 :  HAL_RAMCFG_ECC_Disable()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
@enduml

Called functions:

SRAM ECC : INTERRUPT MODE

@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 "RAMCFG 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
group #pink Alternative
part1->part4 : HAL_RCC_RAMCFG_EnableClock()
activate part4
note right: User can enable the RAMCFG Clock at application \n by calling HAL_RCC_RAMCFG_EnableClock()
part4->part1
deactivate part4
end
end
group #application Configuration
group #lightpink Optional
part1->part3 : HAL_RAMCFG_EnablePageWRP()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 : HAL_RAMCFG_EnableWRPByAddr()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
end
group #lightblue Process 
part1->part3 :  HAL_RAMCFG_ECC_Enable_IT()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part6 --> part5 : interrupt
part5 --> part3 : HAL_RAMCFG_IRQHandler
part3 --> part1 : User callback
part1->part3 :  HAL_RAMCFG_ECC_Disable()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions:

SRAM ECC : POLLING MODE

@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 "RAMCFG 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
group #pink Alternative
part1->part4 : HAL_RCC_RAMCFG_EnableClock()
activate part4
note right: User can enable the RAMCFG Clock at application \n by calling HAL_RCC_RAMCFG_EnableClock()
part4->part1
deactivate part4
end
end
group #application Configuration
group #lightpink Optional
part1->part3 : HAL_RAMCFG_EnablePageWRP()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 : HAL_RAMCFG_EnableWRPByAddr()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
end
end
group #lightblue Process 
part1->part3 :  HAL_RAMCFG_ECC_Enable()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMCFG_ECC_GetInfo()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
part1->part3 :  HAL_RAMCFG_ECC_Disable()
activate part3
part3 --> part1 : HAL_OK
deactivate part3
deactivate part3
end
@enduml

Called functions: