diff options
| -rw-r--r-- | embassy-stm32/gen.py | 88 | ||||
| -rw-r--r-- | embassy-stm32/src/sdmmc/mod.rs | 2 | ||||
| -rw-r--r-- | embassy-stm32/src/sdmmc/v2.rs | 59 |
3 files changed, 49 insertions, 100 deletions
diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py index 7c128c1aa..ddd4a3b88 100644 --- a/embassy-stm32/gen.py +++ b/embassy-stm32/gen.py | |||
| @@ -48,48 +48,6 @@ with open(output_file, 'w') as f: | |||
| 48 | 48 | ||
| 49 | custom_singletons = False | 49 | custom_singletons = False |
| 50 | 50 | ||
| 51 | # if block_mod == 'usart': | ||
| 52 | # f.write(f'impl_usart!({name});') | ||
| 53 | # for pin, funcs in af.items(): | ||
| 54 | # if pin in pins: | ||
| 55 | # if (func := funcs.get(f'{name}_RX')) != None: | ||
| 56 | # f.write(f'impl_usart_pin!({name}, RxPin, {pin}, {func});') | ||
| 57 | # if (func := funcs.get(f'{name}_TX')) != None: | ||
| 58 | # f.write(f'impl_usart_pin!({name}, TxPin, {pin}, {func});') | ||
| 59 | # if (func := funcs.get(f'{name}_CTS')) != None: | ||
| 60 | # f.write(f'impl_usart_pin!({name}, CtsPin, {pin}, {func});') | ||
| 61 | # if (func := funcs.get(f'{name}_RTS')) != None: | ||
| 62 | # f.write(f'impl_usart_pin!({name}, RtsPin, {pin}, {func});') | ||
| 63 | # if (func := funcs.get(f'{name}_CK')) != None: | ||
| 64 | # f.write(f'impl_usart_pin!({name}, CkPin, {pin}, {func});') | ||
| 65 | |||
| 66 | # if block_mod == 'rng': | ||
| 67 | # for irq in chip['interrupts']: | ||
| 68 | # if re.search('RNG', irq): | ||
| 69 | # f.write(f'impl_rng!({name}, {irq});') | ||
| 70 | |||
| 71 | # if block_mod == 'spi': | ||
| 72 | # if 'clock' in peri: | ||
| 73 | # clock = peri['clock'] | ||
| 74 | # f.write(f'impl_spi!({name}, {clock});') | ||
| 75 | # for pin, funcs in af.items(): | ||
| 76 | # if pin in pins: | ||
| 77 | # if (func := funcs.get(f'{name}_SCK')) != None: | ||
| 78 | # f.write(f'impl_spi_pin!({name}, SckPin, {pin}, {func});') | ||
| 79 | # if (func := funcs.get(f'{name}_MOSI')) != None: | ||
| 80 | # f.write(f'impl_spi_pin!({name}, MosiPin, {pin}, {func});') | ||
| 81 | # if (func := funcs.get(f'{name}_MISO')) != None: | ||
| 82 | # f.write(f'impl_spi_pin!({name}, MisoPin, {pin}, {func});') | ||
| 83 | |||
| 84 | # if block_mod == 'i2c': | ||
| 85 | # f.write(f'impl_i2c!({name});') | ||
| 86 | # for pin, funcs in af.items(): | ||
| 87 | # if pin in pins: | ||
| 88 | # if func := funcs.get(f'{name}_SCL'): | ||
| 89 | # f.write(f'impl_i2c_pin!({name}, SclPin, {pin}, {func});') | ||
| 90 | # if func := funcs.get(f'{name}_SDA'): | ||
| 91 | # f.write(f'impl_i2c_pin!({name}, SdaPin, {pin}, {func});') | ||
| 92 | |||
| 93 | if block_mod == 'gpio': | 51 | if block_mod == 'gpio': |
| 94 | custom_singletons = True | 52 | custom_singletons = True |
| 95 | port = name[4:] | 53 | port = name[4:] |
| @@ -111,53 +69,7 @@ with open(output_file, 'w') as f: | |||
| 111 | 69 | ||
| 112 | f.write(f'impl_dma_channel!({channel}, {dma_num}, {ch_num});') | 70 | f.write(f'impl_dma_channel!({channel}, {dma_num}, {ch_num});') |
| 113 | 71 | ||
| 114 | if peri['block'] == 'sdmmc_v2/SDMMC': | ||
| 115 | f.write(f'impl_sdmmc!({name});') | ||
| 116 | for pin, funcs in af.items(): | ||
| 117 | if pin in pins: | ||
| 118 | if (func := funcs.get(f'{name}_CK')) != None: | ||
| 119 | f.write(f'impl_sdmmc_pin!({name}, CkPin, {pin}, {func});') | ||
| 120 | if (func := funcs.get(f'{name}_CMD')) != None: | ||
| 121 | f.write(f'impl_sdmmc_pin!({name}, CmdPin, {pin}, {func});') | ||
| 122 | if (func := funcs.get(f'{name}_D0')) != None: | ||
| 123 | f.write(f'impl_sdmmc_pin!({name}, D0Pin, {pin}, {func});') | ||
| 124 | if (func := funcs.get(f'{name}_D1')) != None: | ||
| 125 | f.write(f'impl_sdmmc_pin!({name}, D1Pin, {pin}, {func});') | ||
| 126 | if (func := funcs.get(f'{name}_D2')) != None: | ||
| 127 | f.write(f'impl_sdmmc_pin!({name}, D2Pin, {pin}, {func});') | ||
| 128 | if (func := funcs.get(f'{name}_D3')) != None: | ||
| 129 | f.write(f'impl_sdmmc_pin!({name}, D3Pin, {pin}, {func});') | ||
| 130 | if (func := funcs.get(f'{name}_D4')) != None: | ||
| 131 | f.write(f'impl_sdmmc_pin!({name}, D4Pin, {pin}, {func});') | ||
| 132 | if (func := funcs.get(f'{name}_D5')) != None: | ||
| 133 | f.write(f'impl_sdmmc_pin!({name}, D5Pin, {pin}, {func});') | ||
| 134 | if (func := funcs.get(f'{name}_D6')) != None: | ||
| 135 | f.write(f'impl_sdmmc_pin!({name}, D6Pin, {pin}, {func});') | ||
| 136 | if (func := funcs.get(f'{name}_D7')) != None: | ||
| 137 | f.write(f'impl_sdmmc_pin!({name}, D7Pin, {pin}, {func});') | ||
| 138 | |||
| 139 | # if block_name == 'TimGp16': | ||
| 140 | # if re.match('TIM[2345]$', name): | ||
| 141 | # f.write(f'impl_timer!({name});') | ||
| 142 | |||
| 143 | # if block_mod == 'exti': | ||
| 144 | # for irq in chip['interrupts']: | ||
| 145 | # if re.match('EXTI', irq): | ||
| 146 | # exti_interrupts.append(irq) | ||
| 147 | |||
| 148 | # if block_mod == 'dac': | ||
| 149 | # f.write(f'impl_dac!({name});') | ||
| 150 | # if 'dac_out1' in peri: | ||
| 151 | # pin = peri['dac_out1'] | ||
| 152 | # f.write(f'impl_dac_pin!({name}, 1, {pin});') | ||
| 153 | # if 'dac_out2' in peri: | ||
| 154 | # pin = peri['dac_out2'] | ||
| 155 | # f.write(f'impl_dac_pin!({name}, 2, {pin});') | ||
| 156 | # | ||
| 157 | if not custom_singletons: | 72 | if not custom_singletons: |
| 158 | singletons.append(name) | 73 | singletons.append(name) |
| 159 | 74 | ||
| 160 | f.write(f"embassy_extras::peripherals!({','.join(singletons)});") | 75 | f.write(f"embassy_extras::peripherals!({','.join(singletons)});") |
| 161 | |||
| 162 | # ========= exti interrupts | ||
| 163 | # f.write(f"impl_exti_irq!({','.join(exti_interrupts)});") | ||
diff --git a/embassy-stm32/src/sdmmc/mod.rs b/embassy-stm32/src/sdmmc/mod.rs index 087cb4c40..9244c22a6 100644 --- a/embassy-stm32/src/sdmmc/mod.rs +++ b/embassy-stm32/src/sdmmc/mod.rs | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | #![macro_use] | 1 | #![macro_use] |
| 2 | 2 | ||
| 3 | #[cfg_attr(sdmmc_v1, path = "v1.rs")] | 3 | //#[cfg_attr(sdmmc_v1, path = "v1.rs")] |
| 4 | #[cfg_attr(sdmmc_v2, path = "v2.rs")] | 4 | #[cfg_attr(sdmmc_v2, path = "v2.rs")] |
| 5 | mod _version; | 5 | mod _version; |
| 6 | 6 | ||
diff --git a/embassy-stm32/src/sdmmc/v2.rs b/embassy-stm32/src/sdmmc/v2.rs index e432ca9a3..6d21091a9 100644 --- a/embassy-stm32/src/sdmmc/v2.rs +++ b/embassy-stm32/src/sdmmc/v2.rs | |||
| @@ -15,6 +15,7 @@ use crate::interrupt::Interrupt; | |||
| 15 | use crate::pac; | 15 | use crate::pac; |
| 16 | use crate::pac::gpio::Gpio; | 16 | use crate::pac::gpio::Gpio; |
| 17 | use crate::pac::sdmmc::Sdmmc as RegBlock; | 17 | use crate::pac::sdmmc::Sdmmc as RegBlock; |
| 18 | use crate::peripherals; | ||
| 18 | use crate::time::Hertz; | 19 | use crate::time::Hertz; |
| 19 | 20 | ||
| 20 | /// The signalling scheme used on the SDMMC bus | 21 | /// The signalling scheme used on the SDMMC bus |
| @@ -1469,12 +1470,12 @@ where | |||
| 1469 | } | 1470 | } |
| 1470 | } | 1471 | } |
| 1471 | 1472 | ||
| 1472 | macro_rules! impl_sdmmc { | 1473 | crate::pac::peripherals!( |
| 1473 | ($inst:ident) => { | 1474 | (sdmmc, $inst:ident) => { |
| 1474 | impl crate::sdmmc::sealed::Instance for peripherals::$inst { | 1475 | impl sealed::Instance for peripherals::$inst { |
| 1475 | type Interrupt = crate::interrupt::$inst; | 1476 | type Interrupt = crate::interrupt::$inst; |
| 1476 | 1477 | ||
| 1477 | fn inner() -> crate::sdmmc::SdmmcInner { | 1478 | fn inner() -> SdmmcInner { |
| 1478 | const INNER: crate::sdmmc::SdmmcInner = crate::sdmmc::SdmmcInner(crate::pac::$inst); | 1479 | const INNER: crate::sdmmc::SdmmcInner = crate::sdmmc::SdmmcInner(crate::pac::$inst); |
| 1479 | INNER | 1480 | INNER |
| 1480 | } | 1481 | } |
| @@ -1485,20 +1486,56 @@ macro_rules! impl_sdmmc { | |||
| 1485 | } | 1486 | } |
| 1486 | } | 1487 | } |
| 1487 | 1488 | ||
| 1488 | impl crate::sdmmc::Instance for peripherals::$inst {} | 1489 | impl Instance for peripherals::$inst {} |
| 1489 | }; | 1490 | }; |
| 1490 | } | 1491 | ); |
| 1491 | 1492 | ||
| 1492 | macro_rules! impl_sdmmc_pin { | 1493 | macro_rules! impl_pin { |
| 1493 | ($inst:ident, $func:ident, $pin:ident, $num:expr) => { | 1494 | ($inst:ident, $pin:ident, $signal:ident, $af:expr) => { |
| 1494 | impl crate::sdmmc::sealed::$func<peripherals::$inst> for peripherals::$pin { | 1495 | impl crate::sdmmc::sealed::$signal<peripherals::$inst> for peripherals::$pin { |
| 1495 | const AF_NUM: u8 = $num; | 1496 | const AF_NUM: u8 = $af; |
| 1496 | } | 1497 | } |
| 1497 | 1498 | ||
| 1498 | impl crate::sdmmc::$func<peripherals::$inst> for peripherals::$pin {} | 1499 | impl crate::sdmmc::$signal<peripherals::$inst> for peripherals::$pin {} |
| 1499 | }; | 1500 | }; |
| 1500 | } | 1501 | } |
| 1501 | 1502 | ||
| 1503 | crate::pac::peripheral_pins!( | ||
| 1504 | ($inst:ident, sdmmc, SDMMC, $pin:ident, CK, $af:expr) => { | ||
| 1505 | impl_pin!($inst, $pin, CkPin, $af); | ||
| 1506 | }; | ||
| 1507 | ($inst:ident, sdmmc, SDMMC, $pin:ident, CMD, $af:expr) => { | ||
| 1508 | impl_pin!($inst, $pin, CmdPin, $af); | ||
| 1509 | }; | ||
| 1510 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D0, $af:expr) => { | ||
| 1511 | impl_pin!($inst, $pin, D0Pin, $af); | ||
| 1512 | }; | ||
| 1513 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D1, $af:expr) => { | ||
| 1514 | impl_pin!($inst, $pin, D1Pin, $af); | ||
| 1515 | }; | ||
| 1516 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D2, $af:expr) => { | ||
| 1517 | impl_pin!($inst, $pin, D2Pin, $af); | ||
| 1518 | }; | ||
| 1519 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D3, $af:expr) => { | ||
| 1520 | impl_pin!($inst, $pin, D3Pin, $af); | ||
| 1521 | }; | ||
| 1522 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D4, $af:expr) => { | ||
| 1523 | impl_pin!($inst, $pin, D4Pin, $af); | ||
| 1524 | }; | ||
| 1525 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D5, $af:expr) => { | ||
| 1526 | impl_pin!($inst, $pin, D5Pin, $af); | ||
| 1527 | }; | ||
| 1528 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => { | ||
| 1529 | impl_pin!($inst, $pin, D6Pin, $af); | ||
| 1530 | }; | ||
| 1531 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => { | ||
| 1532 | impl_pin!($inst, $pin, D7Pin, $af); | ||
| 1533 | }; | ||
| 1534 | ($inst:ident, sdmmc, SDMMC, $pin:ident, D8, $af:expr) => { | ||
| 1535 | impl_pin!($inst, $pin, D8Pin, $af); | ||
| 1536 | }; | ||
| 1537 | ); | ||
| 1538 | |||
| 1502 | #[cfg(feature = "sdmmc-rs")] | 1539 | #[cfg(feature = "sdmmc-rs")] |
| 1503 | mod sdmmc_rs { | 1540 | mod sdmmc_rs { |
| 1504 | use super::*; | 1541 | use super::*; |
