/******************************************************** * Function for erasing of flash memory sector (0x800) * ********************************************************/ LWord FLASH_EraseSector(LWord destination) { LWord ret = 0, value = 0; CommandObj.regsLong.fccob3210 = destination; CommandObj.regs.fccob0 = FLASH_ERASE_SECTOR; #if defined(KINETIS_E) ret = FLASH_FlashCommandSequenceStart(ERASE_BLOCK_INDEX); #else ret = FLASH_FlashCommandSequenceStart(ERASE_BLOCK_INDEX); #endif /* //Unlock the sec bit if((destination >= 0x400)&&(destination < 0x800)) { if(HWFSEC == LOCK_MCU) { value = 0xFFFFFFFD; FLASH_ProgramLongWord(0x40C,value); } else { value = 0xFFFFFFFE; FLASH_ProgramLongWord(0x40C,value); } } */ return ret; }
/******************************************************** * Function for erasing of flash memory sector (0x800) * ********************************************************/ LWord FLASH_EraseSector(LWord destination) { CommandObj.regsLong.fccob3210 = destination; CommandObj.regs.fccob0 = FLASH_ERASE_SECTOR; #if defined(KINETIS_E) return FLASH_FlashCommandSequenceStart(ERASE_BLOCK_INDEX); #else return FLASH_FlashCommandSequenceStart(ERASE_BLOCK_INDEX); #endif }
/******************************************************** * Function for Programming of one Long Word * ********************************************************/ LWord FLASH_ProgramLongWord(LWord destination, LWord data32b) { /* preparing passing parameter to program the flash block */ CommandObj.regsLong.fccob3210 = destination; CommandObj.regs.fccob0 = FLASH_PROGRAM_LONGWORD; CommandObj.regsLong.fccob7654 = data32b; #if defined(KINETIS_E) return FLASH_FlashCommandSequenceStart(PROGRAM_LONGWORD_INDEX); #else return FLASH_FlashCommandSequenceStart(PROGRAM_LONGWORD_INDEX); #endif }
/******************************************************** * Function for Programming of one Long Word * ********************************************************/ LWord FLASH_ProgramPhrase(LWord destination, LWord * data64b) { /* preparing passing parameter to program the flash block */ CommandObj.regsLong.fccob3210 = destination; CommandObj.regs.fccob0 = FLASH_PROGRAM_PHRASE; CommandObj.regsLong.fccob7654 = data64b[0]; CommandObj.regsLong.fccobBA98 = data64b[1]; return FLASH_FlashCommandSequenceStart(PROGRAM_PHRASE_INDEX); }
/******************************************************** * Function for Programming of one Long Word * ********************************************************/ LWord FLASH_ProgramLongWord(LWord destination, LWord data32b) { /* preparing passing parameter to program the flash block */ CommandObj.regsLong.fccob3210 = destination; CommandObj.regs.fccob0 = FLASH_PROGRAM_LONGWORD; CommandObj.regsLong.fccob7654 = data32b; /* if(destination == 0x500) { CommandObj.regsLong.fccob7654 = 0x9804B003; } */ return FLASH_FlashCommandSequenceStart(PROGRAM_LONGWORD_INDEX); }