modm_data.cubemx
STMicro STM32CubeMX Database
1# Copyright 2022, Niklas Hauser 2# SPDX-License-Identifier: MPL-2.0 3 4""" 5# STMicro STM32CubeMX Database 6""" 7 8from .device_data import devices_from_family, devices_from_prefix, devices_from_partname, cubemx_device_list 9 10__all__ = [ 11 "devices_from_family", 12 "devices_from_prefix", 13 "devices_from_partname", 14 "cubemx_device_list", 15]
def
devices_from_family(family: str) -> list[str]:
40def devices_from_family(family: str) -> list[str]: 41 """ 42 :param family: A STM32 family name, for example, F0, H7, G4. 43 :return: A list of device names belonging to a STM32 family. 44 """ 45 devices = _family_file().query(f'//Family[@Name="{family.upper()}"]/SubFamily/Mcu/@RefName') 46 devices = _format_raw_devices(devices) 47 LOGGER.info("Found devices of family '{}': {}".format(family, ", ".join(devices))) 48 return devices
Parameters
- family: A STM32 family name, for example, F0, H7, G4.
Returns
A list of device names belonging to a STM32 family.
def
devices_from_prefix(prefix: str) -> list[str]:
51def devices_from_prefix(prefix: str) -> list[str]: 52 """ 53 :param prefix: A STM32 device prefix, for example, STM32, STM32H7, STM32G432. 54 :return: A list of device names starting with the prefix. 55 """ 56 devices = _family_file().query(f'//Family/SubFamily/Mcu[starts-with(@RefName,"{prefix.upper()}")]') 57 devices = _format_raw_devices(devices) 58 devices = [d for d in devices if not stm32_data.ignoreDevice(d)] 59 LOGGER.info("Found devices for prefix '{}': {}".format(prefix, ", ".join(devices))) 60 return list(sorted(devices))
Parameters
- prefix: A STM32 device prefix, for example, STM32, STM32H7, STM32G432.
Returns
A list of device names starting with the prefix.
def
devices_from_partname(partname: str) -> list[dict[str]]:
71def devices_from_partname(partname: str) -> list[dict[str]]: 72 """ 73 Find the STM32 device name in the STM32CubeMX database and convert the data 74 into a device specific key-value mapping describing the hardware. 75 76 .. note:: 77 One partname may contain multiple devices, for example, multiple 78 asymmetric CPU cores like in the STM32H745 device. 79 80 :param partname: A full STM32 device name. 81 :return: a list of dictionaries containing a device specific data structure. 82 """ 83 deviceNames = _family_file().query(f'//Family/SubFamily/Mcu[starts-with(@RefName,"{partname}")]') 84 comboDeviceName = sorted([d.get("Name") for d in deviceNames])[0] 85 device_file = XmlReader(os.path.join(_MCU_PATH, comboDeviceName + ".xml")) 86 did = did_from_string(partname.lower()) 87 LOGGER.info(f"Parsing '{did.string}'") 88 89 # information about the core and architecture 90 cores = [c.text.lower().replace("arm ", "").replace("+", "plus") for c in device_file.query("//Core")] 91 if len(cores) > 1: 92 did.naming_schema += "@{core}" 93 devices = [_properties_from_id(partname, comboDeviceName, device_file, did.copy(), c) for c in cores] 94 return [d for d in devices if d is not None]
Find the STM32 device name in the STM32CubeMX database and convert the data into a device specific key-value mapping describing the hardware.
One partname may contain multiple devices, for example, multiple asymmetric CPU cores like in the STM32H745 device.
Parameters
- partname: A full STM32 device name.
Returns
a list of dictionaries containing a device specific data structure.
63def cubemx_device_list() -> list[DeviceIdentifier]: 64 """ 65 :return: A list of all STM32 device identifiers. 66 """ 67 return [did_from_string(d) for d in devices_from_prefix("STM32")]
Returns
A list of all STM32 device identifiers.