Skip to content

Commit e970a67

Browse files
committed
Initial WB55 support.
1 parent 6e70e3d commit e970a67

28 files changed

+37044
-4
lines changed

Cargo.toml

+13
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,19 @@ stm32l4s9 = [
237237
"drone-stm32-map-periph-tim/stm32l4s9",
238238
"drone-stm32-map-periph-uart/stm32l4s9",
239239
]
240+
stm32wbx5 = [
241+
"drone-cortex-m/cortex_m4f_r0p1",
242+
"drone-stm32-map-pieces/stm32wbx5",
243+
"drone-stm32-map-periph-adc/stm32wbx5",
244+
"drone-stm32-map-periph-dma/stm32wbx5",
245+
"drone-stm32-map-periph-exti/stm32wbx5",
246+
"drone-stm32-map-periph-gpio/stm32wbx5",
247+
"drone-stm32-map-periph-i2c/stm32wbx5",
248+
"drone-stm32-map-periph-rtc/stm32wbx5",
249+
"drone-stm32-map-periph-spi/stm32wbx5",
250+
"drone-stm32-map-periph-tim/stm32wbx5",
251+
"drone-stm32-map-periph-uart/stm32wbx5",
252+
]
240253

241254
[dependencies.drone-cortex-m]
242255
version = "0.10.0"

Justfile

+1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ check-all:
3838
cargo check --package drone-stm32-map --features stm32l4s7 --target thumbv7em-none-eabihf
3939
cargo check --package drone-stm32-map --features stm32l4r9 --target thumbv7em-none-eabihf
4040
cargo check --package drone-stm32-map --features stm32l4s9 --target thumbv7em-none-eabihf
41+
cargo check --package drone-stm32-map --features stm32wbx5 --target thumbv7em-none-eabihf
4142

