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_CalAddrVal_TypeDef

sl_hal_system_chip_revision_t

sl_hal_system_devinfo_adc_cal_data_t

sl_hal_system_devinfo_adc_offset_t

sl_hal_system_devinfo_adc_t

sl_hal_system_devinfo_temperature_t

sl_hal_system_features_t

SYSTEM_ChipRevision_TypeDef

Enumerations#

enum
SL_HAL_SYSTEM_PART_FAMILY_FLEX_23 = DEVINFO_PART_FAMILY_FG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
SL_HAL_SYSTEM_PART_FAMILY_ZEN_23 = DEVINFO_PART_FAMILY_ZG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
SL_HAL_SYSTEM_PART_FAMILY_EFM32_PEARL_23 = DEVINFO_PART_FAMILY_PG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
SL_HAL_SYSTEM_PART_FAMILY_SIDEWALK_23 = DEVINFO_PART_FAMILY_SG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
SL_HAL_SYSTEM_PART_FAMILY_UNKNOWN = 0xFF
}

Family identifiers.

enum
securityCapabilityUnknown
securityCapabilityNA
securityCapabilityBasic
securityCapabilityRoT
securityCapabilitySE
securityCapabilityVault
}

Family security capability.

enum
SL_SYSTEM_SECURITY_CAPABILITY_UNKNOWN
SL_SYSTEM_SECURITY_CAPABILITY_NA
SL_SYSTEM_SECURITY_CAPABILITY_BASIC
SL_SYSTEM_SECURITY_CAPABILITY_ROT
SL_SYSTEM_SECURITY_CAPABILITY_SE
SL_SYSTEM_SECURITY_CAPABILITY_VAULT
}

Family security capability.

enum
SL_SYSTEM_FPU_ACCESS_DENIED = (0x0 << 20)
SL_SYSTEM_FPU_ACCESS_PRIVILEGED_ONLY = (0x5 << 20)
SL_SYSTEM_FPU_ACCESS_RESERVED = (0xA << 20)
SL_SYSTEM_FPU_ACCESS_FULL = (0xF << 20)
}

Floating point co-processor access modes.

enum
systemPartFamilyFlex23 = DEVINFO_PART_FAMILY_FG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
systemPartFamilyZen23 = DEVINFO_PART_FAMILY_ZG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
systemPartFamilyEfm32Pearl23 = DEVINFO_PART_FAMILY_PG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
systemPartFamilySideWalk23 = DEVINFO_PART_FAMILY_SG | (23 << _DEVINFO_PART_FAMILYNUM_SHIFT)
systemPartFamilyUnknown = 0xFF
}

Family identifiers.

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

Floating point co-processor access modes.

Functions#

Get the MCU family identifier.

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).

void
SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev)

Get a chip major/minor revision.

Get the MCU family identifier.

void
sl_hal_system_get_chip_revision(sl_hal_system_chip_revision_t *rev)
uint8_t

Get DEVINFO revision.

uint32_t

Get the default factory calibration value for HFRCO oscillator.

uint32_t

Get the speed factory calibration value for HFRCO oscillator.

uint32_t

Get the HFRCO calibration based on the frequency band.

uint32_t

Get a factory calibration value for HFRCOCEM23 oscillator.

uint32_t

Get a factory calibration value for HFXOCAL.

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.

void
sl_hal_system_get_temperature_info(sl_hal_system_devinfo_temperature_t *info)

Get the temperature information.

void
sl_hal_system_fpu_set_access_mode(sl_hal_system_fpu_access_t access_mode)

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

void
sl_hal_system_get_adc_calibration_info(sl_hal_system_devinfo_adc_t *info)

Get the ADC calibration info.

uint8_t

Get DEVINFO revision.

void
SYSTEM_FpuAccessModeSet(SYSTEM_FpuAccess_TypeDef accessMode)

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

Enumeration Documentation#

sl_hal_system_part_family_t#

sl_hal_system_part_family_t

Family identifiers.

Enumerator
SL_HAL_SYSTEM_PART_FAMILY_FLEX_23

EFR32 Flex Gecko Series 2 Config 3 Value Device Family.

SL_HAL_SYSTEM_PART_FAMILY_ZEN_23

EFR32 Zen Gecko Series 2 Config 3 Value Device Family.

SL_HAL_SYSTEM_PART_FAMILY_EFM32_PEARL_23

EFM32 Pearl Gecko Series 2 Config 3 Value Device Family.

SL_HAL_SYSTEM_PART_FAMILY_SIDEWALK_23

EFR32 Side Walk Gecko Series 2 Config 3 Value Device Family.

SL_HAL_SYSTEM_PART_FAMILY_UNKNOWN

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


Definition at line 59 of file platform/peripheral/inc/sl_hal_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

sl_hal_system_security_capability_t#

sl_hal_system_security_capability_t

Family security capability.

