SYSTEMEMLIB

Detailed Description

System API.

This module contains functions to read information such as RAM and Flash size, device unique ID, chip revision, family, and part number from DEVINFO and SCB blocks. Functions to configure and read status from FPU are available for compatible devices.

Data Structures

struct SYSTEM_CalAddrVal_TypeDef
struct SYSTEM_ChipRevision_TypeDef

Enumerations

enum SYSTEM_FpuAccess_TypeDef {
fpuAccessDenied = (0x0 << 20),
fpuAccessPrivilegedOnly = (0x5 << 20),
fpuAccessReserved = (0xA << 20),
fpuAccessFull = (0xF << 20)
}
enum SYSTEM_PartFamily_TypeDef {
systemPartFamilyEfm32Gecko = _DEVINFO_PART_DEVICE_FAMILY_EFM32G,
systemPartFamilyEfm32Giant = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG,
systemPartFamilyEfm32Giant11B = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG11B,
systemPartFamilyEfm32Tiny = _DEVINFO_PART_DEVICE_FAMILY_EFM32TG,
systemPartFamilyEfm32Tiny11B = _DEVINFO_PART_DEVICE_FAMILY_EFM32TG11B,
systemPartFamilyEfm32Leopard = _DEVINFO_PART_DEVICE_FAMILY_EFM32LG,
systemPartFamilyEfm32Wonder = _DEVINFO_PART_DEVICE_FAMILY_EFM32WG,
systemPartFamilyEfm32Zero = _DEVINFO_PART_DEVICE_FAMILY_EFM32ZG,
systemPartFamilyEfm32Happy = _DEVINFO_PART_DEVICE_FAMILY_EFM32HG,
systemPartFamilyEfm32Pearl1B = _DEVINFO_PART_DEVICE_FAMILY_EFM32PG1B,
systemPartFamilyEfm32Jade1B = _DEVINFO_PART_DEVICE_FAMILY_EFM32JG1B,
systemPartFamilyEfm32Pearl12B = _DEVINFO_PART_DEVICE_FAMILY_EFM32PG12B,
systemPartFamilyEfm32Jade12B = _DEVINFO_PART_DEVICE_FAMILY_EFM32JG12B,
systemPartFamilyEzr32Wonder = _DEVINFO_PART_DEVICE_FAMILY_EZR32WG,
systemPartFamilyEzr32Leopard = _DEVINFO_PART_DEVICE_FAMILY_EZR32LG,
systemPartFamilyEzr32Happy = _DEVINFO_PART_DEVICE_FAMILY_EZR32HG,
systemPartFamilyMighty1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1P,
systemPartFamilyMighty1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1B,
systemPartFamilyMighty1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG1V,
systemPartFamilyBlue1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1P,
systemPartFamilyBlue1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1B,
systemPartFamilyBlue1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG1V,
systemPartFamilyFlex1P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1P,
systemPartFamilyFlex1B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1B,
systemPartFamilyFlex1V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG1V,
systemPartFamilyMighty12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12P,
systemPartFamilyMighty12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12B,
systemPartFamilyMighty12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG12V,
systemPartFamilyBlue12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12P,
systemPartFamilyBlue12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12B,
systemPartFamilyBlue12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG12V,
systemPartFamilyFlex12P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12P,
systemPartFamilyFlex12B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12B,
systemPartFamilyFlex12V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG12V,
systemPartFamilyMighty13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13P,
systemPartFamilyMighty13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13B,
systemPartFamilyMighty13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG13V,
systemPartFamilyBlue13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13P,
systemPartFamilyBlue13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13B,
systemPartFamilyBlue13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG13V,
systemPartFamilyFlex13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13P,
systemPartFamilyFlex13B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13B,
systemPartFamilyFlex13V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG13V,
systemPartFamilyMighty14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14P,
systemPartFamilyMighty14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14B,
systemPartFamilyMighty14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14V,
systemPartFamilyBlue14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14P,
systemPartFamilyBlue14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14B,
systemPartFamilyBlue14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32BG14V,
systemPartFamilyFlex14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14P,
systemPartFamilyFlex14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14B,
systemPartFamilyFlex14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32FG14V,
systemPartFamilyZen14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32ZG14P,
systemPartFamilyGecko = _DEVINFO_PART_DEVICE_FAMILY_G,
systemPartFamilyGiant = _DEVINFO_PART_DEVICE_FAMILY_GG,
systemPartFamilyTiny = _DEVINFO_PART_DEVICE_FAMILY_TG,
systemPartFamilyLeopard = _DEVINFO_PART_DEVICE_FAMILY_LG,
systemPartFamilyWonder = _DEVINFO_PART_DEVICE_FAMILY_WG,
systemPartFamilyZero = _DEVINFO_PART_DEVICE_FAMILY_ZG,
systemPartFamilyHappy = _DEVINFO_PART_DEVICE_FAMILY_HG,
systemPartFamilyUnknown = 0xFF
}

