Skip to content

Commit 5a30cb0

Browse files
Merge #593
593: Added U(S)ART DMA traits for HAL serial types r=burrbull a=HelloWorldTeraByte DMA traits for the HAL serial type were missing for some of the U(S)ARTs. The trait was only implemented for the PAC in some places. The users can now for example use. ``` let dma1 = StreamsTuple::new(cx.device.DMA1); let uart_dma_cfg = DmaConfig::default().transfer_complete_interrupt(true).memory_increment(true); let (tx, rx) = Serial::new( cx.device.UART4, (tx_pin, rx_pin), serial::Config::default() .baudrate(9600.bps()) .wordlength_8() .parity_none() .stopbits(serial::config::StopBits::STOP1) .dma(serial::config::DmaConfig::Rx), &clocks, ) .unwrap() .split(); let mut dma_rx_transfer = Transfer::init_peripheral_to_memory( dma1.2, rx, cx.local.rx_buf0, None, uart_dma_cfg, ); ``` Without the pull request, the users would get `DMASet<..>` not implemented error for some the U(S)ARTs. Co-authored-by: randi <[email protected]>
2 parents b8b94e6 + 97fa5a6 commit 5a30cb0

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
77

88
## [Unreleased]
99

10+
- Added missing U(S)ART DMA traits for HAL serial types [#593]
1011
- Improve SPI::new* docs [#587]
1112
- Add advanced timer dead time insertion example [#585]
1213

src/dma/traits.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,11 @@ address!((pac::SPI4, dr, u8),);
649649
))]
650650
dma_map!(
651651
(Stream0<DMA1>, 4, pac::UART5, PeripheralToMemory), //UART5_RX
652+
(Stream0<DMA1>, 4, serial::Rx<pac::UART5>, PeripheralToMemory), //UART5_RX
652653
(Stream2<DMA1>, 4, pac::UART4, PeripheralToMemory), //UART4_RX
654+
(Stream2<DMA1>, 4, serial::Rx<pac::UART4>, PeripheralToMemory), //UART4_RX
653655
(Stream4<DMA1>, 4, pac::UART4, MemoryToPeripheral), //UART4_TX
656+
(Stream4<DMA1>, 4, serial::Tx<pac::UART4>, MemoryToPeripheral), //UART4_TX
654657
//(Stream6<DMA1>, 7, pac::DAC2, MemoryToPeripheral), //DAC2
655658
);
656659

@@ -864,6 +867,7 @@ address!(
864867
))]
865868
dma_map!(
866869
(Stream7<DMA1>, 4, pac::UART5, MemoryToPeripheral), //UART5_TX
870+
(Stream7<DMA1>, 4, serial::Tx<pac::UART5>, MemoryToPeripheral), //UART5_TX
867871
(Stream0<DMA2>, 2, pac::ADC3, PeripheralToMemory), //ADC3
868872
(Stream1<DMA2>, 1, pac::DCMI, PeripheralToMemory), //DCMI
869873
(Stream1<DMA2>, 2, pac::ADC3, PeripheralToMemory), //ADC3
@@ -935,6 +939,7 @@ dma_map!(
935939
(Stream7<DMA1>, 1, pac::I2C1, MemoryToPeripheral), //I2C1_TX:DMA_CHANNEL_1
936940
(Stream7<DMA1>, 1, i2c::Tx<pac::I2C1>, MemoryToPeripheral), //I2C1_TX:DMA_CHANNEL_1
937941
(Stream7<DMA1>, 6, pac::USART2, PeripheralToMemory), //USART2_RX:DMA_CHANNEL_6
942+
(Stream7<DMA1>, 6, serial::Rx<pac::USART2>, PeripheralToMemory), //USART2_RX:DMA_CHANNEL_6
938943
(Stream2<DMA2>, 2, pac::SPI1, MemoryToPeripheral), //SPI1_TX
939944
(Stream2<DMA2>, 2, spi::Tx<pac::SPI1>, MemoryToPeripheral), //SPI1_TX
940945
(Stream3<DMA2>, 3, pac::SPI1, MemoryToPeripheral), //SPI1_TX:DMA_CHANNEL_3
@@ -1060,9 +1065,13 @@ address!((pac::QUADSPI, dr, u32),);
10601065
))]
10611066
dma_map!(
10621067
(Stream0<DMA1>, 5, pac::UART8, MemoryToPeripheral), //UART8_TX
1068+
(Stream0<DMA1>, 5, serial::Tx<pac::UART8>, MemoryToPeripheral), //UART8_TX
10631069
(Stream1<DMA1>, 5, pac::UART7, MemoryToPeripheral), //UART7_TX
1070+
(Stream1<DMA1>, 5, serial::Tx<pac::UART7>, MemoryToPeripheral), //UART7_TX
10641071
(Stream3<DMA1>, 5, pac::UART7, PeripheralToMemory), //UART7_RX
1072+
(Stream3<DMA1>, 5, serial::Rx<pac::UART7>, PeripheralToMemory), //UART7_RX
10651073
(Stream6<DMA1>, 5, pac::UART8, PeripheralToMemory), //UART8_RX
1074+
(Stream6<DMA1>, 5, serial::Rx<pac::UART8>, PeripheralToMemory), //UART8_RX
10661075
);
10671076

10681077
#[cfg(any(
@@ -1080,12 +1089,19 @@ address!((pac::UART7, dr, u8), (pac::UART8, dr, u8),);
10801089
#[cfg(any(feature = "stm32f413", feature = "stm32f423",))]
10811090
dma_map!(
10821091
(Stream7<DMA1>, 8, pac::UART5, MemoryToPeripheral), //UART5_TX
1092+
(Stream7<DMA1>, 8, serial::Tx<pac::UART5>, MemoryToPeripheral), //UART5_TX
10831093
(Stream0<DMA2>, 1, pac::UART9, MemoryToPeripheral), //UART9_TX
1094+
(Stream0<DMA2>, 1, serial::Tx<pac::UART9>, MemoryToPeripheral), //UART9_TX
10841095
(Stream0<DMA2>, 5, pac::UART10, PeripheralToMemory), //UART10_RX
1096+
(Stream0<DMA2>, 5, serial::Rx<pac::UART10>, PeripheralToMemory), //UART10_RX
10851097
(Stream3<DMA2>, 9, pac::UART10, PeripheralToMemory), //UART10_RX:DMA_CHANNEL_9
1098+
(Stream3<DMA2>, 9, serial::Rx<pac::UART10>, PeripheralToMemory), //UART10_RX:DMA_CHANNEL_9
10861099
(Stream5<DMA2>, 9, pac::UART10, MemoryToPeripheral), //UART10_TX
1100+
(Stream5<DMA2>, 9, serial::Tx<pac::UART10>, MemoryToPeripheral), //UART10_TX
10871101
(Stream7<DMA2>, 0, pac::UART9, PeripheralToMemory), //UART9_RX
1102+
(Stream7<DMA2>, 0, serial::Rx<pac::UART9>, PeripheralToMemory), //UART9_RX
10881103
(Stream7<DMA2>, 6, pac::UART10, MemoryToPeripheral), //UART10_TX:DMA_CHANNEL_6
1104+
(Stream7<DMA2>, 6, serial::Tx<pac::UART10>, MemoryToPeripheral), //UART10_TX:DMA_CHANNEL_6
10891105
//(pac::DMA2, Stream6, 2, IN<pac::AES>, MemoryToPeripheral), //AES_IN
10901106
//(pac::DMA2, Stream5, 2, OUT<pac::AES>, PeripheralToMemory), //AES_OUT
10911107
);

0 commit comments

Comments
 (0)