Has anyone ever gotten DMA2 to update TIM1 or TIM8 CCRx registers to work ?
I've been trying to get any DMA2 stream-channel (presently TIM1_UP) to update TIM1 CCR1,2, or 3 registers using a table in memory for a while now with no luck. Before adding some of my code here, I thought I would see if anyone has ever actually gotten that to work before.
The manual is vague and there are a few web pages that mention passing capture registers to memory (peripheral to memory) and supposedly the other way around should work.
I have ADC1, ADC2, ADC3 succesfully transfering to memory though. That seemed easy compared to this.
I have the DMA2 Stream5 NDTR doing the right thing when TIM1 is enabled to do so but the data, IF coming from memory to peripheral is going out into space somewhere.
Direct mode, FIFO mode, Double buffer mode.... Nothing seems to put data into any of those CCR registers from the data array
A software example of this would be really nice if anyone knows of one out there. There is a thread from 2016 where Clive pointed to one I think but that link is now dead.
A couple of additional questions...
The TIM1&TIM8 DMAR register (for full transfer)...
What does that mean exactly, "for full transfer" ? Is the DMAR necessary for loading CCRx from memory in DMA mode ?
Why would I see others (code examples on the interweb) do this...
DMA2_Stream5->PAR = (uint32_t) &TIM1->DMAR;
DMAR is supposed to contain the start of the peripheral address, why would they want the address of the DMAR in the DMA2 Peripheral Address Register ?
And what exactly do they mean by peripheral control or DMA controller control ? Is that the trigger only ?
Thanks,
boB