4243
# Generate the docs
4344
doc:

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ a drop-in replacement for it.
3737
| `stm32l4s7` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) |
3838
| `stm32l4r9` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) |
3939
| `stm32l4s9` | ARM® Cortex®-M4F r0p1 | [RM0432](https://www.st.com/resource/en/reference_manual/dm00310109.pdf) |
40+
| `stm32wbx5` | ARM® Cortex®-M4F r0p1 | [RM0434](https://www.st.com/resource/en/reference_manual/dm00318631.pdf) |
4041

4142
**NOTE** Exactly one cargo feature should be selected based on the device
4243
model.

src/periph/adc/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/dma/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/exti/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/gpio/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/gpio/lib.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ periph! {
4040
feature = "stm32l4r9",
4141
feature = "stm32l4s5",
4242
feature = "stm32l4s7",
43-
feature = "stm32l4s9"
43+
feature = "stm32l4s9",
44+
feature = "stm32wbx5",
4445
))]
4546
BUSSMENR {
4647
0x20 RwRegBitBand Shared;
@@ -60,7 +61,8 @@ periph! {
6061
feature = "stm32l4r9",
6162
feature = "stm32l4s5",
6263
feature = "stm32l4s7",
63-
feature = "stm32l4s9"
64+
feature = "stm32l4s9",
65+
feature = "stm32wbx5",
6466
))]
6567
AFRL {
6668
0x20 RwReg;
@@ -84,7 +86,8 @@ periph! {
8486
feature = "stm32l4r9",
8587
feature = "stm32l4s5",
8688
feature = "stm32l4s7",
87-
feature = "stm32l4s9"
89+
feature = "stm32l4s9",
90+
feature = "stm32wbx5",
8891
))]
8992
AFRH {
9093
0x20 RwReg;
@@ -104,7 +107,8 @@ periph! {
104107
feature = "stm32l4r9",
105108
feature = "stm32l4s5",
106109
feature = "stm32l4s7",
107-
feature = "stm32l4s9"
110+
feature = "stm32l4s9",
111+
feature = "stm32wbx5",
108112
))]
109113
ASCR {
110114
0x20 RwReg Option;

src/periph/i2c/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/rtc/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/spi/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/tim/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/periph/uart/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4r9
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s5"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s7"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32l4s9"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1", "drone-stm32-map-pieces/stm32wbx5"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/1/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/10/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/11/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/12/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/2/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/3/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/4/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/5/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/6/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/7/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/8/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/9/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ stm32l4r9 = ["drone-cortex-m/cortex_m4f_r0p1"]
3131
stm32l4s5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3232
stm32l4s7 = ["drone-cortex-m/cortex_m4f_r0p1"]
3333
stm32l4s9 = ["drone-cortex-m/cortex_m4f_r0p1"]
34+
stm32wbx5 = ["drone-cortex-m/cortex_m4f_r0p1"]
3435

3536
[dependencies.drone-core]
3637
version = "0.10.0"

src/pieces/Cargo.toml

+15
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,21 @@ stm32l4s9 = [
255255
"drone-stm32-map-pieces-11/stm32l4s9",
256256
"drone-stm32-map-pieces-12/stm32l4s9",
257257
]
258+
stm32wbx5 = [
259+
"drone-cortex-m/cortex_m4f_r0p1",
260+
"drone-stm32-map-pieces-1/stm32wbx5",
261+
"drone-stm32-map-pieces-2/stm32wbx5",
262+
"drone-stm32-map-pieces-3/stm32wbx5",
263+
"drone-stm32-map-pieces-4/stm32wbx5",
264+
"drone-stm32-map-pieces-5/stm32wbx5",
265+
"drone-stm32-map-pieces-6/stm32wbx5",
266+
"drone-stm32-map-pieces-7/stm32wbx5",
267+
"drone-stm32-map-pieces-8/stm32wbx5",
268+
"drone-stm32-map-pieces-9/stm32wbx5",
269+
"drone-stm32-map-pieces-10/stm32wbx5",
270+
"drone-stm32-map-pieces-11/stm32wbx5",
271+
"drone-stm32-map-pieces-12/stm32wbx5",
272+
]
258273

259274
[dependencies.drone-core]
260275
version = "0.10.0"

svd/src/lib.rs

+14
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ macro_rules! svd_feature {
6565
"stm32l4s7"
6666
} else if cfg!(feature = "stm32l4s9") {
6767
"stm32l4s9"
68+
} else if cfg!(feature = "stm32wbx5") {
69+
"stm32wbx5"
6870
} else {
6971
""
7072
}
@@ -122,10 +124,16 @@ fn svd_deserialize(feature: &str) -> Result<Device, Error> {
122124
"stm32l4s5" => patch_stm32l4plus(parse_svd("STM32L4S5.svd")?),
123125
"stm32l4s7" => patch_stm32l4plus(parse_svd("STM32L4S7.svd")?),
124126
"stm32l4s9" => patch_stm32l4plus(parse_svd("STM32L4S9.svd")?),
127+
"stm32wbx5" => patch_stm32wbx5(parse_svd("STM32WBxx_CM4.svd")?),
125128
_ => Ok(Device::new("Generic STM32".to_string())),
126129
}
127130
}
128131

132+
fn patch_stm32wbx5(mut dev: Device) -> Result<Device, Error> {
133+
fix_802154(&mut dev)?;
134+
Ok(dev)
135+
}
136+
129137
fn patch_stm32f102(mut dev: Device) -> Result<Device, Error> {
130138
fix_spi2_1(&mut dev)?;
131139
Ok(dev)
@@ -232,6 +240,12 @@ fn patch_stm32l4plus(mut dev: Device) -> Result<Device, Error> {
232240
Ok(dev)
233241
}
234242

243+
fn fix_802154(dev: &mut Device) -> Result<(), Error> {
244+
dev.field_mut("PWR", "SR1", "802WUF").name = "IEEE802WUF".to_string();
245+
dev.field_mut("PWR", "C2CR1", "802EWKUP").name = "IEEE802EWKUP".to_string();
246+
Ok(())
247+
}
248+
235249
fn add_dmamux(dev: &mut Device) -> Result<(), Error> {
236250
dev.add_peripheral(serde_xml_rs::deserialize(
237251
read_svd("patch/add_dmamux.xml")?.as_bytes(),

0 commit comments

Comments
 (0)