Functions

void SYSTEM_ChipRevisionGet ( SYSTEM_ChipRevision_TypeDef *rev)
Get a chip major/minor revision.
__STATIC_INLINE void SYSTEM_FpuAccessModeSet ( SYSTEM_FpuAccess_TypeDef accessMode)
Set floating point co-processor (FPU) access mode.
__STATIC_INLINE uint8_t SYSTEM_GetCalibrationTemperature (void)
Get calibration temperature (in degrees Celsius).
bool SYSTEM_GetCalibrationValue (volatile uint32_t *regAddress)
Get a factory calibration value for a given peripheral register.
__STATIC_INLINE uint8_t SYSTEM_GetDevinfoRev (void)
Get DEVINFO revision.
__STATIC_INLINE SYSTEM_PartFamily_TypeDef SYSTEM_GetFamily (void)
Get family identifier of MCU.
__STATIC_INLINE uint32_t SYSTEM_GetFlashPageSize (void)
Get the flash page size in bytes.
__STATIC_INLINE uint16_t SYSTEM_GetFlashSize (void)
Get the flash size (in KB).
__STATIC_INLINE uint16_t SYSTEM_GetPartNumber (void)
Get part number of MCU.
__STATIC_INLINE uint8_t SYSTEM_GetProdRev (void)
Get production revision for this part.
__STATIC_INLINE uint16_t SYSTEM_GetSRAMSize (void)
Get SRAM size (in KB).
__STATIC_INLINE uint64_t SYSTEM_GetUnique (void)
Get unique number for this device.

Enumeration Type Documentation

Floating point co-processor access modes.

Enumerator
fpuAccessDenied

Access denied, any attempted access generates a NOCP UsageFault.

fpuAccessPrivilegedOnly

Privileged access only, an unprivileged access generates a NOCP UsageFault.

fpuAccessReserved

Reserved.

fpuAccessFull

Full access.

Definition at line 273 of file em_system.h .

Family identifiers.

Enumerator
systemPartFamilyEfm32Gecko

EFM32 Gecko Device Family.

systemPartFamilyEfm32Giant

EFM32 Giant Gecko Series 0 Device Family.

systemPartFamilyEfm32Giant11B

EFM32 Giant Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyEfm32Tiny

EFM32 Tiny Gecko Device Family.

systemPartFamilyEfm32Tiny11B

EFM32 Tiny Gecko 11 Device Family.

systemPartFamilyEfm32Leopard

EFM32 Leopard Gecko Device Family.

systemPartFamilyEfm32Wonder

EFM32 Wonder Gecko Device Family.

systemPartFamilyEfm32Zero

EFM32 Zero Gecko Device Family.

systemPartFamilyEfm32Happy

EFM32 Happy Gecko Device Family.

systemPartFamilyEfm32Pearl1B

EFM32 Pearl Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyEfm32Jade1B

EFM32 Jade Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyEfm32Pearl12B

EFM32 Pearl Gecko Series 1 Configuration 2 Basic Device Family.

systemPartFamilyEfm32Jade12B

EFM32 Jade Gecko Series 1 Configuration 2 Basic Device Family.

systemPartFamilyEzr32Wonder

EZR32 Wonder Device Family.

systemPartFamilyEzr32Leopard

EZR32 Leopard Device Family.

systemPartFamilyEzr32Happy

EZR32 Happy Device Family.

systemPartFamilyMighty1P

EFR32 Mighty Gecko Series 1 Configuration 1 Premium Device Family.

systemPartFamilyMighty1B

EFR32 Mighty Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyMighty1V

EFR32 Mighty Gecko Series 1 Configuration 1 Value Device Family.

systemPartFamilyBlue1P

EFR32 Blue Gecko Series 1 Configuration 1 Premium Device Family.

systemPartFamilyBlue1B

EFR32 Blue Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyBlue1V

EFR32 Blue Gecko Series 1 Configuration 1 Value Device Family.

systemPartFamilyFlex1P

EFR32 Flex Gecko Series 1 Configuration 1 Premium Device Family.

systemPartFamilyFlex1B

EFR32 Flex Gecko Series 1 Configuration 1 Basic Device Family.

systemPartFamilyFlex1V

EFR32 Flex Gecko Series 1 Configuration 1 Value Device Family.

