EFM32 Giant Gecko Software Documentation  efm32gg-doc-5.1.2
em_msc.h File Reference

Detailed Description

Flash controller (MSC) peripheral API.

Version
5.1.2

License

Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no obligation to support this Software. Silicon Labs is providing the Software "AS IS", with no express or implied warranties of any kind, including, but not limited to, any implied warranties of merchantability or fitness for any particular purpose or warranties against infringement of any proprietary rights of a third party.

Silicon Labs will not be liable for any consequential, incidental, or special damages, or any other relief, or for any claim by any third party, arising from your use of this Software.

Definition in file em_msc.h.

#include "em_device.h"
#include <stdint.h>
#include <stdbool.h>
#include "em_bus.h"
#include "em_ramfunc.h"

Go to the source code of this file.

Data Structures

struct  MSC_ExecConfig_TypeDef
 

Macros

#define EM_MSC_RUN_FROM_FLASH
 By compiling with the define EM_MSC_RUN_FROM_FLASH, the functions performing erase or write operations will remain in and execute from Flash. This is useful for targets that don't want to allocate RAM space to hold the flash functions. Without this define, code for Flash operations will be copied into RAM at startup. More...
 
#define MSC_EXECCONFIG_DEFAULT
 
#define MSC_PROGRAM_TIMEOUT   10000000ul
 The timeout used while waiting for the flash to become ready after a write. This number indicates the number of iterations to perform before issuing a timeout. More...
 
#define MSC_RAMFUNC_DECLARATOR
 Expands to SL_RAMFUNC_DECLARATOR if EM_MSC_RUN_FROM_FLASH is undefined and to nothing if EM_MSC_RUN_FROM_FLASH is defined.
 
#define MSC_RAMFUNC_DEFINITION_BEGIN
 Expands to SL_RAMFUNC_DEFINITION_BEGIN if EM_MSC_RUN_FROM_FLASH is undefined and to nothing if EM_MSC_RUN_FROM_FLASH is defined.
 
#define MSC_RAMFUNC_DEFINITION_END
 Expands to SL_RAMFUNC_DEFINITION_END if EM_MSC_RUN_FROM_FLASH is undefined and to nothing if EM_MSC_RUN_FROM_FLASH is defined.
 

Enumerations

enum  MSC_BusStrategy_Typedef {
  mscBusStrategyCPU = MSC_READCTRL_BUSSTRATEGY_CPU,
  mscBusStrategyDMA = MSC_READCTRL_BUSSTRATEGY_DMA,
  mscBusStrategyDMAEM1 = MSC_READCTRL_BUSSTRATEGY_DMAEM1,
  mscBusStrategyNone = MSC_READCTRL_BUSSTRATEGY_NONE
}
 
enum  MSC_Status_TypeDef {
  mscReturnOk = 0,
  mscReturnInvalidAddr = -1,
  mscReturnLocked = -2,
  mscReturnTimeOut = -3,
  mscReturnUnaligned = -4
}
 

Functions

__STATIC_INLINE void MSC_BusStrategy (mscBusStrategy_Typedef mode)
 Configure which unit should get priority on system bus. More...
 
void MSC_Deinit (void)
 Disables the flash controller for writing.
 
__STATIC_INLINE void MSC_EnableAutoCacheFlush (bool enable)
 Enable or disable instruction cache flushing when writing to flash. More...
 
__STATIC_INLINE void MSC_EnableCache (bool enable)
 Enable or disable instruction cache functionality. More...
 
__STATIC_INLINE void MSC_EnableCacheIRQs (bool enable)
 Enable or disable instruction cache functionality in IRQs. More...
 
MSC_RAMFUNC_DECLARATOR MSC_Status_TypeDef MSC_ErasePage (uint32_t *startAddress)
 Erases a page in flash memory. More...
 
void MSC_ExecConfigSet (MSC_ExecConfig_TypeDef *execConfig)
 Set MSC code execution configuration. More...
 
__STATIC_INLINE void MSC_FlushCache (void)
 Flush the contents of the instruction cache.
 
__STATIC_INLINE int32_t MSC_GetCacheMeasurement (void)
 Stops measuring the hit rate. More...
 
void MSC_Init (void)
 Enables the flash controller for writing. More...
 
__STATIC_INLINE void MSC_IntClear (uint32_t flags)
 Clear one or more pending MSC interrupts. More...
 
__STATIC_INLINE void MSC_IntDisable (uint32_t flags)
 Disable one or more MSC interrupts. More...
 
__STATIC_INLINE void MSC_IntEnable (uint32_t flags)
 Enable one or more MSC interrupts. More...
 
__STATIC_INLINE uint32_t MSC_IntGet (void)
 Get pending MSC interrupt flags. More...
 
__STATIC_INLINE uint32_t MSC_IntGetEnabled (void)
 Get enabled and pending MSC interrupt flags. Useful for handling more interrupt sources in the same interrupt handler. More...
 
__STATIC_INLINE void MSC_IntSet (uint32_t flags)
 Set one or more pending MSC interrupts from SW. More...
 
MSC_RAMFUNC_DECLARATOR MSC_Status_TypeDef MSC_MassErase (void)
 Erase entire flash in one operation. More...
 
__STATIC_INLINE void MSC_StartCacheMeasurement (void)
 Starts measuring cache hit ratio. More...
 
MSC_RAMFUNC_DECLARATOR MSC_Status_TypeDef MSC_WriteWord (uint32_t *address, void const *data, uint32_t numBytes)
 Writes data to flash memory. This function is interrupt safe, but slower than MSC_WriteWordFast(), which writes to flash with interrupts disabled. Write data must be aligned to words and contain a number of bytes that is divisable by four. More...
 
MSC_RAMFUNC_DECLARATOR MSC_Status_TypeDef MSC_WriteWordFast (uint32_t *address, void const *data, uint32_t numBytes)
 Writes data to flash memory. This function is faster than MSC_WriteWord(), but it disables interrupts. Write data must be aligned to words and contain a number of bytes that is divisable by four. More...