bf0_hal_rng.h

FLASH HAL module driver.

Author

Sifli software development team

Defines

RNG_IT_SEED

Random seed generation done raw interrupt

RNG_IT_RAND

Random number available raw interrupt

RNG_IT_LOCK

prng lockup raw interrupt

RNG_FLAG_RAND_VALID

Random number valid flag

RNG_FLAG_RAND_BUSY

Random number engine busy flag

RNG_FLAG_SEED_VALID

Random seed valid flag

RNG_FLAG_SEED_BUSY

Random seed engine busy flag

RNG_CMD_SEED

Generate random seed

RNG_CMD_RAND

Generate random data

HAL_RNG_ERROR_NONE

No error

__HAL_RNG_RESET_HANDLE_STATE(__HANDLE__)

Reset RNG handle state.

参数:
  • __HANDLE__ – RNG Handle

返回值:

None

__HAL_RNG_COMMAND(__HANDLE__, CMD)

RNG module command.

参数:
  • __HANDLE__ – RNG Handle

  • CMD – RNG command This parameter can be one of the following values:

    • RNG_CMD_RAND: Generate Random number

    • RNG_CMD_SEED : Generate Random seed

返回值:

None

__HAL_RNG_ENABLE(__HANDLE__)

Enable the RNG peripheral.

参数:
  • __HANDLE__ – RNG Handle

返回值:

None

__HAL_RNG_DISABLE(__HANDLE__)

Disable the RNG peripheral.

参数:
  • __HANDLE__ – RNG Handle

返回值:

None

__HAL_RNG_GET_FLAG(__HANDLE__, __FLAG__)

Check whether the specified RNG flag is set or not.

参数:
  • __HANDLE__ – RNG Handle

  • __FLAG__ – RNG flag This parameter can be one of the following values:

    • RNG_FLAG_RAND_VALID: Random number valid flag

    • RNG_FLAG_RAND_BUSY : Random number engine busy flag

    • RNG_FLAG_SEED_VALID: Random seed valid flag

    • RNG_FLAG_SEED_BUSY : Random seed engine busy flag

返回值:

The – new state of FLAG (SET or RESET).

__HAL_RNG_CLEAR_FLAG(__HANDLE__, __FLAG__)

Clear the selected RNG flag status.

备注

WARNING: This is a dummy macro for HAL code alignment, flags RNG_FLAG_XXXX are read-only.

参数:
  • __HANDLE__ – RNG handle

  • __FLAG__ – RNG flag to clear

返回值:

None

__HAL_RNG_ENABLE_IT(__HANDLE__)

Enable the RNG interrupt.

参数:
  • __HANDLE__ – RNG Handle

返回值:

None

__HAL_RNG_DISABLE_IT(__HANDLE__)

Disable the RNG interrupt.

参数:
  • __HANDLE__ – RNG Handle

返回值:

None

__HAL_RNG_GET_IT(__HANDLE__, __INTERRUPT__)

Check whether the specified RNG interrupt has occurred or not.

参数:
  • __HANDLE__ – RNG Handle

  • __INTERRUPT__ – specifies the RNG interrupt status flag to check. This parameter can be one of the following values:

    • RNG_IT_SEED : Random seed generation done raw interrupt

    • RNG_IT_RAND : Random number available raw interrupt

    • RNG_IT_LOCK : prng lockup raw interrupt

返回值:

The – new state of __INTERRUPT__ (SET or RESET).

__HAL_RNG_CLEAR_IT(__HANDLE__, __INTERRUPT__)

Clear the RNG interrupt status flags.

参数:
  • __HANDLE__ – RNG Handle

  • __INTERRUPT__ – specifies the RNG interrupt status flag to clear. This parameter can be one of the following values:

    • RNG_IT_SEED : Random seed generation done raw interrupt

    • RNG_IT_RAND : Random number available raw interrupt

    • RNG_IT_LOCK : prng lockup raw interrupt

返回值:

None

HAL_RNG_GenerateRandomNumber(hrng, random32bit)
HAL_RNG_GenerateRandomNumber_IT(hrng, random32bit)
HAL_RNG_GenerateRandomSeed(hrng, seed32bit)
HAL_RNG_GenerateRandomSeed_IT(hrng, seed32bit)
IS_RNG_ALL_INSTANCE(__INSTANCE__)

