I want to transmit data from MATLAB over radio in frames using libiio and ad9361 in non-cyclic mode and have no RF signals in the channel while there are no more frames to transmit.
There are three issues regarding this setup I've stumbled upon:
This is what I've found so far and what is left unsolved:
Thank you in advance,Ilya.
1. It depends, if OSC is not loaded the DDSs are used by default. If OSC loads then it will default to whatever was OSCs last saved profile. APIs are a bit different now.
2. If you need to do this quickly…
1. Yes, this is independent of IIO-Scope
2. To reduce LO leakage you can increase TX attenuation or power-down TX. Recent HDL has been updated to pass zeros after DMA finishes. You can easily test this with digital loopback enabled.
3. You would have to modify some of the base classes. In adi.common.RxTx, after line 113 you could add "obj.ToggleDDS(false)" which would do this. This would also require adding a class to adi.common.RxTx as well. Changing line 1 to "classdef (Abstract) RxTx < matlabshared.libiio.base & adi.common.DDS"
Or maxing out the TX attenuation or powering down TX would do the same.
Hello, Travis! Thank you for the reply.
tx.AttenuationChannel0 = -50;
pause(3); % doing computations, for example
tx.AttenuationChannel0 = -10;
2. If you need to do this quickly the best way is to use the TDD state machine controlled by some logic in the FPGA. Yes, I believe this is in R1 2018, I just don't have a board with me at the moment. There is an easy way to check though. Turn on digital loopback and send a non-cyclic buffer through.
3. Yes sorry, you are correct. For the DDS/DMA state look here under Enable/Disable DDS channel: https://wiki.analog.com/resources/tools-software/linux-drivers/iio-dds/axi-dac-dds-hdl