diff options
-rw-r--r-- | freq2lmx2487settings.lua | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/freq2lmx2487settings.lua b/freq2lmx2487settings.lua deleted file mode 100644 index 9c52bbb..0000000 --- a/freq2lmx2487settings.lua +++ /dev/null @@ -1,161 +0,0 @@ - --[[ -Eugeniy Mikhailov -1 June 2021 - ]] - ---------- FREQ TO BITS --------- -function freq2regestersValues(freq) - - local F_COMP = 5000000 -- magic number - local N = freq / F_COMP - - local RF_N = math.floor(N) - - local frac = math.abs(N - RF_N) - - local RF_FD = 4000000 --magic number - local RF_FN = math.floor( (frac * RF_FD) + 0.5) - - return freq, RF_N, RF_FN, RF_FD -end --- test freq2regestersValues -fIn = 6.834e9 -freq, RF_N, RF_FN, RF_FD = freq2regestersValues(fIn) -if freq ~= fIn and RF_N ~= 1366 and RF_FN ~= 3200000 and 4000000 then - print("ERROR in freq2regestersValues") -end -fIn=nil -freq=nil -RF_N=nil -RF_FN=nil -RF_FD=nil --- end of freq2regestersValues test - ------- INITIAL SETTINGS (send to chip)------- -function initSettings( ) - local setting = { } - -- prefill with magic numbers & pad empty bits with 0's - setting["R0"] = pad2NumBitsInPlace( toBits(11197502), 24) - setting["R1"] = pad2NumBitsInPlace( toBits(4352515), 24) - setting["R2"] = pad2NumBitsInPlace( toBits(8560613), 24) - setting["R3"] = pad2NumBitsInPlace( toBits(15925287), 24) - setting["R4"] = pad2NumBitsInPlace( toBits(10618633), 24) - setting["R5"] = pad2NumBitsInPlace( toBits(393579), 24) - setting["R6"] = pad2NumBitsInPlace( toBits(8126541), 24) - setting["R7"] = pad2NumBitsInPlace( toBits(10639), 24) - return setting -end - - ----------- COPY TABLE WITH DIFFERNT INDEX NAME ----------- -function copySettings(old) - local dst={} - dst["R0"]= copyTableArray(old["R0"]) - dst["R1"]= copyTableArray(old["R1"]) - dst["R2"]= copyTableArray(old["R2"]) - dst["R3"]= copyTableArray(old["R3"]) - dst["R4"]= copyTableArray(old["R4"]) - dst["R5"]= copyTableArray(old["R5"]) - dst["R6"]= copyTableArray(old["R6"]) - dst["R7"]= copyTableArray(old["R7"]) - return dst -end - ---------- SLICE AND REPLACE ------------ -function FreqToSettings(freq, settings) --create table with new values of R0, R1, and R5 - local freq, RF_N, RF_FN, RF_FD = freq2regestersValues(freq) - - local bRF_N=toBits(RF_N) - local bRF_FN=toBits(RF_FN) - local bRF_FD=toBits(RF_FD) - pad2NumBitsInPlace(bRF_N, 11) - pad2NumBitsInPlace(bRF_FN, 22) - pad2NumBitsInPlace(bRF_FD, 22) - - -- print("bRF_N = "..bin2string(bRF_N, " ")) - -- print("bRF_FN = "..bin2string(bRF_FN, " ")) - -- print("bRF_FD = "..bin2string(bRF_FD, " ")) - - --print(bin2string(settings["R0"], " ")) - settings["R0"]=tableReplace(settings["R0"], bRF_N, 14, 24) - --print(bin2string(settings["R0"], " ")) - settings["R0"]=tableReplace(settings["R0"], bitSlice(bRF_FN, 1, 12), 2, 13) - --print(bin2string(settings["R0"], " ")) - - --print(bin2string(settings["R1"], " ")) - settings["R1"]=tableReplace(settings["R1"], bitSlice(bRF_FD, 1, 12), 5, 16) - --print(bin2string(settings["R1"], " ")) - - --print(bin2string(settings["R5"], " ")) - settings["R5"]=tableReplace(settings["R5"], bitSlice(bRF_FN, 13, 22), 5, 14) - --print(bin2string(settings["R5"], " ")) - settings["R5"]=tableReplace(settings["R5"], bitSlice(bRF_FD, 13, 22), 15, 24) - --print(bin2string(settings["R5"], " ")) - - return settings -end - - - --- test -sinit= initSettings() -snew = FreqToSettings(6.834e9, sinit) -if bin2string(snew["R0"]) ~= "101010101100100000000000" then - print("Frequency to R0 register value conversion is broken") -end -if bin2string(snew["R1"]) ~= "010000101001000000000011" then - print("Frequency to R1 register value conversion is broken") -end -if bin2string(snew["R5"]) ~= "111101000011000011011011" then - print("Frequency to R5 register value conversion is broken") -end -sinit=nil -snew=nil - -------- no changes to previous code ------------- --- send new register binary strings to chip -function set_lmx2487_board_to_new_state(settings) - - set = {"R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7"} - for i = 1, #set do - set_lmx2487register(toNum(settings[(set[i])]), (i-1)) - end - update_lmx2487state() -end - -function setFreq(freq) - settings = FreqToSettings(freq, settings) - set_lmx2487_board_to_new_state(settings) -end - --- test setFreq -set_lmx2487_board_to_default_state() -settings= initSettings() -setFreq(6.834e9) -if - get_lmx2487register(0) ~= 11192320 - and get_lmx2487register(1) ~= 4362243 - and get_lmx2487register(2) ~= 8560613 -- should not change - and get_lmx2487register(5) ~= 16003291 -then - print("ERROR in setFreq: registers do not match") -end -setFreq(6.8204e9) -if - get_lmx2487register(0) ~= 11174912 - and get_lmx2487register(1) ~= 4362243 -- should not change - and get_lmx2487register(2) ~= 8560613 -- should not change - and get_lmx2487register(5) ~= 15992043 -then - print("ERROR in setFreq: registers do not match") -end -setFreq(6.8346e9) -if - get_lmx2487register(0) ~= 11193856 - and get_lmx2487register(1) ~= 4362243 -- should not change - and get_lmx2487register(2) ~= 8560613 -- should not change - and get_lmx2487register(5) ~= 16005163 -then - print("ERROR in setFreq: registers do not match") -end - |