Hi Phuong,
You can try to use QTMR. There is a demo called evkbimxrt1050_qtmr_inputcapture_outputpwm_dma. You can find it in SDK_2.5.0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\qtmr\inputcapture_outputpwm_dma.
It shows 2 function of QTMR. One is capture, the other is pwm. In the pwm part, it use DMA to fill CMPLD register. You can also use it to move data from existing source to destination register.
EDMA_PrepareTransfer(
&transferConfig,
(uint16_t *)&g_Cmpld1Value, //source data address
2, // width
(uint16_t *)&BOARD_QTMR_BASEADDR->CHANNEL[BOARD_QTMR_PWM_CHANNEL].CMPLD1, //destination data address
2,
2,
2,
kEDMA_MemoryToPeripheral);
Regards,
Jing