diff options
Diffstat (limited to 'ports/stm32/machine_i2s.c')
| -rw-r--r-- | ports/stm32/machine_i2s.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ports/stm32/machine_i2s.c b/ports/stm32/machine_i2s.c index 32167cf4e..266dd45e8 100644 --- a/ports/stm32/machine_i2s.c +++ b/ports/stm32/machine_i2s.c @@ -509,6 +509,9 @@ STATIC void feed_dma(machine_i2s_obj_t *self, ping_pong_t dma_ping_pong) { if (self->bits == 32) { reformat_32_bit_samples((int32_t *)dma_buffer_p, SIZEOF_HALF_DMA_BUFFER_IN_BYTES / (sizeof(uint32_t))); } + } else { + // underflow. clear buffer to transmit "silence" on the I2S bus + memset(dma_buffer_p, 0, SIZEOF_HALF_DMA_BUFFER_IN_BYTES); } // flush cache to RAM so DMA can read the sample data |
