forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-23 e5ec6ffc2fa0c07785c9d797c3fd74fd3031059f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/**
  ******************************************************************************
  * @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 */