149 lines
3.6 KiB
C
149 lines
3.6 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @file ciu32l051_std_trng.h
|
|||
|
* @author MCU Ecosystem Development Team
|
|||
|
* @brief TRNG STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD>ṩTRNG<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD>塣
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
* @attention
|
|||
|
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
|
|||
|
*
|
|||
|
*
|
|||
|
**************************************************************************************************
|
|||
|
*/
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#ifndef CIU32L051_STD_TRNG_H
|
|||
|
#define CIU32L051_STD_TRNG_H
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @addtogroup CIU32L051_STD_Driver
|
|||
|
* @{
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @defgroup TRNG TRNG
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
/*------------------------------------includes--------------------------------------------------*/
|
|||
|
#include "ciu32l051_std_common.h"
|
|||
|
|
|||
|
/*------------------------------------define----------------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup TRNG_Constants TRNG Constants
|
|||
|
* @brief TRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>弰<EFBFBD>궨<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1> */
|
|||
|
#define TRNG_TRUE_RANDOM TRNG_CR1_TYPE_SEL_TRUE /**< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
#define TRNG_PSEUDO_RANDOM TRNG_CR1_TYPE_SEL_PSEUDO /**< α<><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/*-------------------------------------------functions------------------------------------------*/
|
|||
|
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @defgroup TRNG_External_Functions TRNG External Functions
|
|||
|
* @brief TRNG<EFBFBD><EFBFBD><EFBFBD>⺯<EFBFBD><EFBFBD>
|
|||
|
* @{
|
|||
|
*/
|
|||
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param mode <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg TRNG_TRUE_RANDOM<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @arg TRNG_PSEUDO_RANDOM: α<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_trng_set_mode(uint32_t mode)
|
|||
|
{
|
|||
|
MODIFY_REG(TRNG->CR1, TRNG_CR1_TYPE_SEL, mode);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡTRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־״̬
|
|||
|
* @retval bool <EFBFBD><EFBFBD><EFBFBD><EFBFBD>TRNG<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־״̬
|
|||
|
* @arg true<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @arg false<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_trng_get_flag_ready(void)
|
|||
|
{
|
|||
|
return ((TRNG ->SR & TRNG_SR_RDY) == TRNG_SR_RDY);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief ʹ<EFBFBD><EFBFBD>TRNG<EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_trng_interrupt_enable(void)
|
|||
|
{
|
|||
|
TRNG->CR1 |= TRNG_CR1_RDYIE;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ֹTRNG<EFBFBD>ж<EFBFBD>
|
|||
|
* @retval <EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE void std_trng_interrupt_disable(void)
|
|||
|
{
|
|||
|
TRNG->CR1 &= (~TRNG_CR1_RDYIE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡTRNG<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @retval bool TRNG<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>״̬
|
|||
|
* @arg true <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|||
|
* @arg false <EFBFBD><EFBFBD>ʾ<EFBFBD>ж<EFBFBD>δʹ<EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE bool std_trng_get_interrupt_enable(void)
|
|||
|
{
|
|||
|
return ((TRNG->CR1 & TRNG_CR1_RDYIE) == TRNG_CR1_RDYIE);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @retval uint32_t 32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*/
|
|||
|
__STATIC_INLINE uint32_t std_trng_read_data(void)
|
|||
|
{
|
|||
|
return (TRNG->DR);
|
|||
|
}
|
|||
|
|
|||
|
void std_trng_deinit(void);
|
|||
|
std_status_t std_trng_get_random_number(uint32_t *rng_data32);
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
#endif /* CIU32L051_STD_TRNG_H */
|