89 lines
3.5 KiB
C
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****/
|