Typedefs

typedef struct __RNG_HandleTypeDef RNG_HandleTypeDef

RNG Handle Structure definition.

Enums

enum HAL_RNG_StateTypeDef

RNG HAL State Structure definition.

Values:

enumerator HAL_RNG_STATE_RESET

RNG not yet initialized or disabled

enumerator HAL_RNG_STATE_READY

RNG initialized and ready for use

enumerator HAL_RNG_STATE_BUSY

RNG internal process is ongoing

enumerator HAL_RNG_STATE_TIMEOUT

RNG timeout state

enumerator HAL_RNG_STATE_ERROR

RNG error state

Functions

HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng)

Initialize the RNG peripheral and initialize the associated handle.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

HAL – status

HAL_StatusTypeDef HAL_RNG_DeInit(RNG_HandleTypeDef *hrng)

DeInitialize the RNG peripheral.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

HAL – status

void HAL_RNG_MspInit(RNG_HandleTypeDef *hrng)

Initialize the RNG MSP.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

None

void HAL_RNG_MspDeInit(RNG_HandleTypeDef *hrng)

DeInitialize the RNG MSP.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

None

uint32_t HAL_RNG_ReadLastRandomNumber(RNG_HandleTypeDef *hrng)

Read latest generated random number.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

random – value

HAL_StatusTypeDef HAL_RNG_Generate(RNG_HandleTypeDef *hrng, uint32_t *random32bit, uint8_t is_seed)

Generate a 32-bit random number or seed.

备注

Each time the random number data is read the RNG_FLAG_DRDY flag is automatically cleared.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

  • random32bit – pointer to generated random number variable if successful.

  • is_seed – 1:generate seed. 0:Generate random number

返回值:

HAL – status

HAL_StatusTypeDef HAL_RNG_Generate_IT(RNG_HandleTypeDef *hrng, uint8_t is_seed)

Generate random number or seed in interrupt mode.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

  • is_seed – 1:generate seed. 0:Generate random number

返回值:

HAL – status

void HAL_RNG_IRQHandler(RNG_HandleTypeDef *hrng)

Handle RNG interrupt request.

备注

In the case of a clock error, the RNG is no more able to generate random numbers because the PLL48CLK clock is not correct. User has to check that the clock controller is correctly configured to provide the RNG clock and clear the CEIS bit using __HAL_RNG_CLEAR_IT(). The clock error has no impact on the previously generated random numbers, and the RNG_DR register contents can be used.

备注

In the case of a seed error, the generation of random numbers is interrupted as long as the SECS bit is ‘1’. If a number is available in the RNG_DR register, it must not be used because it may not have enough entropy. In this case, it is recommended to clear the SEIS bit using __HAL_RNG_CLEAR_IT(), then disable and enable the RNG peripheral to reinitialize and restart the RNG.

备注

RNG ErrorCallback() API is called once whether SEIS or CEIS are set.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

None

void HAL_RNG_RandReadyCallback(RNG_HandleTypeDef *hrng, uint32_t random32bit)

Random Data Ready callback in non-blocking mode.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

  • random32bit – generated random value

返回值:

None

void HAL_RNG_SeedReadyCallback(RNG_HandleTypeDef *hrng, uint32_t seed32bit)

Random Seed Ready callback in non-blocking mode.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

  • seed32bit – generated random seed

返回值:

None

HAL_RNG_StateTypeDef HAL_RNG_GetState(RNG_HandleTypeDef *hrng)

Return the RNG handle state.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

HAL – state

uint32_t HAL_RNG_GetError(RNG_HandleTypeDef *hrng)

Return the RNG handle error code.

参数:
  • hrng – pointer to a RNG_HandleTypeDef structure.

返回值:

RNG – Error Code

struct __RNG_HandleTypeDef
#include <bf0_hal_rng.h>

RNG Handle Structure definition.

Public Members

TRNG_TypeDef *Instance

Register base address

HAL_LockTypeDef Lock

RNG locking object

HAL_RNG_StateTypeDef State

RNG communication state

uint32_t ErrorCode

RNG Error code

uint32_t RandomNumber

Last Generated RNG Data