Cannot deliver frequency round 100 and 200 MHz with LimeSDR-mini

I think this is going to be one for @Zack or another member of his team.

Hello Pavel,

could you try to set the 0x011C[13] register “Bypass SX LDO” to ‘1’ (check the box in LimeSuiteGUI) and see whether the lock problem is still there. If it solves your problem, set the 0x011C[13] register “Bypass SX LDO” to ‘0’ again (uncheck box)and try to decrease the 0x0120[15:8] register “LDO output voltage” value to ‘C5’ (increase voltage to ~1.4069V).

Regards,
Karolis

Hello Karolis,
thank you for your help. I tried what you described and it partially helps (both bypassing SX LDO and increasing the voltage). I tried 100 MHz which seems to be OK, but round 200 MHz it is still failing. I`ll do more tests tommorow and let you know.

Thanks

Pavel

I did some more test and changing the LDO voltage has similar effect as changing VCO bias current - e.g. I get the the “cannot deliver frequency” error for 100.1 MHz, so I set 1.4069 V. I helps. Than I change the frequency to 200.2 and it fails. I change the voltage back to default 1.2098 V and 200.1 is OK. On the other hand bypassing LDO seems remove the error message in all cases. But as I mentioned this behavior is not stable, so there may frequencies which fail even with this and as I understand this is not supposed to be the solution, correct?

Hi,
after a long time I am getting back to this. I noticed commit 25979447da4cb5037656b9078b198bcf3fec52e5, which partially solves the problem. I actually had similar solution, but I have been trying to find a smaller bias value. Based on the commit I suppose that increasing is better way. What about the step, wouldn`t make sense to use smaller value?

To make it properly work, even after changing the frequency (without reiniting/restarting) the board, I made a little change, which tries the default ICT_VCO value, if it was changed and tuning failed. I am still not sure whether this is software or hardware problem, but my LimeSDR mini needs different ICT_VCO value for different frequencies.

Here is my patch against 05d454e8848233e6c270596c0214d6a670c8bd75:

diff --git a/src/lms7002m/LMS7002M.cpp b/src/lms7002m/LMS7002M.cpp
index bc442c3..a9a07f1 100644
--- a/src/lms7002m/LMS7002M.cpp
+++ b/src/lms7002m/LMS7002M.cpp
@@ -1589,9 +1589,14 @@ int LMS7002M::SetFrequencySX(bool tx, float_type freq_Hz, SX_details* output)
         if (canDeliverFrequency)  //tune OK
             break;
         auto bias = Get_SPI_Reg_bits(LMS7param(ICT_VCO));
-        if (bias == 255)
-            break;
-        bias = bias + 32 > 255 ? 255 : bias + 32; //retry with higher bias current
+        #define DEFAULT_ICT_VCO 192
+        if(i == 0 && bias != DEFAULT_ICT_VCO){
+            bias = DEFAULT_ICT_VCO;
+        }else{
+            if (bias == 255)
+                break;
+            bias = bias + 32 > 255 ? 255 : bias + 32; //retry with higher bias current
+        }
         Modify_SPI_Reg_bits(LMS7param(ICT_VCO), bias);
     }

Pavel