Hi everyone!
I have recently been working on phase difference calculation on the LimeSDR and found some phase value offsets that affected during different boots of the system. I have managed to emit a calibration signal from one of the TX ports of the same LimeSDR but I am seeing some strange behaviours. In the images you can see the following:
Red signal: Signal that is passes to the TX stream.
Green and blue: I samples form channel 0 and 1.
Does anyone have a clue on how to make the transmitted signal steady? Or is it a problem on RX?
You can also find the piece of code I use for transmission here:
int flags(0);
long long timeNs(0);
int tflags(0);
long long ttimeNs(0);
rxBuffs[0] = rxBuffers[0].data();
rxBuffs[1] = rxBuffers[1].data();
long long txTimestamp =
device->getHardwareTime() + 1e9; // 1 SECOND IN FUTURE
long long rxTimestamp = txTimestamp + 0.001e9;
cout << "Activate" << endl;
device->activateStream(txStream);
device->activateStream(rxStream, SOAPY_SDR_HAS_TIME | SOAPY_SDR_END_BURST,
rxTimestamp, receiveWindow);
tflags = SOAPY_SDR_HAS_TIME | SOAPY_SDR_END_BURST;
cout << "RX" << endl;
cout << "TX" << endl;
int txRet = device->writeStream(txStream, txBuffs.data(), sendWindow,
tflags, txTimestamp, 10e6);
int rxRet = 0;
while (rxRet < receiveWindow && rxRet >= 0){
cout << "Count: " << rxRet << endl;
rxRet += device->readStream(rxStream, rxBuffs.data(), receiveWindow-rxRet,
flags, rxTimestamp, 10e6);
rxBuffs[0] = &rxBuffers[0][rxRet];
rxBuffs[1] = &rxBuffers[1][rxRet];
}
Kind regards,
Aridane