HAL RNG Overview

Introducing RNG

group RNG_Introduction

  • This introduction is under development.

Module and files

The following diagram illustrates the RNG module and its associated files.

Module and files diagram

Component diagram

The following diagram illustrates the software components involved in the RNG module. It shows the interactions between the user application, HAL drivers, low-level drivers, and the hardware components.

@startuml



!$use_ppp_core = 1

!$use_ppp_ll = 1

!$use_ppp_hal = 1



!$use_api_itf = 1

!$use_hal_itf = 1

!$use_ll_itf = 1

!$use_core_itf = 1



!$use_ppp_isr = 1



!$use_hal_service = 1

!$use_hal_rcc = 1

!$use_hal_dma = 0



!$use_ll_rcc = 0



!$ppp = "RNG"

!$hal_api_itf = "HAL " + $ppp + " API"

!$appli_itf = "User Callback"

!$ppp_name = "HAL_"+$ppp

!$ppp_ISR = $ppp+" ISR"

!$ll_ppp = "LL_"+$ppp

!$hal_dma_itf = "HAL_DMA_StartDirectXfer()\nHAL_DMA_Abort_IT"

!$hal_rcc_itf = "\t\t\t\HAL_RCC_"+$ppp+"_EnableClock()"

!$hal_ppp_itf = "DMA CallBacks\nDMA Half transfer complete CallBack\nError CallBacks"

!$hal_generic_itf = "HAL_GetTick()"

!$ll_ppp_itf = "LL " + $ppp +" API"

!$ppp_xIRQ = $ppp+"x_IRQ"



<style>

componentDiagram {

arrow {

FontSize 8

}

interface {

FontSize 8

}

}

</style>



title $ppp Software Component Diagram



Package "Application Layer" #DarkMagenta {



component [Appli]

interface "$appli_itf" as APPLI_Interface

[Appli] -r- APPLI_Interface

}



package "HAL" #DarkOrange {

[$ppp_name]

!if ($use_hal_dma == 1)

interface "$hal_ppp_itf" as HAL_PPP_Interface

[$ppp_name] -d- HAL_PPP_Interface

!endif

interface "$hal_api_itf" as HAL_PPP_APPLI_Interface

[$ppp_name] -u- HAL_PPP_APPLI_Interface



!if ($use_hal_service == 1)

  [HAL_SERVICE]

  interface "$hal_generic_itf" as HAL_Service_Interface

  [HAL_SERVICE] -r- HAL_Service_Interface

  [$ppp_name] -l-( HAL_Service_Interface

!endif  



!if ($use_hal_dma == 1)

  [HAL_DMA]

  interface "$hal_dma_itf" as HAL_DMA_Interface

  [HAL_DMA] -u- HAL_DMA_Interface

  [HAL_DMA] -u-( HAL_PPP_Interface

  [$ppp_name] --( HAL_DMA_Interface

!endif

!if ($use_hal_rcc == 1)

  [HAL_RCC]

  interface "$hal_rcc_itf" as HAL_RCC_Interface

  [HAL_RCC] -l- HAL_RCC_Interface

  [$ppp_name] -r-( HAL_RCC_Interface

!endif

}



[Appli] -d-( HAL_PPP_APPLI_Interface

[$ppp_name] -u-( APPLI_Interface



package "Low Layer" #Technology {



!if ($use_ppp_ll == 1)

  [$ll_ppp]

  interface "$ll_ppp_itf" as LL_PPP_Interface

  [$ll_ppp]  -u- LL_PPP_Interface

!endif 



!if ($use_ppp_isr == 1) 

interface "$ppp_ISR" as PPP_ISR

[$ppp_ISR] -U- PPP_ISR

[$ppp_ISR]

!endif



[CMSIS-Devices]

!if ($use_ll_rcc == 1)

  [LL_RCC]

  interface "LL RCC API" as LL_RCC_API

  [LL_RCC] -u- LL_RCC_API

  [HAL_RCC] -d-(LL_RCC_API

!endif



!if ($use_hal_dma == 1)

  [DMA ISR]

  interface "DMA ISR" as DMA_ISR

  [DMA ISR] -u- DMA_ISR

!endif  

}



package "HW" #LightCyan {

[STM32_HW]

!if ($use_ppp_isr == 1)

interface "$ppp_xIRQ" as PPPx_IRQ

[STM32_HW] -u- PPPx_IRQ

!endif

!if ($use_hal_dma == 1)

interface "DMAx_IRQ_Ch" as DMA_IRQ_CH

[STM32_HW] -u- DMA_IRQ_CH

[DMA ISR] -d-( DMA_IRQ_CH

[HAL_DMA] --( DMA_ISR

!endif

}

!if ($use_ppp_ll == 1)

[$ppp_name] -d-( LL_PPP_Interface

[$ll_ppp] .r.> [CMSIS-Devices]: $ppp register def

[STM32_HW] <.u. [$ll_ppp] : $ppp registers R/W

!else

[$ppp_name] .d.> [CMSIS-Devices]: $ppp register def

[STM32_HW] <.l. [$ppp_name] : $ppp registers R/W

!endif

!if ($use_ppp_isr == 1)

[$ppp_ISR] -d-( PPPx_IRQ

[$ppp_name] -d-( PPP_ISR

!endif

!if ($use_ll_rcc == 1)

[STM32_HW] <.u. [LL_RCC] : RCC registers R/W

!endif



@enduml

Configuration table

The following table lists the configuration defines for the HAL RNG module, specifying their locations, default values, and descriptions:

group RNG_Configuration_Table

Configuration inside the RNG driver

Config defines

Description

Default value

Note

PRODUCT

from IDE

NA

Ex:STM32U5XXxx.

USE_ASSERT_DBG_PARAM

from IDE

None

Enable the parameters asserts.

USE_ASSERT_DBG_STATE

from IDE

None

Enable the state asserts.

USE_HAL_CHECK_PARAM

from hal_conf.h

0

Parameters runtime check.

USE_HAL_SECURE_CHECK_PARAM

from hal_conf.h

0

Parameters runtime check for sensitive APIs

USE_HAL_RNG_MODULE

from hal_conf.h

1

Enable the HAL RNG module.

USE_HAL_RNG_CLK_ENABLE_MODEL

from hal_conf.h

HAL_CLK_ENABLE_NO

Enable the HAL_RNG_CLK.

USE_HAL_RNG_REGISTER_CALLBACKS

from hal_conf.h

0

Enable the register callbacks assert.

USE_HAL_RNG_GET_LAST_ERRORS

from hal_conf.h

0

Allows to get the last errors codes.

USE_HAL_RNG_USER_DATA

from hal_conf.h

0

Allows to Enable/Disable user data.

RNG_CERT_NIST

from stm32u5xxxx.h

NA

Product dependent values from DFP.