forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-11 65062d0d5b21f838aa0043a15ce54cfab8d72c43
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/**
  ******************************************************************************
  * @file    fm33a0xxev_svd.h
  * @author  FM33A0XXEV Application Team
  * @version V1.0.0
  * @date    16-April-2020
  * @brief   This file contains all the functions prototypes for the SVD firmware library.  
  ******************************************************************************
  */
  
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __FM33A0XXEV_SVD_H
#define __FM33A0XXEV_SVD_H
 
 
#ifdef __cplusplus
 extern "C" {
#endif
 
/* Includes ------------------------------------------------------------------*/
   
#include "FM33A0XXEV.h"
 
typedef struct
{
    uint32_t    SVDMOD;        /*!<SVD¹¤×÷ģʽѡÔñ  */
    uint32_t    SVDITVL;    /*!<SVD¼äЪʹÄܼä¸ô  */
    uint32_t    SVDLVL;        /*!<SVD±¨¾¯ãÐÖµÉèÖà */
    FunState    DFEN;        /*!<SVDÊý×ÖÂ˲¨£¨SVDMODE=1ʱ±ØÐëÖÃ1£©  */
    FunState    PFIE;        /*!<SVDµçÔ´µøÂäÖжϠ */
    FunState    PRIE;        /*!<SVDµçÔ´»Ö¸´ÖжϠ */
    FunState    SVDEN;        /*!<SVDʹÄÜ  */
    
}SVD_InitTypeDef;
 
#define    SVD_CFGR_LVL_Pos    4    /* SVD±¨¾¯ãÐÖµµµÎ»ÉèÖ㬲μû11.3.3¼ì²âãÐÖµ
(SVD threshold level) */
#define    SVD_CFGR_LVL_Msk    (0xfU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_1P800V    (0x0U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_2P014V    (0x1U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_2P229V    (0x2U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_2P443V    (0x3U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_2P657V    (0x4U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_2P871V    (0x5U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_3P086V    (0x6U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_3P300V    (0x7U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_3P514V    (0x8U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_3P729V    (0x9U << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_3P943V    (0xaU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_4P157V    (0xbU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_4P371V    (0xcU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_4P586V    (0xdU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_4P800V    (0xeU << SVD_CFGR_LVL_Pos)
#define    SVD_CFGR_LVL_SVS    (0xfU << SVD_CFGR_LVL_Pos)
 
#define    SVD_CFGR_DFEN_Pos    3    /* Êý×ÖÂ˲¨Ê¹ÄÜ£¨MOD=1ʱ±ØÐëÖÃ1£©
(Digital Filter Enable)
1£ºÆô¶¯SVDÊä³öµÄÊý×ÖÂ˲¨
0£º¹Ø±ÕSVDÊä³öµÄÊý×ÖÂ˲¨ */
#define    SVD_CFGR_DFEN_Msk    (0x1U << SVD_CFGR_DFEN_Pos)
    /* Æô¶¯SVDÊä³öµÄÊý×ÖÂ˲¨ */
    /* ¹Ø±ÕSVDÊä³öµÄÊý×ÖÂ˲¨ */
 
#define    SVD_CFGR_MOD_Pos    2    /* SVD¹¤×÷ģʽѡÔñ£¬ÅäÖÃģʽºó»¹ÒªÖÃλSVD_CR.EN²Å»áÆô¶¯SVD
(SVD Mode)
1£º¼äЪʹÄÜģʽ
0£º³£Ê¹ÄÜģʽ
×¢Ò⣺¼äЪʹÄÜģʽϱØÐ뿪ÆôÊý×ÖÂ˲¨ */
#define    SVD_CFGR_MOD_Msk    (0x1U << SVD_CFGR_MOD_Pos)
#define    SVD_CFGR_MOD_INTERVAL    (0x1U << SVD_CFGR_MOD_Pos)    /* ¼äЪʹÄÜģʽ */
#define    SVD_CFGR_MOD_ALWAYSON    (0x0U << SVD_CFGR_MOD_Pos)    /* ³£Ê¹ÄÜģʽ */
 
#define    SVD_CFGR_ITVL_Pos    0    /* SVD¼äЪʹÄܼä¸ô (SVD interval enable period)
00£º62.5ms
01£º256ms
10£º1s
11£º4s */
#define    SVD_CFGR_ITVL_Msk    (0x3U << SVD_CFGR_ITVL_Pos)
#define    SVD_CFGR_ITVL_62P5MS    (0x0U << SVD_CFGR_ITVL_Pos)    /* 62.5ms */
#define    SVD_CFGR_ITVL_256MS    (0x1U << SVD_CFGR_ITVL_Pos)    /* 256ms */
#define    SVD_CFGR_ITVL_1S    (0x2U << SVD_CFGR_ITVL_Pos)    /* 1s */
#define    SVD_CFGR_ITVL_4S    (0x3U << SVD_CFGR_ITVL_Pos)    /* 4s */
    /* 62.5ms */
    /* 256ms */
    /* 1s */
    /* 4s */
#define    SVD_CR_TE_Pos    8    /* SVD²âÊÔʹÄÜ£¬±ÜÃâд1 (SVD test enable) */
#define    SVD_CR_TE_Msk    (0x1U << SVD_CR_TE_Pos)
 
#define    SVD_CR_SVSEN_Pos    1    /* SVSÍⲿµçÔ´¼ì²âͨµÀ¿ØÖÆÐźŠ
(SVS external monitor channel enable)
0£ºSVSͨµÀ¹Ø±Õ
1£ºSVSͨµÀʹÄÜ
µ±EN=1ʱ£¬¸ù¾ÝSVDLVL¼Ä´æÆ÷¿ÉÒÔÉèÖÃSVSÊäÈëºóÊÇ·ñ¾­¹ýÄÚ²¿µç×è·Öѹ£»Èç¹ûLVL=1111£¬ÔòSVSÊäÈë²»×ö·Öѹ£¬Èç¹ûLVL != 1111£¬ÔòSVSÊäÈë¾­¹ýÄÚ²¿µç×è·Öѹ¡£ */
#define    SVD_CR_SVSEN_Msk    (0x1U << SVD_CR_SVSEN_Pos)
    /* SVSͨµÀ¹Ø±Õ */
    /* SVSͨµÀʹÄÜ */
 
#define    SVD_CR_SVDEN_Pos    0
#define    SVD_CR_SVDEN_Msk    (0x1U << SVD_CR_SVDEN_Pos)
 
#define    SVD_IER_PFIE_Pos    1    /* µçÔ´µøÂäÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Fall interrupt enable) */
#define    SVD_IER_PFIE_Msk    (0x1U << SVD_IER_PFIE_Pos)
 
#define    SVD_IER_PRIE_Pos    0    /* µçÔ´»Ö¸´ÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Rise interrupt enable) */
#define    SVD_IER_PRIE_Msk    (0x1U << SVD_IER_PRIE_Pos)
 
#define    SVD_ISR_SVDO_Pos    8    /* SVDµçÔ´¼ì²âÊä³ö (SVD output)
1£ºµçÔ´µçѹ¸ßÓÚSVDµ±Ç°ãÐÖµ
0£ºµçÔ´µçѹµÍÓÚSVDµ±Ç°ãÐÖµ */
#define    SVD_ISR_SVDO_Msk    (0x1U << SVD_ISR_SVDO_Pos)
 
#define    SVD_ISR_SVDR_Pos    7    /* SVDÊä³öËø´æÐźţ¬Êý×ÖµçÂ·Ëø´æµÄSVD״̬
(SVD registered output) */
#define    SVD_ISR_SVDR_Msk    (0x1U << SVD_ISR_SVDR_Pos)
 
#define    SVD_ISR_PFF_Pos    1    /* µçÔ´µøÂäÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹµøÂäµ½SVDãÐÖµÖ®ÏÂʱÖÃ룬Èí¼þд1ÇåÁã (Power fall flag) */
#define    SVD_ISR_PFF_Msk    (0x1U << SVD_ISR_PFF_Pos)
 
#define    SVD_ISR_PRF_Pos    0    /* µçÔ´»Ö¸´ÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹÉÏÉýµ½SVDãÐÖµÖ®ÉÏʱÖÃ룬Èí¼þд1ÇåÁã (Power rise flag) */
#define    SVD_ISR_PRF_Msk    (0x1U << SVD_ISR_PRF_Pos)
 
#define    SVD_VSR_V1P0EN_Pos    2    /* 1.0V»ù×¼ÊäÈëʹÄÜÐźŠ(1.0V reference enable)
1£ºÊ¹ÄÜ1.0V»ù×¼ÊäÈë
0£º¹Ø±Õ1.0V»ù×¼ÊäÈë */
#define    SVD_VSR_V1P0EN_Msk    (0x1U << SVD_VSR_V1P0EN_Pos)
 
#define    SVD_VSR_V0P95EN_Pos    1    /* 0.95V»ù×¼ÊäÈëʹÄÜÐźŠ(0.95V reference enable)
1£ºÊ¹ÄÜ0.95V»ù×¼ÊäÈë
0£º¹Ø±Õ0.95V»ù×¼ÊäÈë */
#define    SVD_VSR_V0P95EN_Msk    (0x1U << SVD_VSR_V0P95EN_Pos)
 
#define    SVD_VSR_V0P9EN_Pos    0    /* 0.9V»ù×¼ÊäÈëʹÄÜÐźŠ(0.9V reference enable)
1£ºÊ¹ÄÜ0.9V»ù×¼ÊäÈë
0£º¹Ø±Õ0.9V»ù×¼ÊäÈë */
#define    SVD_VSR_V0P9EN_Msk    (0x1U << SVD_VSR_V0P9EN_Pos)
//Macro_End
 
/* Exported functions --------------------------------------------------------*/ 
extern void SVD_Deinit(void);
 
/* SVD±¨¾¯ãÐÖµµµÎ»ÉèÖ㬲μû11.3.3¼ì²âãÐÖµ
(SVD threshold level) Ïà¹Øº¯Êý */
extern void SVD_CFGR_LVL_Set(uint32_t SetValue);
extern uint32_t SVD_CFGR_LVL_Get(void);
 
/* Êý×ÖÂ˲¨Ê¹ÄÜ£¨MOD=1ʱ±ØÐëÖÃ1£©
(Digital Filter Enable)
1£ºÆô¶¯SVDÊä³öµÄÊý×ÖÂ˲¨
0£º¹Ø±ÕSVDÊä³öµÄÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */
extern void SVD_CFGR_DFEN_Setable(FunState NewState);
extern FunState SVD_CFGR_DFEN_Getable(void);
 
/* SVD¹¤×÷ģʽѡÔñ£¬ÅäÖÃģʽºó»¹ÒªÖÃλSVD_CR.EN²Å»áÆô¶¯SVD
(SVD Mode)
1£º¼äЪʹÄÜģʽ
0£º³£Ê¹ÄÜģʽ
×¢Ò⣺¼äЪʹÄÜģʽϱØÐ뿪ÆôÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */
extern void SVD_CFGR_MOD_Set(uint32_t SetValue);
extern uint32_t SVD_CFGR_MOD_Get(void);
 
/* SVD¼äЪʹÄܼä¸ô (SVD interval enable period)
00£º62.5ms
01£º256ms
10£º1s
11£º4s Ïà¹Øº¯Êý */
extern void SVD_CFGR_ITVL_Set(uint32_t SetValue);
extern uint32_t SVD_CFGR_ITVL_Get(void);
 
/* SVSÍⲿµçÔ´¼ì²âͨµÀ¿ØÖÆÐźŠ
(SVS external monitor channel enable)
0£ºSVSͨµÀ¹Ø±Õ
1£ºSVSͨµÀʹÄÜ
µ±EN=1ʱ£¬¸ù¾ÝSVDLVL¼Ä´æÆ÷¿ÉÒÔÉèÖÃSVSÊäÈëºóÊÇ·ñ¾­¹ýÄÚ²¿µç×è·Öѹ£»Èç¹ûLVL=1111£¬ÔòSVSÊäÈë²»×ö·Öѹ£¬Èç¹ûLVL != 1111£¬ÔòSVSÊäÈë¾­¹ýÄÚ²¿µç×è·Öѹ¡£ Ïà¹Øº¯Êý */
extern void SVD_CR_SVSEN_Setable(FunState NewState);
extern FunState SVD_CR_SVSEN_Getable(void);
extern void SVD_CR_SVDEN_Setable(FunState NewState);
extern FunState SVD_CR_SVDEN_Getable(void);
 
/* µçÔ´µøÂäÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Fall interrupt enable) Ïà¹Øº¯Êý */
extern void SVD_IER_PFIE_Setable(FunState NewState);
extern FunState SVD_IER_PFIE_Getable(void);
 
/* µçÔ´»Ö¸´ÖжÏʹÄܼĴæÆ÷£¬1ÓÐЧ (Power Rise interrupt enable) Ïà¹Øº¯Êý */
extern void SVD_IER_PRIE_Setable(FunState NewState);
extern FunState SVD_IER_PRIE_Getable(void);
 
/* SVDµçÔ´¼ì²âÊä³ö (SVD output)
1£ºµçÔ´µçѹ¸ßÓÚSVDµ±Ç°ãÐÖµ
0£ºµçÔ´µçѹµÍÓÚSVDµ±Ç°ãÐÖµ Ïà¹Øº¯Êý */
extern FlagStatus SVD_ISR_SVDO_Chk(void);
 
/* SVDÊä³öËø´æÐźţ¬Êý×ÖµçÂ·Ëø´æµÄSVD״̬
(SVD registered output) Ïà¹Øº¯Êý */
extern FlagStatus SVD_ISR_SVDR_Chk(void);
 
/* µçÔ´µøÂäÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹµøÂäµ½SVDãÐÖµÖ®ÏÂʱÖÃ룬Èí¼þд1ÇåÁã (Power fall flag) Ïà¹Øº¯Êý */
extern void SVD_ISR_PFF_Clr(void);
extern FlagStatus SVD_ISR_PFF_Chk(void);
 
/* µçÔ´»Ö¸´ÖжϱêÖ¾¼Ä´æÆ÷£¬µçÔ´µçѹÉÏÉýµ½SVDãÐÖµÖ®ÉÏʱÖÃ룬Èí¼þд1ÇåÁã (Power rise flag) Ïà¹Øº¯Êý */
extern void SVD_ISR_PRF_Clr(void);
extern FlagStatus SVD_ISR_PRF_Chk(void);
 
/* 1.0V»ù×¼ÊäÈëʹÄÜÐźŠ(1.0V reference enable)
1£ºÊ¹ÄÜ1.0V»ù×¼ÊäÈë
0£º¹Ø±Õ1.0V»ù×¼ÊäÈë Ïà¹Øº¯Êý */
extern void SVD_VSR_V1P0EN_Setable(FunState NewState);
extern FunState SVD_VSR_V1P0EN_Getable(void);
 
/* 0.95V»ù×¼ÊäÈëʹÄÜÐźŠ(0.95V reference enable)
1£ºÊ¹ÄÜ0.95V»ù×¼ÊäÈë
0£º¹Ø±Õ0.95V»ù×¼ÊäÈë Ïà¹Øº¯Êý */
extern void SVD_VSR_V0P95EN_Setable(FunState NewState);
extern FunState SVD_VSR_V0P95EN_Getable(void);
 
/* 0.9V»ù×¼ÊäÈëʹÄÜÐźŠ(0.9V reference enable)
1£ºÊ¹ÄÜ0.9V»ù×¼ÊäÈë
0£º¹Ø±Õ0.9V»ù×¼ÊäÈë Ïà¹Øº¯Êý */
extern void SVD_VSR_V0P9EN_Setable(FunState NewState);
extern FunState SVD_VSR_V0P9EN_Getable(void);
 
extern void SVD_Init(SVD_InitTypeDef* para);
//Announce_End
#ifdef __cplusplus
}
#endif
 
#endif /* __FM33A0XXEV_SVD_H */