I am using AD9371 with zc706 for a project. When I transmit the data from Tx1 and receive from Rx1 througn iio oscilloscope I get good results (NMSE) but when I try to do the same thing using C code running on Linux (referring to libiio) the results are not good.
I worked on AD9361 where this thing was working but now I have to shift to AD9371 and it is not giving desired results. I referred to the libiio library and found out that the functions to transmit and receive the data are same (iio_buffer_push, iio_buffer_refill). Is there any difference in the structure of the iio buffer for AD9371? If yes then where can I get this information? If no, then what can be the possible issue with this?
IIO oscilloscope also uses libiio. So the mechanics should be the same. Also the structure of the IIO buffer is the same. Well different number of bits, but the main difference is the increased bandwidth. Can you further explain what exactly the issue is. Undesired results is not something we can use for qualified answers. First thing I would try is to see if the issue is with TX or RX, by using external test measurement equipment.
When I transmit a set of data and receive the same using C code then the bit error rate is high in case of AD9371. But when i use IIO then Bit error rate is low as expected.
Whereas in AD9361 the bit error rate was low for both IIO and C code.
The pattern used for write data in "tx buffer" is same in both case i.e. (I Q I Q I Q ....)
The indexing seems very strange. Here is an example how create buffers: https://github.com/analogdevicesinc/libiio/blob/master/examples/ad9371-iiostream.c
Thank you for the link. But I already tried that way of indexing previously. Both are giving the same results.
Are you getting the expected data with a simple loopback test with a sinusoid as suggested?
I am getting good results with a simple loopback test with a sinusoid.
The problem is solved by increasing the sampling length. Thank you so much for the help. With high sampling rate we are getting low BER.