8000 stm32/machine_i2s: Correctly set the DMA transfer size. · micropython/micropython@9c9a930 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c9a930

Browse files
committed
stm32/machine_i2s: Correctly set the DMA transfer size.
Signed-off-by: Damien George <damien@micropython.org>
1 parent 6c6f15c commit 9c9a930

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

ports/stm32/machine_i2s.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -537,18 +537,26 @@ STATIC bool i2s_init(machine_i2s_obj_t *self) {
537537
__SPI1_CLK_ENABLE();
538538
// configure DMA streams
539539
if (self->mode == I2S_MODE_MASTER_RX || self->mode == I2S_MODE_SLAVE_RX) {
540-
self->dma_descr_rx = &dma_I2S_1_RX;
540+
self->dma_descr_rx = &dma_I2S_1_RX_32; // always 32-bit
541541
} else {
542-
self->dma_descr_tx = &dma_I2S_1_TX;
542+
if (self->hi2s.Init.DataFormat == I2S_DATAFORMAT_16B) {
543+
self->dma_descr_tx = &dma_I2S_1_TX_16;
544+
} else {
545+
self->dma_descr_tx = &dma_I2S_1_TX_32;
546+
}
543547
}
544548
} else if (self->i2s_id == 2) {
545549
self->hi2s.Instance = I2S2;
546550
__SPI2_CLK_ENABLE();
547551
// configure DMA streams
548552
if (self->mode == I2S_MODE_MASTER_RX || self->mode == I2S_MODE_SLAVE_RX) {
549-
self->dma_descr_rx = &dma_I2S_2_RX;
553+
self->dma_descr_rx = &dma_I2S_2_RX_32; // always 32-bit
550554
} else {
551-
self->dma_descr_tx = &dma_I2S_2_TX;
555+
if (self->hi2s.Init.DataFormat == I2S_DATAFORMAT_16B) {
556+
self->dma_descr_tx = &dma_I2S_1_TX_16;
557+
} else {
558+
self->dma_descr_tx = &dma_I2S_2_TX_32;
559+
}
552560
}
553561
} else {
554562
// invalid id number; should not get here as i2s object should not

0 commit comments

Comments
 (0)
0