M471M/R1/S BSP V3.01.000
The Board Support Package for M4521
fmc.c
Go to the documentation of this file.
1/**************************************************************************/
8#define __FMC_C__
9
10#include <stdio.h>
11#include "NuMicro.h"
12
41void FMC_SetBootSource(int32_t i32BootSrc)
42{
43 if(i32BootSrc)
44 FMC->ISPCTL |= FMC_ISPCTL_BS_Msk; /* Boot from LDROM */
45 else
46 FMC->ISPCTL &= ~FMC_ISPCTL_BS_Msk;/* Boot from APROM */
47}
48
49
60void FMC_Close(void)
61{
62 FMC->ISPCTL &= ~FMC_ISPCTL_ISPEN_Msk;
63}
64
65
78{
79 FMC->ISPCTL &= ~FMC_ISPCTL_APUEN_Msk;
80}
81
82
94{
95 FMC->ISPCTL &= ~FMC_ISPCTL_CFGUEN_Msk;
96}
97
98
110{
111 FMC->ISPCTL &= ~FMC_ISPCTL_LDUEN_Msk;
112}
113
114
126{
127 FMC->ISPCTL |= FMC_ISPCTL_APUEN_Msk;
128}
129
130
142{
143 FMC->ISPCTL |= FMC_ISPCTL_CFGUEN_Msk;
144}
145
146
158{
159 FMC->ISPCTL |= FMC_ISPCTL_LDUEN_Msk;
160}
161
162
174int32_t FMC_GetBootSource(void)
175{
176 if(FMC->ISPCTL & FMC_ISPCTL_BS_Msk)
177 return 1;
178 else
179 return 0;
180}
181
182
196void FMC_Open(void)
197{
198 FMC->ISPCTL |= FMC_ISPCTL_ISPEN_Msk;
199}
200
212{
213 return FMC->DFBA;
214}
215
216
230int32_t FMC_ReadConfig(uint32_t *u32Config, uint32_t u32Count)
231{
232 int32_t i;
233
234 for(i = 0; i < u32Count; i++)
235 u32Config[i] = FMC_Read(FMC_CONFIG_BASE + i * 4);
236
237 return 0;
238}
239
240
255int32_t FMC_WriteConfig(uint32_t *u32Config, uint32_t u32Count)
256{
257 int32_t i;
258
259 for(i = 0; i < u32Count; i++)
260 {
261 FMC_Write(FMC_CONFIG_BASE + i * 4, u32Config[i]);
262 if(FMC_Read(FMC_CONFIG_BASE + i * 4) != u32Config[i])
263 return -1;
264 }
265
266 return 0;
267}
268
286void FMC_EnableFreqOptimizeMode(uint32_t u32Mode)
287{
288 FMC->FTCTL &= ~FMC_FTCTL_FOM_Msk;
289 FMC->FTCTL |= (u32Mode << FMC_FTCTL_FOM_Pos);
290}
291
305{
306 FMC->FTCTL &= ~FMC_FTCTL_FOM_Msk;
307}
308 /* end of group FMC_EXPORTED_FUNCTIONS */
310 /* end of group FMC_Driver */
312 /* end of group Standard_Driver */
314
315
#define FMC_ISPCTL_BS_Msk
Definition: M471M_R1_S.h:2367
#define FMC_ISPCTL_APUEN_Msk
Definition: M471M_R1_S.h:2370
#define FMC_ISPCTL_CFGUEN_Msk
Definition: M471M_R1_S.h:2373
#define FMC_FTCTL_FOM_Pos
Definition: M471M_R1_S.h:2399
#define FMC_ISPCTL_ISPEN_Msk
Definition: M471M_R1_S.h:2364
#define FMC_ISPCTL_LDUEN_Msk
Definition: M471M_R1_S.h:2376
NuMicro peripheral access layer header file.
#define FMC_CONFIG_BASE
Definition: fmc.h:47
void FMC_DisableLDUpdate(void)
Disable LDROM update function.
Definition: fmc.c:109
void FMC_Close(void)
Disable ISP Functions.
Definition: fmc.c:60
void FMC_EnableLDUpdate(void)
Enable LDROM update function.
Definition: fmc.c:157
int32_t FMC_ReadConfig(uint32_t *u32Config, uint32_t u32Count)
Read the User Configuration words.
Definition: fmc.c:230
void FMC_DisableFreqOptimizeMode(void)
Disable Flash Access Frequency Optimization Mode.
Definition: fmc.c:304
void FMC_EnableAPUpdate(void)
Enable APROM update function.
Definition: fmc.c:125
static __INLINE void FMC_Write(uint32_t u32Addr, uint32_t u32Data)
Program 32-bit data into specified address of flash.
Definition: fmc.h:242
uint32_t FMC_ReadDataFlashBaseAddr(void)
Get the base address of Data Flash if enabled.
Definition: fmc.c:211
void FMC_EnableFreqOptimizeMode(uint32_t u32Mode)
Enable Flash Access Frequency Optimization Mode.
Definition: fmc.c:286
void FMC_SetBootSource(int32_t i32BootSrc)
Set boot source from LDROM or APROM after next software reset.
Definition: fmc.c:41
void FMC_DisableAPUpdate(void)
Disable APROM update function.
Definition: fmc.c:77
int32_t FMC_GetBootSource(void)
Get the current boot source.
Definition: fmc.c:174
int32_t FMC_WriteConfig(uint32_t *u32Config, uint32_t u32Count)
Write User Configuration.
Definition: fmc.c:255
void FMC_DisableConfigUpdate(void)
Disable User Configuration update function.
Definition: fmc.c:93
void FMC_Open(void)
Enable FMC ISP function.
Definition: fmc.c:196
void FMC_EnableConfigUpdate(void)
Enable User Configuration update function.
Definition: fmc.c:141
static __INLINE uint32_t FMC_Read(uint32_t u32Addr)
Read 32-bit Data from specified address of flash.
Definition: fmc.h:303
#define FMC
Definition: M471M_R1_S.h:13828