Hi, Dave,
Regarding your question that the DMA can not update the PWM duty cycle reliably, I think we should find out the other solution, as Mr Josh said, it is not reliable just to write the FTM_CnV register by DMA from a variable from memory in order to update the duty cycle of PWM..
If you would like to write the FTM_CnV register to update the duty cycle reliably, I suggest you you use the FTM loading function by set the LDOK bit in FTM_PWMLOAD, in the method, the DMA has to write FTM_CnV register even FTM_Cn+1V, FTM_Cn+2V... registers and FTM_PWMLOAD, so the DMA needs complicated configuration, but I think the method is feasible. You can use minor channel link mode of DMA, for example, after FTM_Cn+1V, FTM_Cn+2V... register has transferred by DMA, the minor channel link is triggered, then the linked channel of DMA can transfer the data in a variable to FTM_PWMLOAD to set the LDOK bit, I think the PWM duty cycle can be updated reliably in this way.
If you are familiar with eDMA module, you can have a try. I think the solution is feasible, but I have never tried yet, I will develop an example to try the method.
Hope it can give you clue.
BR
XiangJun Rong