1 Reply Latest reply on Jul 22, 2017 6:47 AM by BoTa_264741

    Digital Filter Block and 16bit DMA


      I am trying to run a 16bit conversion from the Delta Signal ADC to the DFB using DMA. I have set everything up as best I can but I can not get the Filter Interrupt to fire. I have confirmed the DMA transfer is working by monitoring the DMA nrq output. I get pulses at 2khz which is the speed I am running the ADC.


      I then loaded the example Filter_ADC_VDAC project and it fires the interrupt fine.


      I use the DMA wizard initially in my project any it wants me to use Filter_1_STAGEA_PTR for the destination of the DMA transfer.


      If I change this to Filter_1_STAGEAH_PTR like in the example project the interrupt starts to work. However, when I read the filter




      it looks like the output is just random data. I am feeding a constant 2V to the ADC.


      Does anyone know why when I set the DMA destination to Filter_1_STAGEA_PTR the interrupt no longer works?


      The DMA wizard created this


      CyDmaTdSetAddress(DMA_1_TD[0], LO16((uint32)ADC_AirSpeed_DEC_SAMP_PTR), LO16((uint32)Filter_1_STAGEA_PTR));


      Is it wrong?


      Here is the DMA config functions


      uint8 DMA_1_Chan;


      uint8 DMA_1_TD[1];


      /* DMA Configuration for DMA_1 */




      DMA_1_TD[0] = CyDmaTdAllocate();


      CyDmaTdSetConfiguration(DMA_1_TD[0], 2, DMA_INVALID_TD, DMA_1__TD_TERMOUT_EN);


      CyDmaTdSetAddress(DMA_1_TD[0], LO16((uint32)ADC_AirSpeed_DEC_SAMP_PTR), LO16((uint32)Filter_1_STAGEA_PTR));


      CyDmaChSetInitialTd(DMA_1_Chan, DMA_1_TD[0]);


      CyDmaChEnable(DMA_1_Chan, 1);