I am trying to trigger a write to GPIO1->DR via DMA using the TMR peripheral of the i.MX RT1050. Is this possible?
My reading of the reference manual is that the TMR should be able to generate DMA requests when CMPLD1 (or CMPLD2) "needs an update" (see Sec 53.10). I'm not totally sure what "needs an update" means, but according to Sec 53.11.13 it seems that it should mean anytime the the contents of CMPLD1 are transferred to COMP1.
Setting this bit enables DMA write requests for CMPLD1 whenever data is transferred out of the CMPLD1 register into the COMP1 register.
I have TMR3_CSTRL0[CL1] = 0x2 ("load upon successful compare with the value in COMP2").
The DMA request is enabled with:
QTMR_EnableDma(DAC_TIMER, DAC_DMA_CHAN, kQTMR_ComparatorPreload1DmaEnable);
Furthermore, the DMA MUX is configured with:
DMAMUX_SetSource(DMA0_DMAMUX_BASEADDR, DMA0_CH0_DMA_CHANNEL, kDmaRequestMuxQTIMER3CaptTimer0Cmpld1Timer0Cmpld2Timer1);
I've configured TMR3_CH0 to generate a 1 MHz signal with 25% duty factor, synchronous to TMR3_CH1 (50% duty factor).
Unfortunately, it appears that the GPIO writes are not synchronized to the TMR channels, as you can see in the following oscilloscope capture. I've configured the DMA source to buffer the values [0, 1, 2, 3] and the destination to be GPIO1->DR. These decimal values can be represented on the two pins (captured by CH3 and CH4 of the oscilloscope).

So the DMA transfers are happening, but they are not being triggered by TMR3_CH0 as desired.
Any ideas as to what might be wrong?