EFM32 Leopard Gecko Software Documentation  efm32lg-doc-4.2.1
em_msc.h File Reference

Flash controller module (MSC) peripheral API. More...

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

Go to the source code of this file.

Data Structures

struct  MSC_ExecConfig_TypeDef
 

Macros

#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 EM_MSC_RUN_FROM_FLASH
 By compiling with the define EM_MSC_RUN_FROM_FLASH the Flash controller (MSC) peripheral 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 the MSC peripheral functions will be copied into and run out of RAM. More...
 
#define MSC_EXECCONFIG_DEFAULT
 
#define MSC_FUNC_PREFIX
 
#define MSC_FUNC_POSTFIX
 

Enumerations

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

Functions

void MSC_Init (void)
 Enables the flash controller for writing. More...
 
void MSC_Deinit (void)
 Disables the flash controller for writing.
 
void MSC_ExecConfigSet (MSC_ExecConfig_TypeDef *execConfig)
 Set MSC code execution configuration. 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...
 
__STATIC_INLINE void MSC_StartCacheMeasurement (void)
 Starts measuring cache hit ratio. More...
 
__STATIC_INLINE int32_t MSC_GetCacheMeasurement (void)
 Stops measuring the hit rate. More...
 
__STATIC_INLINE void MSC_FlushCache (void)
 Flush the contents of the instruction cache.
 
__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...
 
__STATIC_INLINE void MSC_EnableAutoCacheFlush (bool enable)
 Enable or disable instruction cache flushing when writing to flash. More...
 
__STATIC_INLINE void MSC_BusStrategy (mscBusStrategy_Typedef mode)
 Configure which unit should get priority on system bus. More...
 
MSC_FUNC_PREFIX 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_FUNC_PREFIX 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...
 
MSC_FUNC_PREFIX MSC_Status_TypeDef MSC_ErasePage (uint32_t *startAddress)
 Erases a page in flash memory. More...
 
MSC_FUNC_PREFIX MSC_Status_TypeDef MSC_MassErase (void)
 Erase entire flash in one operation. More...
 

Detailed Description

Version
4.2.1

License

(C) Copyright 2015 Silicon Labs, 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.