pyadf435x
is a suite of software and firmware for controlling the Analog
Devices ADF435x series of wide-band RF synthesizers.
The software suite consists of the following components:
- adf435x - A python library that can control the ADF4350/1 via various hardware interface back-ends.
- adf435xctl - A command line tool to control the ADF4350/1 manually.
- fx2adf435xfw - A firmware for the Cypress FX2 that replaces the proprietary firmware for the EVAL-ADF4351 board.
- stm32adf435xfw - A similar firmware for the STM32F103.
It's also possible to use the Bus Pirate as the interface for the SPI
communications, simply using the adf435x.interfaces.BusPirate
class.
-
Install depedencies:
On Debian/Ubuntu:
$ sudo apt install python3-setuptools python3-usb
-
Build the python module:
$ python3 setup.py build
-
Install the python module:
$ sudo python3 setup.py install
-
(Optional) Install udev rules:
$ sudo cp contrib/z60_adf435x.rules /etc/udev/rules.d/
See examples/
sub-directory.
Requires adf435x to be installed.
Sets the output frequency to 1000MHz:
./adf435xctl --freq=1000
The Cypress FX2 firmware project controls the synthesizer over SPI by bit-banging the FX2's GPIOs.
The firmware requires the following wiring:
FX2 Pin | ADF4350/1 Pin |
---|---|
PA0 | LE |
PA1 | CLK |
PA2 | DAT |
-
First init/update all the sub-modules within the git repository:
$ git submodule update --init
-
Install AutoTools and the SDCC (Small Devices C Compiler).
On Debian/Ubuntu:
$ sudo apt install autoconf automake make sdcc
-
Build the firmware:
$ ./autogen.sh $ ./configure $ make
You will now have the firmware file
fx2adf435xfw.ihx
-
Install cycfx2prog.
On Debian/Ubuntu:
$ sudo apt install cycfx2prog
-
Load the firware on to the Cypress FX2 with the following command:
$ cycfx2prog prg:./firmware/fx2/fx2adf435xfw.ihx
-
Run the firmware:
$ cycfx2prog run
The device will no renumerate as with the VID/PID
0456:b40d
, as an Analog Devices board.
The firmware requires the following wiring:
STM32F103 Pin | ADF4350/1 Pin |
---|---|
PA4 | LE |
PA5 | CLK |
PA7 | DAT |
-
First init/update all the sub-modules within the git repository:
$ git submodule update --init
-
Install GNU Make, OpenOCD, and ARM builds of GCC compiler and Newlib.
On Debian/Ubuntu:
sudo apt install gcc-arm-none-eabi libnewlib-arm-none-eabi make openocd
-
Build libopencm3:
$ cd firmware/stm32/libopencm3 $ make
-
Build stm32f103adf435xfw:
$ cd .. $ make
-
Run OpenOCD:
sudo openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg
-
Install the firmware:
telnet localhost 4444 > reset halt > flash write_image erase /path/to/stm32adf435xfw.bin 0x08000000 > reset