rt-thread-official/bsp/airm2m/air32f103/libraries/AIR32F10xLib/inc/air32f10x_trng.h

89 lines
3.5 KiB
C

/************************ (C) COPYRIGHT Megahuntmicro *************************
* @file : air32f103_trng.h
* @author : Megahuntmicro
* @version : V1.0.0
* @date :
* @brief :
*****************************************************************************/
#ifndef __AIR32F10x_TRNG_H
#define __AIR32F10x_TRNG_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "air32f10x.h"
typedef enum
{
TRNG_PDSource_0 = 0xE,
TRNG_PDSource_1 = 0xD,
TRNG_PDSource_2 = 0xB,
TRNG_PDSource_3 = 0x7,
} TRNG_PDSourceTypeDef;
#define TRNG_Periph_Div_None ((uint32_t)0x00)
#define TRNG_Periph_Div2 ((uint32_t)0x01)
#define TRNG_Periph_Div4 ((uint32_t)0x10)
#define TRNG_Periph_Div8 ((uint32_t)0x11)
#define IS_TRNG_DIV(DIV) (((DIV) == TRNG_Periph_Div_None) || \
((DIV) == TRNG_Periph_Div2) || \
((DIV) == TRNG_Periph_Div4) || \
((DIV) == TRNG_Periph_Div8))
#define IS_TRNG_PDSource(PDSOURCE) (((PDSOURCE) == TRNG_PDSource_0) ||\
((PDSOURCE) == TRNG_PDSource_1) ||\
((PDSOURCE) == TRNG_PDSource_2) ||\
((PDSOURCE) == TRNG_PDSource_3))
#define TRNG_IT_RNG0_S128 ((uint32_t)0x00000001)
#define TRNG_IT_RNG0_ATTACK ((uint32_t)0x00000004)
#define IS_TRNG_GET_IT(IT) (((IT) == TRNG_IT_RNG0_S128) || \
((IT) == TRNG_IT_RNG0_ATTACK))
/************ bit definition for TRNG RNG_INDEX REGISTER ************/
#define RNG_FIFO_INDEX_Mask BIT(31)
/************ bit definition for TRNG RNG_CSR REGISTER ************/
#define TRNG_RNG_CSR_INTP_EN_Mask ((uint32_t)0x0010)
#define TRNG_RNG_CSR_ATTACK_TRNG0_Mask ((uint32_t)0x0004)
#define TRNG_RNG_CSR_S128_TRNG0_Mask ((uint32_t)0x0001)
/************ bit definition for TRNG RNG_AMA REGISTER ************/
#define TRNG_RNG_AMA_OUT_TRNG0_Mask ((uint32_t)0x10000000)
#define TRNG_RNG_AMA_PD_TRNG0_Mask ((uint32_t)0x00001000)
#define TRNG_RNG_AMA_PD_TRNG1_Mask ((uint32_t)0x00002000)
#define TRNG_RNG_AMA_PD_TRNG2_Mask ((uint32_t)0x00004000)
#define TRNG_RNG_AMA_PD_TRNG3_Mask ((uint32_t)0x00008000)
#define TRNG_RNG_AMA_PD_ALL_Mask ((uint32_t)0x0000F000)
/************ bit definition for TRNG ENABLE REGISTER ************/
#define TRNG_RNG_ENABLE ((uint32_t)0x00000001)
/** @defgroup RNG_Exported_Functions
* @{
*/
void TRNG_Start(void);
void TRNG_Stop(void);
uint32_t TRNG_Get(uint32_t TRNG_Data[4]);
void TRNG_SetPseudoRandom(uint32_t TRNG_PseudoRandom);;
void TRNG_DirectOutANA(FunctionalState NewState);
void TRNG_ITConfig(FunctionalState NewState);
ITStatus TRNG_GetITStatus(uint32_t TRNG_IT);
void TRNG_ClearITPendingBit(uint32_t TRNG_IT);
void TRNG_SelectPDSource(TRNG_PDSourceTypeDef TRNG_Source);
void TRNG_Out(FunctionalState NewState);
#ifdef __cplusplus
}
#endif
#endif
/************************** (C) COPYRIGHT Megahunt *****END OF FILE****/