systemPartFamilyMighty12P

EFR32 Mighty Gecko Series 1 Configuration 2 Premium Device Family.

systemPartFamilyMighty12B

EFR32 Mighty Gecko Series 1 Configuration 2 Basic Device Family.

systemPartFamilyMighty12V

EFR32 Mighty Gecko Series 1 Configuration 2 Value Device Family.

systemPartFamilyBlue12P

EFR32 Blue Gecko Series 1 Configuration 2 Premium Device Family.

systemPartFamilyBlue12B

EFR32 Blue Gecko Series 1 Configuration 2 Basic Device Family.

systemPartFamilyBlue12V

EFR32 Blue Gecko Series 1 Configuration 2 Value Device Family.

systemPartFamilyFlex12P

EFR32 Flex Gecko Series 1 Configuration 2 Premium Device Family.

systemPartFamilyFlex12B

EFR32 Flex Gecko Series 1 Configuration 2 Basic Device Family.

systemPartFamilyFlex12V

EFR32 Flex Gecko Series 1 Configuration 2 Value Device Family.

systemPartFamilyMighty13P

EFR32 Mighty Gecko Series 1 Configuration 3 Premium Device Family.

systemPartFamilyMighty13B

EFR32 Mighty Gecko Series 1 Configuration 3 Basic Device Family.

systemPartFamilyMighty13V

EFR32 Mighty Gecko Series 1 Configuration 3 Value Device Family.

systemPartFamilyBlue13P

EFR32 Blue Gecko Series 1 Configuration 3 Premium Device Family.

systemPartFamilyBlue13B

EFR32 Blue Gecko Series 1 Configuration 3 Basic Device Family.

systemPartFamilyBlue13V

EFR32 Blue Gecko Series 1 Configuration 3 Value Device Family.

systemPartFamilyFlex13P

EFR32 Flex Gecko Series 1 Configuration 3 Premium Device Family.

systemPartFamilyFlex13B

EFR32 Flex Gecko Series 1 Configuration 3 Basic Device Family.

systemPartFamilyFlex13V

EFR32 Flex Gecko Series 1 Configuration 3 Value Device Family.

systemPartFamilyMighty14P

EFR32 Mighty Gecko Series 1 Configuration 4 Premium Device Family.

systemPartFamilyMighty14B

EFR32 Mighty Gecko Series 1 Configuration 4 Basic Device Family.

systemPartFamilyMighty14V

EFR32 Mighty Gecko Series 1 Configuration 4 Value Device Family.

systemPartFamilyBlue14P

EFR32 Blue Gecko Series 1 Configuration 4 Premium Device Family.

systemPartFamilyBlue14B

EFR32 Blue Gecko Series 1 Configuration 4 Basic Device Family.

systemPartFamilyBlue14V

EFR32 Blue Gecko Series 1 Configuration 4 Value Device Family.

systemPartFamilyFlex14P

EFR32 Flex Gecko Series 1 Configuration 4 Premium Device Family.

systemPartFamilyFlex14B

EFR32 Flex Gecko Series 1 Configuration 4 Basic Device Family.

systemPartFamilyFlex14V

EFR32 Flex Gecko Series 1 Configuration 4 Value Device Family.

systemPartFamilyZen14P

EFR32 Zen Gecko Series 1 Configuration 4 Premium Device Family.

systemPartFamilyGecko

Gecko Device Family.

systemPartFamilyGiant

Giant Gecko Device Family.

systemPartFamilyTiny

Tiny Gecko Device Family.

systemPartFamilyLeopard

Leopard Gecko Device Family.

systemPartFamilyWonder

Wonder Gecko Device Family.

systemPartFamilyZero

Zero Gecko Device Family.

systemPartFamilyHappy

Happy Gecko Device Family.

systemPartFamilyUnknown

Unknown Device Family. Family ID is missing on unprogrammed parts.

Definition at line 64 of file em_system.h .

Function Documentation

__STATIC_INLINE void SYSTEM_FpuAccessModeSet ( SYSTEM_FpuAccess_TypeDef accessMode )

Set floating point co-processor (FPU) access mode.

Parameters
[in] accessMode Floating point co-processor access mode. See SYSTEM_FpuAccess_TypeDef for details.

Definition at line 324 of file em_system.h .

__STATIC_INLINE uint8_t SYSTEM_GetCalibrationTemperature ( void )

Get calibration temperature (in degrees Celsius).

Returns
Calibration temperature in Celsius.

Definition at line 528 of file em_system.h .

References _DEVINFO_CAL_TEMP_MASK , _DEVINFO_CAL_TEMP_SHIFT , and DEVINFO .

