RFSTAMP44 RF Signal Generator ADF4351 35M to 4.4Ghz Stamp size castellated

 This project is going to show you a very very small RF Signal Generator 35Mhz to 4.4Ghz on a Tiny PCB that can be easily integrated into project. this Project is complement to USB RF signal generator which I published few weeks ago. Project is based on Analog device ADF4351






Device Pinout


Device Control Modes








Schematic

High Resolution Schematic PDF is available Project github




PCB 


Firmware

Firmware Running on PIC USB MCU running USB Stack bridges USB and UART to SPI to control ADF4351 PLL IC . PIC MCU has EEPROM to handle standalone operation. FW also manages AUX pin function. AUX pin Support Sync Out to sync device sweep with sync external devices such as Oscilloscope or spectrum analyzer. AUX pin supports Sync In for similar reason. Dedicated pin for Support External Reference clock for PLL alternative to on Board 25Mhz oscillator 

Cross Platform PC Software

Open Source QT Application 


Qt Application Allow programming frequency in 10 Khz step, Allow Sweep and hop between frequency with programmable time and programmable step. AUX pin function can also be selected. And PC Free Standalone can also be programmed. 




Python Application 

All features that can be programmed over QT application can also be programmed using Python script





UART Intarface





UART Commands/Protocol


UART Command Manual — RFSTAMP44

All commands start with $, followed by a letter (or ?) and optional parameters. End commands with CR/LF.

Command Usage Description
$F $F <frequency_MHz>
e.g. $F 433.12
Set output frequency.
Accepts float MHz values with 10 kHz resolution.
Range: 35.00 MHz – 4400.00 MHz.
$A $A <mode>
e.g. $A 2
Select AUX I/O function:
  • 0 = AUX_SYNC_OUT
  • 1 = AUX_SYNC_IN
  • 2 = AUX_EXT_REF_IN
  • 3 = AUX_EXT_REF_IN_SYNC_OUT
  • 4 = AUX_EXT_REF_IN_SYNC_IN
$B $B <frequency_MHz> Set sweep START frequency 
(MHz Float, min10Khz resolution).
$C $C <frequency_MHz> Set sweep STOP frequency
(MHz Float, min 10Khz resolution).
$E $E Erase stored settings (EEPROM).
$G $G <frequency_MHz> Set sweep step frequency
(MHz Float, min 10Khz resolution).
$J $J <time_ms> Set dwell time in ms.
$R $R <frequency_MHz> Set reference frequency (10–250 MHz).
$O $O <0|1> Enable/disable RF output.
$P $P Write configuration to PLL.
$T $T Save parameters to EEPROM.
$S $S <0|1> Enable/disable sweep mode. Updates “Start on Boot”.
$H $H <0|1> Enable/disable auto-start sweep on boot.
$I $I Identify device / FW version notification.
$M $M<n> <hex_value> Write hex value to register Rn (0–5).
$? $? Print current settings + registers.
Notes
  • UART Baud Rate 115200
  • Frequencies given in MHz (e.g. 433.12), store with 10 kHz resolution.
  • Reference frequency clamped 10–250 MHz.
  • $M expects hexadecimal values (e.g. 0x12345678).
  • Commands must end with \r or \n.
  • No echo for commands.


HIDRAW Device access under Linux



hidraw device may need privilized use permission to access usb device with sudo 

Accessing USB hidraw device under linux without sudo



Accessing USB HID  device under linux 

What’s a “USB HID raw device”?

  • HID = Human Interface Device (like keyboards, mice, game controllers, barcode scanners).

  • hidraw devices expose raw HID reports directly to user space.

  • Path looks like:

    /dev/hidraw0 /dev/hidraw1

Why you can’t just open them

  • On most distros, these devices are owned by root and a system group like plugdev or input.

  • Permissions are typically:

            crw-rw---- 1 root plugdev 243, 0 Aug 14 12:34 /dev/hidraw0

Why udev rules help

udev manages device nodes dynamically when hardware is connected.
By adding a udev rule, you can:

  • Change file permissions (e.g., MODE="0666" for read/write by everyone).

  • Change ownership (e.g., GROUP="plugdev").

  • Apply these settings automatically whenever the device is plugged in.

Example rule:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="abcd", ATTRS{idProduct}=="1234", MODE="0666"

udev file from github repo
# Put this file into /etc/udev/rules.d and unplug and re-plug your device.
# You don't need to restart Udev, new permissions will be picked up automatically.

ATTRS{idVendor}=="1209", ATTRS{idProduct}=="7877", MODE="0666"

RF output 

40Mhz Output @ -1.04dBm


100Mhz Output @ -0.97dBm



200Mhz Output @ -1.49 dBm


500Mhz Output @  -1.86 dBm



1Ghz Output @ -1.68 dBm 






1.6Ghz Output @ -1.42 dBm




2Ghz Output @ -5.18 dBm



3Ghz Output @ -19.17 dBm


Project Source


Comments