1 /************************ (C) COPYRIGHT Megahuntmicro ************************* 2 * @file : air32f103_trng.h 3 * @author : Megahuntmicro 4 * @version : V1.0.0 5 * @date : 6 * @brief : 7 *****************************************************************************/ 8 9 #ifndef __AIR32F10x_TRNG_H 10 #define __AIR32F10x_TRNG_H 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /* Includes ------------------------------------------------------------------*/ 17 #include "air32f10x.h" 18 19 typedef enum 20 { 21 TRNG_PDSource_0 = 0xE, 22 TRNG_PDSource_1 = 0xD, 23 TRNG_PDSource_2 = 0xB, 24 TRNG_PDSource_3 = 0x7, 25 } TRNG_PDSourceTypeDef; 26 27 #define TRNG_Periph_Div_None ((uint32_t)0x00) 28 #define TRNG_Periph_Div2 ((uint32_t)0x01) 29 #define TRNG_Periph_Div4 ((uint32_t)0x10) 30 #define TRNG_Periph_Div8 ((uint32_t)0x11) 31 32 #define IS_TRNG_DIV(DIV) (((DIV) == TRNG_Periph_Div_None) || \ 33 ((DIV) == TRNG_Periph_Div2) || \ 34 ((DIV) == TRNG_Periph_Div4) || \ 35 ((DIV) == TRNG_Periph_Div8)) 36 37 38 #define IS_TRNG_PDSource(PDSOURCE) (((PDSOURCE) == TRNG_PDSource_0) ||\ 39 ((PDSOURCE) == TRNG_PDSource_1) ||\ 40 ((PDSOURCE) == TRNG_PDSource_2) ||\ 41 ((PDSOURCE) == TRNG_PDSource_3)) 42 43 #define TRNG_IT_RNG0_S128 ((uint32_t)0x00000001) 44 #define TRNG_IT_RNG0_ATTACK ((uint32_t)0x00000004) 45 #define IS_TRNG_GET_IT(IT) (((IT) == TRNG_IT_RNG0_S128) || \ 46 ((IT) == TRNG_IT_RNG0_ATTACK)) 47 48 49 50 /************ bit definition for TRNG RNG_INDEX REGISTER ************/ 51 52 #define RNG_FIFO_INDEX_Mask BIT(31) 53 /************ bit definition for TRNG RNG_CSR REGISTER ************/ 54 #define TRNG_RNG_CSR_INTP_EN_Mask ((uint32_t)0x0010) 55 #define TRNG_RNG_CSR_ATTACK_TRNG0_Mask ((uint32_t)0x0004) 56 #define TRNG_RNG_CSR_S128_TRNG0_Mask ((uint32_t)0x0001) 57 58 /************ bit definition for TRNG RNG_AMA REGISTER ************/ 59 #define TRNG_RNG_AMA_OUT_TRNG0_Mask ((uint32_t)0x10000000) 60 #define TRNG_RNG_AMA_PD_TRNG0_Mask ((uint32_t)0x00001000) 61 #define TRNG_RNG_AMA_PD_TRNG1_Mask ((uint32_t)0x00002000) 62 #define TRNG_RNG_AMA_PD_TRNG2_Mask ((uint32_t)0x00004000) 63 #define TRNG_RNG_AMA_PD_TRNG3_Mask ((uint32_t)0x00008000) 64 #define TRNG_RNG_AMA_PD_ALL_Mask ((uint32_t)0x0000F000) 65 /************ bit definition for TRNG ENABLE REGISTER ************/ 66 #define TRNG_RNG_ENABLE ((uint32_t)0x00000001) 67 68 /** @defgroup RNG_Exported_Functions 69 * @{ 70 */ 71 void TRNG_Start(void); 72 void TRNG_Stop(void); 73 uint32_t TRNG_Get(uint32_t TRNG_Data[4]); 74 void TRNG_SetPseudoRandom(uint32_t TRNG_PseudoRandom);; 75 void TRNG_DirectOutANA(FunctionalState NewState); 76 77 void TRNG_ITConfig(FunctionalState NewState); 78 ITStatus TRNG_GetITStatus(uint32_t TRNG_IT); 79 void TRNG_ClearITPendingBit(uint32_t TRNG_IT); 80 void TRNG_SelectPDSource(TRNG_PDSourceTypeDef TRNG_Source); 81 void TRNG_Out(FunctionalState NewState); 82 #ifdef __cplusplus 83 } 84 #endif 85 86 #endif 87 88 /************************** (C) COPYRIGHT Megahunt *****END OF FILE****/ 89