SYSTEM - System Utils#

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.

Modules#

SYSTEM_ChipRevision_TypeDef

SYSTEM_CalAddrVal_TypeDef

Enumerations#

enum
systemPartFamilyEfm32Gecko = _DEVINFO_PART_DEVICE_FAMILY_EFM32G
systemPartFamilyEfm32Giant = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG
systemPartFamilyEfm32Giant11B = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG11B
systemPartFamilyEfm32Giant12B = _DEVINFO_PART_DEVICE_FAMILY_EFM32GG12B
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
systemPartFamilyZen13P = _DEVINFO_PART_DEVICE_FAMILY_EFR32ZG13P
systemPartFamilyZen13L = _DEVINFO_PART_DEVICE_FAMILY_EFR32ZG13L
systemPartFamilyZen13S = _DEVINFO_PART_DEVICE_FAMILY_EFR32ZG13S
systemPartFamilyMighty14P = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14P
systemPartFamilyMighty14B = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14B
systemPartFamilyMighty14V = _DEVINFO_PART_DEVICE_FAMILY_EFR32MG14V
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
}

Family identifiers.

enum
fpuAccessDenied = (0x0 << 20)
fpuAccessPrivilegedOnly = (0x5 << 20)
fpuAccessReserved = (0xA << 20)
fpuAccessFull = (0xF << 20)
}

Floating point co-processor access modes.

enum
securityCapabilityUnknown
securityCapabilityNA
securityCapabilityBasic
securityCapabilityRoT
securityCapabilitySE
securityCapabilityVault
}

Family security capability.

Functions#

void
SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev)

Get a chip major/minor revision.

bool
SYSTEM_GetCalibrationValue(volatile uint32_t *regAddress)

Get a factory calibration value for a given peripheral register.

uint64_t

Get the unique number for this device.

uint8_t

Get the production revision for this part.

uint32_t

Get the SRAM Base Address.

uint16_t

Get the SRAM size (in KB).

uint16_t

Get the flash size (in KB).

uint32_t

Get the flash page size in bytes.

uint16_t

Get the MCU part number.

uint8_t

Get the calibration temperature (in degrees Celsius).

Get the MCU family identifier.

uint8_t

Get DEVINFO revision.

void
SYSTEM_FpuAccessModeSet(SYSTEM_FpuAccess_TypeDef accessMode)

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

Enumeration Documentation#

SYSTEM_PartFamily_TypeDef#

SYSTEM_PartFamily_TypeDef

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.

systemPartFamilyEfm32Giant12B

EFM32 Giant Gecko Series 1 Configuration 2 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.

systemPartFamilyZen13P

EFR32 Zen Gecko Series 1 Configuration 3 Premium Device Family.

systemPartFamilyZen13L

EFR32 Zen Gecko Series 1 Configuration 3 Led Device Family.

systemPartFamilyZen13S

EFR32 Zen Gecko Series 1 Configuration 3 Sensor 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.

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.


Definition at line 57 of file platform/emlib/inc/em_system.h

SYSTEM_FpuAccess_TypeDef#

SYSTEM_FpuAccess_TypeDef

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 306 of file platform/emlib/inc/em_system.h

SYSTEM_SecurityCapability_TypeDef#

SYSTEM_SecurityCapability_TypeDef

Family security capability.

Enumerator
securityCapabilityUnknown

Unknown security capability.

securityCapabilityNA

Security capability not applicable.

securityCapabilityBasic

Basic security capability.

securityCapabilityRoT

Root of Trust security capability.

securityCapabilitySE

Secure Element security capability.

securityCapabilityVault

Secure Vault security capability.


Definition at line 50 of file platform/emlib/inc/em_system_generic.h

Function Documentation#

SYSTEM_ChipRevisionGet#

void SYSTEM_ChipRevisionGet (SYSTEM_ChipRevision_TypeDef * rev)

Get a chip major/minor revision.

Parameters
[out]rev

A location to place the chip revision information.


Definition at line 69 of file platform/emlib/src/em_system.c

SYSTEM_GetCalibrationValue#

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 123 of file platform/emlib/src/em_system.c

SYSTEM_GetSecurityCapability#

SYSTEM_SecurityCapability_TypeDef SYSTEM_GetSecurityCapability (void )

Get family security capability.

Parameters
N/A

Note

  • This function retrieves the family security capability based on the device number. The device number is one letter and 3 digits: DEVICENUMBER = (alpha-'A')*1000 + numeric. i.e. 0d = "A000"; 1123d = "B123". The security capabilities are represented by SYSTEM_SecurityCapability_TypeDef.

Returns

  • Security capability of MCU.


Definition at line 165 of file platform/emlib/src/em_system.c

SYSTEM_GetUnique#

uint64_t SYSTEM_GetUnique (void )

Get the unique number for this device.

Parameters
N/A

Returns

  • Unique number for this device.


Definition at line 216 of file platform/emlib/src/em_system.c

SYSTEM_GetProdRev#

uint8_t SYSTEM_GetProdRev (void )

Get the production revision for this part.

Parameters
N/A

Returns

  • Production revision for this part.


Definition at line 236 of file platform/emlib/src/em_system.c

SYSTEM_GetSRAMBaseAddress#

uint32_t SYSTEM_GetSRAMBaseAddress (void )

Get the SRAM Base Address.

Parameters
N/A

Note

  • This function is used to retrieve the base address of the SRAM.

Returns

  • Base address SRAM (32-bit unsigned integer).


Definition at line 259 of file platform/emlib/src/em_system.c

SYSTEM_GetSRAMSize#

uint16_t SYSTEM_GetSRAMSize (void )

Get the SRAM size (in KB).

Parameters
N/A

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 276 of file platform/emlib/src/em_system.c

SYSTEM_GetFlashSize#

uint16_t SYSTEM_GetFlashSize (void )

Get the flash size (in KB).

Parameters
N/A

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 310 of file platform/emlib/src/em_system.c

SYSTEM_GetFlashPageSize#

uint32_t SYSTEM_GetFlashPageSize (void )

Get the flash page size in bytes.

Parameters
N/A

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 335 of file platform/emlib/src/em_system.c

SYSTEM_GetPartNumber#

uint16_t SYSTEM_GetPartNumber (void )

Get the MCU part number.

Parameters
N/A

Returns

  • The part number of MCU.


Definition at line 374 of file platform/emlib/src/em_system.c

SYSTEM_GetCalibrationTemperature#

uint8_t SYSTEM_GetCalibrationTemperature (void )

Get the calibration temperature (in degrees Celsius).

Parameters
N/A

Returns

  • Calibration temperature in Celsius.


Definition at line 394 of file platform/emlib/src/em_system.c

SYSTEM_GetFamily#

SYSTEM_PartFamily_TypeDef SYSTEM_GetFamily (void )

Get the MCU family identifier.

Parameters
N/A

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 421 of file platform/emlib/src/em_system.c

SYSTEM_GetDevinfoRev#

uint8_t SYSTEM_GetDevinfoRev (void )

Get DEVINFO revision.

Parameters
N/A

Returns

  • Revision of the DEVINFO contents.


Definition at line 329 of file platform/emlib/inc/em_system.h

SYSTEM_FpuAccessModeSet#

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 350 of file platform/emlib/inc/em_system.h