Quantcast
Channel: EngineerZone: Message List
Viewing all articles
Browse latest Browse all 36216

Re: Sine wave in No-os driver FMcomms1-ebz

$
0
0

Where will I find its user doc ? is this it

http://www.analog.com/static/imported-files/overviews/FMC-Communications_Product_Highlight.pdf

However i got following code in test.c

/**************************************************************************//**

* @brief Initializes the DAC DMA.

*

* @return None.

******************************************************************************/

void dac_dma_setup(uint32_t sel)

{

    uint32_t baddr;

    uint32_t index;

    uint32_t tx_count;

    uint32_t index_i;

    uint32_t index_q;

    uint32_t data_i;

    uint32_t data_q;

    uint32_t dac_clk;

    uint32_t val;

    uint32_t sine_freq;

 

    dac_base_addr = ((sel == IICSEL_B1HPC_AXI)||(sel == IICSEL_B1HPC_PS7)) ?

                    CFAD9122_1_BASEADDR : CFAD9122_0_BASEADDR;

 

    tx_count = sizeof(sine_lut) / sizeof(uint16_t);

    for(index = 0; index < tx_count; index ++)

    {

        index_i = index;

        index_q = index + (tx_count / 4);

        if(index_q >= tx_count)

        index_q -= tx_count;

        data_i = (sine_lut[index_i] << 16);

        data_q = (sine_lut[index_q] << 0);

        Xil_Out32(DDRDAC_BASEADDR + index * 4, data_i | data_q);

    }

#ifdef _XPARAMETERS_PS_H_

    Xil_DCacheFlush();

#else

    microblaze_flush_dcache();

    microblaze_invalidate_dcache();

#endif

 

    baddr = ((sel == IICSEL_B1HPC_AXI)||(sel == IICSEL_B1HPC_PS7)) ? DMA9122_1_BASEADDR : DMA9122_0_BASEADDR;

 

    Xil_Out32(baddr + AXI_DMAC_REG_CTRL, AXI_DMAC_CTRL_ENABLE);

    Xil_Out32(baddr + AXI_DMAC_REG_SRC_ADDRESS, DDRDAC_BASEADDR);

    Xil_Out32(baddr + AXI_DMAC_REG_SRC_STRIDE, 0);

    Xil_Out32(baddr + AXI_DMAC_REG_X_LENGTH, (tx_count * 4) - 1);

    Xil_Out32(baddr + AXI_DMAC_REG_Y_LENGTH, 0x0);

    Xil_Out32(baddr + AXI_DMAC_REG_START_TRANSFER, 0x1);

 

    dac_read(ADI_REG_CLK_FREQ, &val);

    dac_clk = val;

    dac_read(ADI_REG_CLK_RATIO, &val);

    dac_clk *= val * 100000000 / 65536;

    sine_freq = dac_clk / (tx_count * 2);

    xil_printf("dac_dma: Sine frequency is %d Hz.\n\r", sine_freq);

 

    dac_write(ADI_REG_CNTRL_2, ADI_DATA_FORMAT | ADI_DATA_SEL(DATA_SEL_DMA));

    dac_write(ADI_REG_CNTRL_1, 0x0);

    dac_write(ADI_REG_CNTRL_1, 0x1);

}

how to stop this code from running?


Viewing all articles
Browse latest Browse all 36216

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>