STM32L5 RNG : update for deprecated MCU version

pull/14687/head
reme 2021-05-12 14:25:41 +02:00
parent 7d1f5c4c40
commit f599a5463c
1 changed files with 14 additions and 1 deletions

View File

@ -116,6 +116,7 @@
/* Health test control register information to use in CCM algorithm */
#define RNG_HTCFG_1 0x17590ABCU /*!< Magic number */
#define RNG_HTCFG 0x0000A2B3U /*!< Recommended value for NIST compliancy */
#define RNG_HTCFG_REVB 0x000CAA74U /*!< Recommended value for old MCU cut - deprecated */
/**
* @}
*/
@ -210,10 +211,18 @@ HAL_StatusTypeDef HAL_RNG_Init(RNG_HandleTypeDef *hrng)
MODIFY_REG(hrng->Instance->CR, RNG_CR_CED | RNG_CR_CONDRST, hrng->Init.ClockErrorDetection | RNG_CR_CONDRST);
#if defined(RNG_VER_3_2) || defined(RNG_VER_3_1) || defined(RNG_VER_3_0)
if ( HAL_GetREVID() == 0x2000) { // Deprecated - old MCU
/*!< magic number must be written immediately before to RNG_HTCRG */
WRITE_REG(hrng->Instance->HTCR, RNG_HTCFG_1);
/* for best latency and to be compliant with NIST */
WRITE_REG(hrng->Instance->HTCR, RNG_HTCFG);
WRITE_REG(hrng->Instance->HTCR, RNG_HTCFG_REVB);
}
else {
/*!< magic number must be written immediately before to RNG_HTCRG */
WRITE_REG(hrng->Instance->HTCR, RNG_HTCFG_1);
/* for best latency and to be compliant with NIST */
WRITE_REG(hrng->Instance->HTCR, RNG_HTCFG);
}
#endif /* RNG_VER_3_2 || RNG_VER_3_1 || RNG_VER_3_0 */
/* Writing bit CONDRST=0 */
@ -682,6 +691,10 @@ HAL_StatusTypeDef HAL_RNG_GenerateRandomNumber(RNG_HandleTypeDef *hrng, uint32_t
{
hrng->State = HAL_RNG_STATE_READY;
hrng->ErrorCode = HAL_RNG_ERROR_TIMEOUT;
if (__HAL_RNG_GET_FLAG(hrng, RNG_FLAG_SECS) != RESET)
{
hrng->ErrorCode |= HAL_RNG_ERROR_SEED;
}
/* Process Unlocked */
__HAL_UNLOCK(hrng);
return HAL_ERROR;