I am facing an issue with the AD9361 on the FMCOMMS3 using the no-os drivers. I am not able to receive correctly the IQ samples even though the interface timing validation passes.
I am using the timing validation method described here: https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/interface_timing_validation, so I am setting the parameter
init_param→digital_interface_tune_skip_mode (Init Parameter)to 0
The function passes, so i thought everything was good. Then
I store a sinewave in the memory, and then i select it as a source for the DAC in this way:
axi_dac_set_datasel(ad9361_phy->tx_dac, -1, AXI_DAC_DATA_SEL_DMA); axi_dac_set_sine_lut(ad9361_phy->tx_dac, DAC_DDR_BASEADDR);
Then I configure the AD9361 in loopback mode TX->RX:
and after that i capture the RX samples and store them inside the DDR. Then i take the samples out of the memory:
adc_sample = *(ADC_DDR_BASEADDR + index_mem); I1 = (adc_sample >> 16) & 0xFFFF; Q1 = adc_sample & 0xFFFF; adc_sample = *(ADC_DDR_BASEADDR + index_mem+1); I2 = (adc_sample >> 16) & 0xFFFF; Q2 = adc_sample & 0xFFFF;
And i transfer them through UART on my PC. However what I get is the following:
What could be the issue?
However, when i use another platform to acquire RF data, I get a sinewave. Here in the figure below you can see the acquisition performed with PLUTO-SDR after configuring the FMCOMMS3 for transmission as explained above. So i guess that the transmitter interface is working correctly
added pluto capture
[edited by: ascialdo at 8:47 AM (GMT -5) on 2 Dec 2022]