@@ -397,15 +397,22 @@ void common_hal_audioio_audioout_play(audioio_audioout_obj_t* self,
397
397
if (self -> right_channel == & pin_PA02 ) {
398
398
right_channel_reg = (uint32_t ) & DAC -> DATABUF [0 ].reg ;
399
399
}
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 ,
406
402
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
+ }
409
416
}
410
417
#endif
411
418
if (result != AUDIO_DMA_OK ) {
0 commit comments