//使能DMA触发
Adc_ConfigDmaTrig(DmaSqr);
stcDmaCfg.enMode = DmaBlock;//DmaBurst;
stcDmaCfg.u16BlockSize = 0x03u;
stcDmaCfg.u16TransferCnt = 6; //burst模式,一次触发传输数据大小为 3*1,
stcDmaCfg.enTransferWidth = Dma32Bit;
stcDmaCfg.enSrcAddrMode = AddressIncrease;
stcDmaCfg.enDstAddrMode = AddressIncrease;
stcDmaCfg.bDestAddrReloadCtl = FALSE;
stcDmaCfg.bSrcAddrReloadCtl = TRUE;//FALSE;
stcDmaCfg.bSrcBcTcReloadCtl = TRUE;//FALSE;
stcDmaCfg.u32SrcAddress = (uint32_t) &(M0P_ADC->SQRRESULT0);
stcDmaCfg.u32DstAddress = (uint32_t)&ADC_Result_Array[0];
stcDmaCfg.enRequestNum = ADCSQRTrig; //设置为ADCSQR触发
Dma_InitChannel(DmaCh0,&stcDmaCfg);
//使能DMA,使能DMA0,启动DMA0
Dma_Enable();
Dma_EnableChannel(DmaCh0);
//Dma_Start(DmaCh0);
Adc_SQR_Start();
在中断 里
void AdcContIrqCallback(void)
{
Adc_GetSqrResult(&u16AdcRestult0, 0);
Adc_GetSqrResult(&u16AdcRestult2, 1);
Adc_GetSqrResult(&u16AdcRestult5, 2);
stcAdcIrqFlag.bAdcSQRIrq = TRUE;
Adc_SQR_Start();
}
源地址一直递增不能回到,初始化的ad地址
stcDmaCfg.u32SrcAddress = (uint32_t) &(M0P_ADC->SQRRESULT0);
该怎样设置才能实现传输完一个块后,SRC地址返回到初始化DMA的地址?
|