Enumerator
SL_SYSTEM_SECURITY_CAPABILITY_UNKNOWN

Unknown security capability.

SL_SYSTEM_SECURITY_CAPABILITY_NA

Security capability not applicable.

SL_SYSTEM_SECURITY_CAPABILITY_BASIC

Basic security capability.

SL_SYSTEM_SECURITY_CAPABILITY_ROT

Root of Trust security capability.

SL_SYSTEM_SECURITY_CAPABILITY_SE

Secure Element security capability.

SL_SYSTEM_SECURITY_CAPABILITY_VAULT

Secure Vault security capability.


Definition at line 51 of file platform/peripheral/inc/sl_hal_system_generic.h

sl_hal_system_fpu_access_t#

sl_hal_system_fpu_access_t

Floating point co-processor access modes.

Enumerator
SL_SYSTEM_FPU_ACCESS_DENIED

Access denied, any attempted access generates a NOCP UsageFault.

SL_SYSTEM_FPU_ACCESS_PRIVILEGED_ONLY

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

SL_SYSTEM_FPU_ACCESS_RESERVED

Reserved.

SL_SYSTEM_FPU_ACCESS_FULL

Full access.


Definition at line 67 of file platform/peripheral/inc/sl_hal_system_generic.h

SYSTEM_PartFamily_TypeDef#

SYSTEM_PartFamily_TypeDef

Family identifiers.

Enumerator
systemPartFamilyFlex23

EFR32 Flex Gecko Series 2 Config 3 Value Device Family.

systemPartFamilyZen23

EFR32 Zen Gecko Series 2 Config 3 Value Device Family.

systemPartFamilyEfm32Pearl23

EFM32 Pearl Gecko Series 2 Config 3 Value Device Family.

systemPartFamilySideWalk23

EFR32 Side Walk Gecko Series 2 Config 3 Value 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 310 of file platform/emlib/inc/em_system.h

Variable Documentation#

SL_HAL_SYSTEM_DEVINFO_ADC_RESET_VALUES#

const sl_hal_system_devinfo_adc_t SL_HAL_SYSTEM_DEVINFO_ADC_RESET_VALUES

Definition at line 77 of file platform/peripheral/src/sl_hal_system.c

SL_HAL_SYSTEM_DEVINFO_TEMPERATURE_RESET_VALUES#

const sl_hal_system_devinfo_temperature_t SL_HAL_SYSTEM_DEVINFO_TEMPERATURE_RESET_VALUES

Definition at line 91 of file platform/peripheral/src/sl_hal_system.c

SL_HAL_SYSTEM_DEVINFO_ADC_RESET_VALUES#

const sl_hal_system_devinfo_adc_t SL_HAL_SYSTEM_DEVINFO_ADC_RESET_VALUES

Definition at line 127 of file platform/peripheral/inc/sl_hal_system_generic.h

SL_HAL_SYSTEM_DEVINFO_TEMPERATURE_RESET_VALUES#

const sl_hal_system_devinfo_temperature_t SL_HAL_SYSTEM_DEVINFO_TEMPERATURE_RESET_VALUES

Definition at line 129 of file platform/peripheral/inc/sl_hal_system_generic.h

Function Documentation#

sl_hal_system_get_family#

sl_hal_system_part_family_t sl_hal_system_get_family (void )

Get the MCU family identifier.

Parameters
N/A

Returns

  • 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).


Definition at line 202 of file platform/peripheral/src/sl_hal_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 120 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 162 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 213 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 233 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 256 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 273 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 307 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 332 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 371 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 391 of file platform/emlib/src/em_system.c

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

sl_hal_system_get_chip_revision#

void sl_hal_system_get_chip_revision (sl_hal_system_chip_revision_t * rev)
Parameters
N/Arev

Definition at line 178 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_devinfo_rev#

uint8_t sl_hal_system_get_devinfo_rev (void )

Get DEVINFO revision.

Parameters
N/A

Returns

  • Revision of the DEVINFO contents.


Definition at line 217 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_hfrco_default_calibration#

uint32_t sl_hal_system_get_hfrco_default_calibration (void )

Get the default factory calibration value for HFRCO oscillator.

Parameters
N/A

Returns

  • HFRCOCAL default value.


Definition at line 233 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_hfrco_speed_calibration#

uint32_t sl_hal_system_get_hfrco_speed_calibration (void )

Get the speed factory calibration value for HFRCO oscillator.

Parameters
N/A

Returns

  • HFRCOCAL speed value.


Definition at line 245 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_hfrcodpll_band_calibration#

uint32_t sl_hal_system_get_hfrcodpll_band_calibration (uint32_t frequency)

Get the HFRCO calibration based on the frequency band.

Parameters
[in]frequency

Frequency for which to retrieve calibration.

Returns

  • HFRCOCAL value for the given band.

Note

  • Those calibrations are only valid for the HFRCO oscillator when used with the DPLL module.


