Skip to content

Commit 2ef7043

Browse files
committed
dma f7
1 parent 366bfe2 commit 2ef7043

File tree

4 files changed

+190
-56
lines changed

4 files changed

+190
-56
lines changed

Cargo.toml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ gpio-f412 = [
344344
gpio-f413 = [
345345
"otg-fs",
346346
"rng",
347-
"can1", "can2", "can3", "dfsdm1", "dfsdm2", "fmpi2c1", "fsmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "i2c2", "i2c3", "i2s", "i2s1", "i2s2", "i2s3", "i2s4", "i2s5", "lptim1", "quadspi", "rtc", "sai1", "sdio", "spi1", "spi2", "spi3", "spi4", "spi5", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "uart10", "uart4", "uart5", "uart7", "uart8", "uart9", "usart1", "usart2", "usart3", "usart6",
347+
"aes", "can1", "can2", "can3", "dfsdm1", "dfsdm2", "fmpi2c1", "fsmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "i2c2", "i2c3", "i2s", "i2s1", "i2s2", "i2s3", "i2s4", "i2s5", "lptim1", "quadspi", "rtc", "sai1", "sdio", "spi1", "spi2", "spi3", "spi4", "spi5", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim6", "tim7", "tim8", "tim9", "uart10", "uart4", "uart5", "uart7", "uart8", "uart9", "usart1", "usart2", "usart3", "usart6",
348348
]
349349
gpio-f417 = [
350350
"otg-fs",
@@ -399,13 +399,13 @@ svd-f7x7 = ["f7", "stm32f7?/stm32f7x7", "gpio-f76x", "ltdc", "fmc"]
399399
svd-f7x9 = ["f7", "stm32f7?/stm32f7x9", "gpio-f76x", "ltdc", "fmc"]
400400

401401
gpio-f72x = [
402-
"can1", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "i2c2", "i2c3", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "sdmmc2", "spi1", "spi2", "spi3", "spi4", "spi5", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
402+
"aes", "can1", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "i2c2", "i2c3", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "sdmmc2", "spi1", "spi2", "spi3", "spi4", "spi5", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
403403
]
404404
gpio-f746 = [
405-
"can1", "can2", "dcmi", "eth", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "gpioj", "gpiok", "i2c2", "i2c3", "i2c4", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "ltdc", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "spdifrx", "spi1", "spi2", "spi3", "spi4", "spi5", "spi6", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
405+
"can1", "can2", "cryp", "dcmi", "eth", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "gpioj", "gpiok", "hash", "i2c2", "i2c3", "i2c4", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "ltdc", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "spdifrx", "spi1", "spi2", "spi3", "spi4", "spi5", "spi6", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
406406
]
407407
gpio-f76x = [
408-
"can1", "can2", "can3", "dcmi", "dfsdm1", "dsihost", "eth", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "gpioj", "gpiok", "i2c2", "i2c3", "i2c4", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "ltdc", "mdios", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "sdmmc2", "spdifrx", "spi1", "spi2", "spi3", "spi4", "spi5", "spi6", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
408+
"can1", "can2", "cryp", "can3", "dcmi", "dfsdm1", "dsihost", "eth", "fmc", "gpioc", "gpiod", "gpioe", "gpiof", "gpiog", "gpioh", "gpioi", "gpioj", "gpiok", "hash", "i2c2", "i2c3", "i2c4", "i2s", "i2s1", "i2s2", "i2s3", "lptim1", "ltdc", "mdios", "quadspi", "rtc", "sai1", "sai2", "sdmmc1", "sdmmc2", "spdifrx", "spi1", "spi2", "spi3", "spi4", "spi5", "spi6", "sys", "tim1", "tim10", "tim11", "tim12", "tim13", "tim14", "tim2", "tim3", "tim4", "tim5", "tim8", "tim9", "uart4", "uart5", "uart7", "uart8", "usart1", "usart2", "usart3", "usart6", "otg-fs", "otg-hs",
409409
]
410410

411411
# G0
@@ -622,9 +622,11 @@ sai = []
622622
adc2 = []
623623
adc3 = []
624624
adf1 = []
625+
aes = []
625626
can1 = []
626627
can2 = []
627628
can3 = []
629+
cryp = []
628630
cm4 = []
629631
crs1 = []
630632
comp1 = []
@@ -641,6 +643,7 @@ debug = []
641643
dfsdm1 = ["dfsdm"]
642644
dfsdm2 = ["dfsdm"]
643645
dsihost = []
646+
hash = []
644647
eth = []
645648
fdcan1 = []
646649
fdcan2 = []

src/dma/traits.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,3 +380,48 @@ dma_map!(
380380
(Stream6<DMA2>:0, MemoryToMemory<u8>, [MemoryToMemory<u8> | MemoryToMemory<u16> | MemoryToMemory<u32>]),
381381
(Stream7<DMA2>:0, MemoryToMemory<u8>, [MemoryToMemory<u8> | MemoryToMemory<u16> | MemoryToMemory<u32>]),
382382
);
383+
384+
#[cfg(feature = "spdifrx")]
385+
address!(
386+
(pac::SPDIFRX, dr, u32),
387+
);
388+
389+
#[cfg(feature = "aes")]
390+
pub struct AES_IN(());
391+
#[cfg(feature = "aes")]
392+
pub struct AES_OUT(());
393+
394+
#[cfg(feature = "aes")]
395+
unsafe impl PeriAddress for AES_IN {
396+
fn address(&self) -> u32 {
397+
unsafe { &(*pac::AES::ptr()).dinr as *const _ as u32 }
398+
}
399+
type MemSize = u32;
400+
}
401+
#[cfg(feature = "aes")]
402+
unsafe impl PeriAddress for AES_OUT {
403+
fn address(&self) -> u32 {
404+
unsafe { &(*pac::AES::ptr()).doutr as *const _ as u32 }
405+
}
406+
type MemSize = u32;
407+
}
408+
409+
#[cfg(feature = "cryp")]
410+
pub struct CRYP_IN(());
411+
#[cfg(feature = "cryp")]
412+
pub struct CRYP_OUT(());
413+
414+
#[cfg(feature = "cryp")]
415+
unsafe impl PeriAddress for CRYP_IN {
416+
fn address(&self) -> u32 {
417+
unsafe { &(*pac::CRYP::ptr()).din as *const _ as u32 }
418+
}
419+
type MemSize = u32;
420+
}
421+
#[cfg(feature = "cryp")]
422+
unsafe impl PeriAddress for CRYP_OUT {
423+
fn address(&self) -> u32 {
424+
unsafe { &(*pac::CRYP::ptr()).dout as *const _ as u32 }
425+
}
426+
type MemSize = u32;
427+
}

src/dma/traits/f4.rs

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -301,8 +301,6 @@ dma_map!(
301301
(Stream1<DMA2>:2, pac::ADC3, [PeripheralToMemory]), //ADC3
302302
(Stream2<DMA2>:1, pac::ADC2, [PeripheralToMemory]), //ADC2
303303
(Stream3<DMA2>:1, pac::ADC2, [PeripheralToMemory]), //ADC2
304-
(Stream1<DMA2>:1, pac::DCMI, [PeripheralToMemory]), //DCMI
305-
(Stream7<DMA2>:1, pac::DCMI, [PeripheralToMemory]), //DCMI
306304
);
307305
#[cfg(any(
308306
feature = "gpio-f417",
@@ -313,6 +311,15 @@ dma_map!(
313311
address!(
314312
(pac::ADC2, dr, u16),
315313
(pac::ADC3, dr, u16),
314+
);
315+
316+
#[cfg(feature = "dcmi")]
317+
dma_map!(
318+
(Stream1<DMA2>:1, pac::DCMI, [PeripheralToMemory]), //DCMI
319+
(Stream7<DMA2>:1, pac::DCMI, [PeripheralToMemory]), //DCMI
320+
);
321+
#[cfg(feature = "dcmi")]
322+
address!(
316323
(pac::DCMI, dr, u32),
317324
);
318325

@@ -432,23 +439,14 @@ unsafe impl<const F: u8> PeriAddress for FLT<pac::DFSDM2, F> {
432439
433440
type MemSize = u32;
434441
}
435-
*/
436-
#[cfg(any(
437-
feature = "gpio-f412",
438-
feature = "gpio-f413",
439-
feature = "gpio-f446",
440-
feature = "gpio-f469",
441-
))]
442+
*/
443+
444+
#[cfg(feature = "quadspi")]
442445
dma_map!(
443446
(Stream7<DMA2>:3, pac::QUADSPI, [MemoryToPeripheral | PeripheralToMemory]), //QUADSPI
444447
);
445448

