@@ -397,15 +397,22 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t* self,
397397 if (self -> right_channel == & pin_PA02 ) {
398398 right_channel_reg = (uint32_t ) & DAC -> DATABUF [0 ].reg ;
399399 }
400- result = audio_dma_setup_playback (& self -> left_dma , sample , loop , true, 0 ,
401- false /* output unsigned */ ,
402- left_channel_reg ,
403- left_channel_trigger );
404- if (right_channel_reg != 0 && result == AUDIO_DMA_OK ) {
405- result = audio_dma_setup_playback (& self -> right_dma , sample , loop , true, 1 ,
400+ if (right_channel_reg == left_channel_reg + 2 && audiosample_bits_per_sample (sample ) == 16 ) {
401+ result = audio_dma_setup_playback (& self -> left_dma , sample , loop , false, 0 ,
406402 false /* output unsigned */ ,
407- right_channel_reg ,
408- right_channel_trigger );
403+ left_channel_reg ,
404+ left_channel_trigger );
405+ } else {
406+ result = audio_dma_setup_playback (& self -> left_dma , sample , loop , true, 0 ,
407+ false /* output unsigned */ ,
408+ left_channel_reg ,
409+ left_channel_trigger );
410+ if (right_channel_reg != 0 && result == AUDIO_DMA_OK ) {
411+ result = audio_dma_setup_playback (& self -> right_dma , sample , loop , true, 1 ,
412+ false /* output unsigned */ ,
413+ right_channel_reg ,
414+ right_channel_trigger );
415+ }
409416 }
410417 #endif
411418 if (result != AUDIO_DMA_OK ) {
0 commit comments