71 SCUCG->PPCLKEN2_b.FMCLKE = 1;
73 SCUCG->CLKSRCR_b.HIRCEN = 1;
78 SCULV->LVRCR_b.LVREN = 0x00;
79 SCUCC->NMISRCR_b.NMICON = 0;
81 WDT_WINDR = WDT->WINDR;
82 if( WDT->CNT < WDT_WINDR )
84 WDT->CNTR_b.CNTR = 0x6a;
100 SCUCG->PPCLKEN2_b.FMCLKE = 0;
123 volatile uint32_t* pagebuffer;
125 pagebuffer = &FMC->PAGEBUF;
130 FMC->CR = FLASH_CLR_PAGEBUF;
131 for( i = 0 ; i < SECTOR_SIZE_BYTE / 4 ; i++ )
133 if( u32FncSel == FLASH_PAGE_WRITE )
135 *pagebuffer++ = *u32Buf++;
137 else if( ( u32FncSel == FLASH_PAGE_ERASE ) || ( u32FncSel == FLASH_BULK_ERASE ) )
139 *pagebuffer++ = 0xFFFFFFFF;
143 return FLASH_PGM_FAIL;
147 if( ( u32FncSel == FLASH_PAGE_WRITE ) || ( u32FncSel == FLASH_PAGE_ERASE ) )
149 if( u32Addr < FLASH_START_ADDR )
151 FMC->ADR = u32Addr + FLASH_START_ADDR;
158 else if( u32FncSel == FLASH_BULK_ERASE )
160 FMC->BCR = FLASH_CHIPER_WOPT;
165 return FLASH_PGM_FAIL;
168 if( FMC->IDR1 != FLASH_ID1 )
170 return FLASH_PGM_FAIL;
172 if( FMC->IDR2 != FLASH_ID2 )
174 return FLASH_PGM_FAIL;
177 if( ( u32FncSel == FLASH_PAGE_WRITE ) || ( u32FncSel == FLASH_PAGE_ERASE ) )
179 if( ( FMC->ADR >= FLASH_START_ADDR ) && ( FMC->ADR <= FLASH_END_ADDR ) )
181 FMC->CR = FLASH_MEM_PGM_CODE | ( u32FncSel & 0x0000000F );
183 else if( ( FMC->ADR >= CFG_OPT_SADDR ) && ( FMC->ADR <= CFG_OPT_EADDR ) )
185 FMC->CR = FLASH_OPT_PGM_CODE | ( u32FncSel & 0x0000000F );
189 return FLASH_PGM_FAIL;
192 else if( u32FncSel == FLASH_BULK_ERASE )
194 if( FMC->ADR != FLASH_ADDR_CD1 )
196 return FLASH_PGM_FAIL;
198 FMC->CR = FLASH_BULK_CODE;
202 return FLASH_PGM_FAIL;
205 while( FMC->CR_b.FMBUSY ) {}
206 if( !FMC->ERFLAG_b.FMOPFLAG )
208 return FLASH_PGM_GOOD;
211 return FLASH_PGM_FAIL;
229 if( u32UserId == 0x90E832CF )
235 result = FLASH_PGM_FAIL;
240 FMC->ERFLAG = 0x03uL;
265 if( u32UserId == 0xA901358F )
271 result = FLASH_PGM_FAIL;
276 FMC->ERFLAG = 0x03uL;
303 if( u32UserId == 0x4F17DC86 )
309 result = FLASH_PGM_FAIL;
314 FMC->ERFLAG = 0x03uL;
void HAL_FMC_FlashEntry(void)
Entry of Flash Memory Control.
uint32_t flash_addr_code0
uint32_t HAL_FMC_BulkErase(uint32_t u32UserId)
Flash Bulk(Chip) Erase Function.
void HAL_FMC_FlashExit(void)
Exit of Flash Memory Control.
uint32_t HAL_FMC_FlashFunction(uint32_t u32FncSel, uint32_t u32Addr, uint32_t *u32Buf)
Flash Page Erase/Write and Bulk(Chip) Erase.
Contains all macro definitions and function prototypes support for fmc firmware library on A31L12x.
uint32_t HAL_FMC_PageWrite(uint32_t u32UserId, uint32_t u32Addr, uint32_t *u32Buf)
Flash Page Write Function.
uint32_t HAL_FMC_PageErase(uint32_t u32UserId, uint32_t u32Addr)
Flash Page Erase Function.
uint32_t flash_addr_code1