446-
#[cfg(any(
447-
feature = "gpio-f412",
448-
feature = "gpio-f413",
449-
feature = "gpio-f446",
450-
feature = "gpio-f469",
451-
))]
449+
#[cfg(feature = "quadspi")]
452450
address!((pac::QUADSPI, dr, u32),);
453451

454452
#[cfg(any(feature = "gpio-f413", feature = "gpio-f427", feature = "gpio-f469",))]
@@ -471,18 +469,19 @@ dma_map!(
471469
(Stream5<DMA2>:9, pac::UART10, [MemoryToPeripheral]), //UART10_TX
472470
(Stream7<DMA2>:0, pac::UART9, [PeripheralToMemory]), //UART9_RX
473471
(Stream7<DMA2>:6, pac::UART10, [MemoryToPeripheral]), //UART10_TX:DMA_CHANNEL_6
474-
//(Stream6<DMA2>:2, IN<pac::AES>, [MemoryToPeripheral]), //AES_IN
475-
//(Stream5<DMA2>:2, OUT<pac::AES>, [PeripheralToMemory]), //AES_OUT
476472
);
477-
478473
#[cfg(feature = "gpio-f413")]
479474
address!(
480-
//(IN<pac::AES>, dinr),
481-
//(OUT<pac::AES>, doutr),
482475
(pac::UART9, dr, u8),
483476
(pac::UART10, dr, u8),
484477
);
485478

