/**
|
******************************************************************************
|
* @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 */
|