bool SYSTEM_GetCalibrationValue ( volatile uint32_t * regAddress )

Get a factory calibration value for a given peripheral register.

Parameters
[in] regAddress The peripheral calibration register address to get a calibration value for. If the calibration value is found, this register is updated with the calibration value.
Returns
True if a calibration value exists, false otherwise.

Definition at line 105 of file em_system.c .

References SYSTEM_CalAddrVal_TypeDef::address , SYSTEM_CalAddrVal_TypeDef::calValue , and DEVINFO_BASE .

__STATIC_INLINE uint8_t SYSTEM_GetDevinfoRev ( void )

Get DEVINFO revision.

Returns
Revision of the DEVINFO contents.

Definition at line 303 of file em_system.h .

References _DEVINFO_DEVINFOREV_DEVINFOREV_MASK , _DEVINFO_DEVINFOREV_DEVINFOREV_SHIFT , and DEVINFO .

__STATIC_INLINE SYSTEM_PartFamily_TypeDef SYSTEM_GetFamily ( void )

Get family identifier of MCU.

Note
This function retrieves family ID by reading the chip's device info structure in flash memory. Users can retrieve family ID directly by reading DEVINFO->PART item and decode with mask and shift #defines defined in <part_family>_devinfo.h (refer to code below for details).
Returns
Family identifier of MCU.

Definition at line 506 of file em_system.h .

References _DEVINFO_PART_DEVICE_FAMILY_MASK , _DEVINFO_PART_DEVICE_FAMILY_SHIFT , and DEVINFO .

__STATIC_INLINE uint32_t SYSTEM_GetFlashPageSize ( void )

Get the flash page size in bytes.

Note
This function retrieves flash page size by reading the chip device info structure. If your binary is made for one specific device only, use FLASH_PAGE_SIZE instead.
Returns
Page size of internal flash in bytes.

Definition at line 441 of file em_system.h .

References _DEVINFO_MEMINFO_FLASH_PAGE_SIZE_MASK , _DEVINFO_MEMINFO_FLASH_PAGE_SIZE_SHIFT , DEVINFO , FLASH_PAGE_SIZE , and SYSTEM_GetProdRev() .

Referenced by nvm3_halGetDeviceInfo() , and nvm3_halPageErase() .

__STATIC_INLINE uint16_t SYSTEM_GetFlashSize ( void )

Get the flash size (in KB).

Note
This function retrieves flash size by reading the chip device info structure. If your binary is made for one specific device only, use FLASH_SIZE instead.
Returns
Size of internal flash (in KB).

Definition at line 416 of file em_system.h .

References _DEVINFO_MSIZE_FLASH_MASK , _DEVINFO_MSIZE_FLASH_SHIFT , _DEVINFO_MSIZE_SRAM_MASK , _DEVINFO_MSIZE_SRAM_SHIFT , DEVINFO , and SYSTEM_GetProdRev() .

__STATIC_INLINE uint16_t SYSTEM_GetPartNumber ( void )

Get part number of MCU.

Returns
The part number of MCU.

Definition at line 479 of file em_system.h .

References _DEVINFO_PART_DEVICE_NUMBER_MASK , _DEVINFO_PART_DEVICE_NUMBER_SHIFT , and DEVINFO .

__STATIC_INLINE uint8_t SYSTEM_GetProdRev ( void )

Get production revision for this part.

Returns
Production revision for this part.

Definition at line 357 of file em_system.h .

References _DEVINFO_PART_PROD_REV_MASK , _DEVINFO_PART_PROD_REV_SHIFT , and DEVINFO .

Referenced by CHIP_Init() , SYSTEM_GetFlashPageSize() , SYSTEM_GetFlashSize() , and SYSTEM_GetSRAMSize() .

__STATIC_INLINE uint16_t SYSTEM_GetSRAMSize ( void )

Get SRAM size (in KB).

Note
This function retrieves SRAM size by reading the chip device info structure. If your binary is made for one specific device only, use SRAM_SIZE instead.
Returns
Size of internal SRAM (in KB).

Definition at line 382 of file em_system.h .

References _DEVINFO_MSIZE_FLASH_MASK , _DEVINFO_MSIZE_FLASH_SHIFT , _DEVINFO_MSIZE_SRAM_MASK , _DEVINFO_MSIZE_SRAM_SHIFT , DEVINFO , and SYSTEM_GetProdRev() .

__STATIC_INLINE uint64_t SYSTEM_GetUnique ( void )

Get unique number for this device.

Returns
Unique number for this device.

Definition at line 337 of file em_system.h .

References DEVINFO .