479+
#[cfg(feature = "aes")]
480+
dma_map!(
481+
(Stream6<DMA2>:2, AES_IN, [MemoryToPeripheral]), //AES_IN
482+
(Stream5<DMA2>:2, AES_OUT, [PeripheralToMemory]), //AES_OUT
483+
);
484+
486485
#[cfg(feature = "sai1")]
487486
mod sai1 {
488487
use super::*;
@@ -508,22 +507,43 @@ mod sai1 {
508507
type MemSize = u32;
509508
}
510509
}
510+
#[cfg(feature = "sai2")]
511+
dma_map!(
512+
(Stream4<DMA2>:3, SAICH<pac::SAI2, 0>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_A
513+
(Stream6<DMA2>:3, SAICH<pac::SAI2, 1>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_B
514+
(Stream7<DMA2>:0, SAICH<pac::SAI2, 1>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_B:DMA_CHANNEL_0
515+
);
516+
517+
#[cfg(feature = "sai2")]
518+
unsafe impl<const C: u8> PeriAddress for SAICH<pac::SAI2, C> {
519+
#[inline(always)]
520+
fn address(&self) -> u32 {
521+
unsafe { &(*pac::SAI2::ptr()).ch[C as usize].dr as *const _ as u32 }
522+
}
523+
524+
type MemSize = u32;
525+
}
511526

512-
#[cfg(any(feature = "gpio-f427", feature = "gpio-f469",))]
527+
#[cfg(feature = "spi6")]
513528
dma_map!(
514529
(Stream5<DMA2>:1, pac::SPI6, [MemoryToPeripheral]), //SPI6_TX
515530
(Stream6<DMA2>:1, pac::SPI6, [PeripheralToMemory]), //SPI6_RX
516531
);
517532

518-
#[cfg(any(feature = "gpio-f427", feature = "gpio-f469",))]
533+
#[cfg(feature = "spi6")]
519534
address!((pac::SPI6, dr, u8),);
520535

536+
#[cfg(feature = "spdifrx")]
537+
dma_map!(
538+
(Stream1<DMA1>:0, pac::SPDIFRX, [PeripheralToMemory]), //SPDIF_RX_DT
539+
//(Stream6<DMA1>:0, SPDIFRX_CS, [PeripheralToMemory]), //SPDIF_RX_CS
540+
);
541+
521542
/*
522543
#[cfg(any(
523544
feature = "gpio-f446",
524545
))]
525546
dma_map!(
526-
(Stream1<DMA1>:0, pac::SPDIFRX, [PeripheralToMemory]), //SPDIF_RX_DT
527547
(Stream2<DMA1>:2, pac::FMPI2C1, [PeripheralToMemory]), //FMPI2C1_RX
528548
(Stream5<DMA1>:2, pac::FMPI2C1, [MemoryToPeripheral]), //FMPI2C1_TX
529549
(Stream6<DMA1>:0, pac::SPDIFRX, [PeripheralToMemory]), //SPDIF_RX_CS
@@ -533,24 +553,7 @@ dma_map!(
533553
feature = "gpio-f446",
534554
))]
535555
address!(
536-
(pac::SPDIFRX, ??),
537556
(pac::FMPI2C1, ??),
538557
);
539558
*/
540559

541-
#[cfg(feature = "sai2")]
542-
dma_map!(
543-
(Stream4<DMA2>:3, SAICH<pac::SAI2, 0>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_A
544-
(Stream6<DMA2>:3, SAICH<pac::SAI2, 1>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_B
545-
(Stream7<DMA2>:0, SAICH<pac::SAI2, 1>, [MemoryToPeripheral | PeripheralToMemory]), //SAI2_B:DMA_CHANNEL_0
546-
);
547-
548-
#[cfg(feature = "sai2")]
549-
unsafe impl<const C: u8> PeriAddress for SAICH<pac::SAI2, C> {
550-
#[inline(always)]
551-
fn address(&self) -> u32 {
552-
unsafe { &(*pac::SAI2::ptr()).ch[C as usize].dr as *const _ as u32 }
553-
}
554-
555-
type MemSize = u32;
556-
}

0 commit comments

Comments
 (0)