Add per-package pinouts.
This commit is contained in:
parent
f1297385e9
commit
893d7ff36b
@ -12,7 +12,7 @@ families, including:
|
||||
- :x: GPIO mappings for F1
|
||||
- :construction: Register blocks for all peripherals
|
||||
- :heavy_check_mark: DMA stream mappings
|
||||
- :x: Per-package pinouts
|
||||
- :heavy_check_mark: Per-package pinouts
|
||||
- :heavy_check_mark: Links to applicable reference manuals, datasheets, appnotes PDFs.
|
||||
|
||||
:heavy_check_mark: = done, :construction: = work in progress, :x: = to do
|
||||
|
@ -38,6 +38,8 @@ mod xml {
|
||||
pub struct Pin {
|
||||
#[serde(rename = "Name")]
|
||||
pub name: String,
|
||||
#[serde(rename = "Position")]
|
||||
pub position: String,
|
||||
#[serde(rename = "Signal", default)]
|
||||
pub signals: Vec<PinSignal>,
|
||||
}
|
||||
@ -885,6 +887,25 @@ fn parse_group(
|
||||
group_idx
|
||||
});
|
||||
|
||||
let mut package_pins: HashMap<String, Vec<String>> = HashMap::new();
|
||||
for pin in &parsed.pins {
|
||||
package_pins
|
||||
.entry(pin.position.clone())
|
||||
.or_default()
|
||||
.push(gpio_af::clean_pin(&pin.name).unwrap_or_else(|| pin.name.clone()));
|
||||
}
|
||||
let mut package_pins: Vec<stm32_data_serde::chip::PackagePin> = package_pins
|
||||
.into_iter()
|
||||
.map(|(position, mut signals)| {
|
||||
signals.sort();
|
||||
stm32_data_serde::chip::PackagePin { position, signals }
|
||||
})
|
||||
.collect();
|
||||
package_pins.sort_by_key(|p| match p.position.parse::<u32>() {
|
||||
Ok(n) => (Some(n), None),
|
||||
Err(_) => (None, Some(p.position.clone())),
|
||||
});
|
||||
|
||||
for (package_i, package_name) in package_names.iter().enumerate() {
|
||||
let chip_name = chip_name_from_package_name(package_name);
|
||||
if !chips.contains_key(&chip_name) {
|
||||
@ -905,6 +926,7 @@ fn parse_group(
|
||||
.push(stm32_data_serde::chip::Package {
|
||||
name: package_name.clone(),
|
||||
package: parsed.package.clone(),
|
||||
pins: package_pins.clone(),
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,13 @@ pub mod chip {
|
||||
pub struct Package {
|
||||
pub name: String,
|
||||
pub package: String,
|
||||
pub pins: Vec<PackagePin>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
|
||||
pub struct PackagePin {
|
||||
pub position: String,
|
||||
pub signals: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
|
||||
|
Loading…
x
Reference in New Issue
Block a user