Thursday, 26 November 2020

Locking the Adalm Pluto to an external reference (Part 3; Software challenges)

 Having got the hardware finished it was time to convince th Pluto that it had a 50MHz NOT 40 MHz reference. This was easier said than done! 

It took 6 hours of internet research and trials before a working solution was finally found at  AND which would survive a pluto power down. 

The final solution was to execute the following on the pluto. No idea why it works or what it does, but it solved my problem

fw_setenvadi_loadvals fdt addr fit_load_address } && fdt get value fdt_choosen

/ fit_config }/ fdt && fdt get addr fdtaddr / fdt_choosen } data && fdt addr

fdtaddr }; if test ! n ${ad936x_skip_ext_refclk}; then if test n ${ad936x_custom_refclk}; then

fdt set /clocks/clock@0 clock frequency ${ad936x_custom_refclk}; elif test n

${ad936x_ext_refclk}; then fdt set /clocks/clock@0 clock frequency ${ad936x_ext_refclk}; fi; fi; if

test n ${model}; then fdt set / model ${model}; fi; if test n ${ attr_name } && test n ${ attr_val };

then fdt set /amba/spi@e0006000/ad9361 phy@0 ${ attr_name } attr_val };

fw_setenvad936x_custom_refclk "<50000000>"

To check if the changes were successful, we can read the device-tree:

cat /proc/device-tree/clocks/clock@0/clock-frequency | xxd

the response was

# 00000000: 02FA F080 .}x@

02faf080 is 50000000 in hex, Success

Having got the Pluto to work with the external reference I spent some time adjusting levels. It was suggested  on the internet that the pluto needed 0 to 10dbm to achieve lock but I found it needed much less than that, it would lock down to -22dbm input. I adjusted the output attenuator in the DFS50 to produce -10dBm output on mine

No comments:

Post a comment