/** ****************************************************************************** * @file fm33a0xxev_rng.h * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file contains all the functions prototypes for the RNG firmware library. ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FM33A0XXEV_RNG_H #define __FM33A0XXEV_RNG_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "FM33A0XXEV.h" #define RNG_CR_EN_Pos 0 /* RNGʹÄܼĴæÆ÷£¬Èí¼þд1Æô¶¯ (RNG enable) 1£ºÆô¶¯RNG 0£º¹Ø±ÕRNG */ #define RNG_CR_EN_Msk (0x1U << RNG_CR_EN_Pos) /* Æô¶¯RNG */ /* ¹Ø±ÕRNG */ #define RNG_DOR_OUT_Pos 0 /* Ëæ»úÊýÉú³É½á¹û»òCRCÔËËã½á¹û¼Ä´æÆ÷£¬Ö»¶Á (RNG output) */ #define RNG_DOR_OUT_Msk (0xffffffffU << RNG_DOR_OUT_Pos) #define RNG_SR_LFSREN_Pos 1 /* LFSR״̬±êÖ¾£¬Ö»¶Á (LFSR enable) 1£ºLFSRÔÚÔËÐÐÖУ¬²»¿É½øÐÐCRCÑéÖ¤ 0£ºLFSR²»ÔÚÔËÐÐÖУ¬¿É½øÐÐCRCÑéÖ¤ ×¢£º±¾¼Ä´æÆ÷²»»áÒýÆðÄ£¿éÖжϣ¬½ö¹©²éѯ */ #define RNG_SR_LFSREN_Msk (0x1U << RNG_SR_LFSREN_Pos) /* LFSRÔÚÔËÐÐÖУ¬²»¿É½øÐÐCRCÑéÖ¤ */ /* LFSR²»ÔÚÔËÐÐÖУ¬¿É½øÐÐCRCÑéÖ¤ */ /* ±¾¼Ä´æÆ÷²»»áÒýÆðÄ£¿éÖжϣ¬½ö¹©²éѯ */ #define RNG_SR_RNF_Pos 0 /* Ëæ»úÊýÉú³Éʧ°Ü±êÖ¾£¬Èí¼þд1ÇåÁã (Random Number Fail) 1£ºËæ»úÊýδÄÜͨ¹ýÖÊÁ¿¼ì²â 0£ºËæ»úÊýͨ¹ýÖÊÁ¿¼ì²â */ #define RNG_SR_RNF_Msk (0x1U << RNG_SR_RNF_Pos) #define RNG_CRC_CR_CRCEN_Pos 0 /* CRCʹÄÜ¿ØÖƼĴæÆ÷£¬Èí¼þд1Æô¶¯CRC£¬ÔËËãÍê³ÉºóÓ²¼þ×Ô¶¯ÇåÁã (CRC enable) 1£ºCRCʹÄÜ 0£ºCRC¹Ø±Õ */ #define RNG_CRC_CR_CRCEN_Msk (0x1U << RNG_CRC_CR_CRCEN_Pos) /* CRCʹÄÜ */ /* CRC¹Ø±Õ */ #define RNG_CRC_DIR_CRCIN_Pos 0 /* CRCÔËËãÊý¾ÝÊäÈë¼Ä´æÆ÷ (CRC data input) */ #define RNG_CRC_DIR_CRCIN_Msk (0xffffffffU << RNG_CRC_DIR_CRCIN_Pos) #define RNG_CRC_SR_CRCDONE_Pos 0 /* CRC¼ÆËãÍê³É±êÖ¾£¬Èí¼þд0ÇåÁã (CRC calculation done) 1£ºCRC¼ÆËãÍê³É 0£ºCRC¼ÆËãδÍê³É */ #define RNG_CRC_SR_CRCDONE_Msk (0x1U << RNG_CRC_SR_CRCDONE_Pos) //Macro_End /* Exported functions --------------------------------------------------------*/ extern void RNG_Deinit(void); /* RNGʹÄܼĴæÆ÷£¬Èí¼þд1Æô¶¯ (RNG enable) 1£ºÆô¶¯RNG 0£º¹Ø±ÕRNG Ïà¹Øº¯Êý */ extern void RNG_CR_EN_Setable(FunState NewState); extern FunState RNG_CR_EN_Getable(void); /* Ëæ»úÊýÉú³É½á¹û»òCRCÔËËã½á¹û¼Ä´æÆ÷£¬Ö»¶Á (RNG output) Ïà¹Øº¯Êý */ extern uint32_t RNG_DOR_Read(void); /* LFSR״̬±êÖ¾£¬Ö»¶Á (LFSR enable) 1£ºLFSRÔÚÔËÐÐÖУ¬²»¿É½øÐÐCRCÑéÖ¤ 0£ºLFSR²»ÔÚÔËÐÐÖУ¬¿É½øÐÐCRCÑéÖ¤ ×¢£º±¾¼Ä´æÆ÷²»»áÒýÆðÄ£¿éÖжϣ¬½ö¹©²éѯ Ïà¹Øº¯Êý */ extern FlagStatus RNG_SR_LFSREN_Chk(void); /* Ëæ»úÊýÉú³Éʧ°Ü±êÖ¾£¬Èí¼þд1ÇåÁã (Random Number Fail) 1£ºËæ»úÊýδÄÜͨ¹ýÖÊÁ¿¼ì²â 0£ºËæ»úÊýͨ¹ýÖÊÁ¿¼ì²â Ïà¹Øº¯Êý */ extern void RNG_SR_RNF_Clr(void); extern FlagStatus RNG_SR_RNF_Chk(void); /* CRCʹÄÜ¿ØÖƼĴæÆ÷£¬Èí¼þд1Æô¶¯CRC£¬ÔËËãÍê³ÉºóÓ²¼þ×Ô¶¯ÇåÁã (CRC enable) 1£ºCRCʹÄÜ 0£ºCRC¹Ø±Õ Ïà¹Øº¯Êý */ extern void RNG_CRC_CR_CRCEN_Setable(FunState NewState); extern FunState RNG_CRC_CR_CRCEN_Getable(void); /* CRCÔËËãÊý¾ÝÊäÈë¼Ä´æÆ÷ (CRC data input) Ïà¹Øº¯Êý */ extern void RNG_CRC_DIR_Write(uint32_t SetValue); extern uint32_t RNG_CRC_DIR_Read(void); /* CRC¼ÆËãÍê³É±êÖ¾£¬Èí¼þд0ÇåÁã (CRC calculation done) 1£ºCRC¼ÆËãÍê³É 0£ºCRC¼ÆËãδÍê³É Ïà¹Øº¯Êý */ extern void RNG_CRC_SR_CRCDONE_Clr(void); extern FlagStatus RNG_CRC_SR_CRCDONE_Chk(void); //Announce_End #ifdef __cplusplus } #endif #endif /* __FM33A0XXEV_RNG_H */