Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
Hi, I use PSOC3 to do ADC->DMA ->Memory to sample my analog input data then post- processing my ADC data. ADC( 300K sps, 10 bits) Memory (xdata, ADC_data). I try to modify some c codes from DMA example projects, but I did not get right sample data from ADC. Here is my c code: ADC_DelSig_1_start(); ADC_DelSig_1_start_convert(); Isr_start(); MyChannel=DMA_DmaInitialize(2,1,0,0); Td=CyDmaTdAllocate(); CyDmaTdSetConfiguration(Td,2,Td,TD_INC_DST_ADR|TD_TERMOUT0_EN); CyDmaTdSetAddress(td,ADC_DelSig_1_OUTSAMP, (uint16)&ADC_data ); CyDmaChEnable(MyChannel,Td); CyDmaChSetRequest( MyChannel,1); Anyone knows how to do it? Thanks, Will
Here are some modifications that should be done to make this work . 1) TD_SWAP_EN : Since the buffer - ADC_data(Big Endian) and ADC registers(Little Endian) have different endian-ess , you need to enable swap to store data in the proper format 2)ADC Coherency : By default the ADC coherency key is set to low. But in this case(When you read multi bytes from ADC register using single Td) , the last byte read will be mid byte. Hence you need to set the ADC coherency to mid byte . "ADC_DelSig_1_DEC_COHER=ADC_DelSig_1_DEC_SAMP_KEY_MID;" 3)"ADC_DelSig_1_OUTSAMP" is not an address but it is the value of ADC_DelSig_1_DEC__OUTSAMP register. There are many such typos in the function used above - the compiler will give you error for other typos and you can correct it yourself. Regards, Anu