I got it working in Burst mode. Hence, now it's doing stereo with the same resources.
In this mode, when the timer triggers the DMA, it does it multiple times, and uses a virtual register (DMAR) that will redirect the data to register offset set in DCR.
In this case , burst=2, offset=CCR1, so it will update 2 channels at once (CCR1 + CCR2).
Only 3 lines of code, however getting it configured correctly took a few tries
/* Configure timer in DMA burst mode
*
* Timer start offset = CCR1
* DMA trigger source = Timer Update
* DMA source = PCMdata[]
* Burst count = 2
*/ Total data length = PCMsize (it's a #define here)
HAL_TIM_DMABurst_MultiWriteStart(&htim1, TIM_DMABASE_CCR1, TIM_DMA_UPDATE, (uint32_t*)&PCMdata[0], TIM_DMABURSTLENGTH_2TRANSFERS, PCMsize);
// Start PWM channels
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
But I have bad news: STM32 F0 and F1 series don't have it... only single transfer.
It seems it does! AN4776 said that... but it's wrong.