Definition at line 257 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_hfrcoem23_calibration#

uint32_t sl_hal_system_get_hfrcoem23_calibration (void )

Get a factory calibration value for HFRCOCEM23 oscillator.

Parameters
N/A

Returns

  • HFRCOEM23 calibration value.


Definition at line 304 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_hfxocal#

uint32_t sl_hal_system_get_hfxocal (void )

Get a factory calibration value for HFXOCAL.

Parameters
N/A

Returns

  • HFXOCAL value.


Definition at line 334 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_security_capability#

sl_hal_system_security_capability_t sl_hal_system_get_security_capability (void )

Get family security capability.

Parameters
N/A

Note

  • This function retrieves the family security capability based on the device number.

Returns

  • Security capability of MCU.


Definition at line 346 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_unique#

uint64_t sl_hal_system_get_unique (void )

Get the unique number for this device.

Parameters
N/A

Returns

  • Unique number for this device.


Definition at line 383 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_prod_rev#

uint8_t sl_hal_system_get_prod_rev (void )

Get the production revision for this part.

Parameters
N/A

Returns

  • Production revision for this part.


Definition at line 392 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_sram_base_address#

uint32_t sl_hal_system_get_sram_base_address (void )

Get the SRAM Base Address.

Parameters
N/A

Returns

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


Definition at line 408 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_sram_size#

uint16_t sl_hal_system_get_sram_size (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 416 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_flash_size#

uint16_t sl_hal_system_get_flash_size (void )

Get the flash size (in KB).

Parameters
N/A

Note

  • This function retrieves flash size by reading the chip device info structure or DEVINFO->EMBMSIZE (embedded flash. not the case for S3 for now) or user config (external flash).

Returns

  • Size of flash (in KB).


Definition at line 432 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_flash_page_size#

uint32_t sl_hal_system_get_flash_page_size (void )

Get the flash page size in bytes.

Parameters
N/A

Note

  • This function retrieves flash page size by reading the SE or user config (external flash)

Returns

  • Page size of flash in bytes.


Definition at line 455 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_part_number#

uint16_t sl_hal_system_get_part_number (void )

Get the MCU part number.

Parameters
N/A

Returns

  • The part number of MCU.


Definition at line 472 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_part_features#

sl_hal_system_features_t sl_hal_system_get_part_features (void )

Get the SoC or MCU features.

Parameters
N/A

Returns

  • The features of the current SoC or MCU.

Note

  • The features can be decoded by referring to the SoC or MCU datasheet.


Definition at line 500 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_temperature_info#

void sl_hal_system_get_temperature_info (sl_hal_system_devinfo_temperature_t * info)

Get the temperature information.

Parameters
[out]info

Pointer to variable where to store the temperature info.


Definition at line 527 of file platform/peripheral/src/sl_hal_system.c

sl_hal_syscfg_read_chip_rev#

uint32_t sl_hal_syscfg_read_chip_rev (void )
Parameters
N/A

Definition at line 572 of file platform/peripheral/src/sl_hal_system.c

sl_hal_syscfg_set_systicextclken_cfgsystic#

void sl_hal_syscfg_set_systicextclken_cfgsystic (void )
Parameters
N/A

Definition at line 584 of file platform/peripheral/src/sl_hal_system.c

sl_hal_syscfg_clear_systicextclken_cfgsystic#

void sl_hal_syscfg_clear_systicextclken_cfgsystic (void )
Parameters
N/A

Definition at line 596 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_fpu_set_access_mode#

void sl_hal_system_fpu_set_access_mode (sl_hal_system_fpu_access_t access_mode)

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

Parameters
[in]access_mode

Floating point co-processor access mode.


Definition at line 609 of file platform/peripheral/src/sl_hal_system.c

sl_hal_system_get_adc_calibration_info#

void sl_hal_system_get_adc_calibration_info (sl_hal_system_devinfo_adc_t * info)

Get the ADC calibration info.

Parameters
[out]info

Pointer to variable where to store the adc calibration info.


Definition at line 618 of file platform/peripheral/src/sl_hal_system.c

SYSTEM_GetDevinfoRev#

uint8_t SYSTEM_GetDevinfoRev (void )

Get DEVINFO revision.

Parameters
N/A

Returns

  • Revision of the DEVINFO contents.


Definition at line 333 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 354 of file platform/emlib/inc/em_system.h

Macro Definition Documentation#

HFRCO_DPLL_FREQUENCY_TABLE_SIZE#

#define HFRCO_DPLL_FREQUENCY_TABLE_SIZE
Value:
11

Definition at line 59 of file platform/peripheral/src/sl_hal_system.c

DEVINFO_TEMPERATURE_CALTEMP_INTEGER_SHIFT#

#define DEVINFO_TEMPERATURE_CALTEMP_INTEGER_SHIFT
Value:
4

Definition at line 61 of file platform/peripheral/src/sl_hal_system.c