An ESP32-S2 module controls the system with a rotary encoder, a potentiometer, some buttons and a rectangular 320x170 IPS display. It is powered with a USB-C connector.

The frequency range goes from 1 Hz to 5 MHz and the amplitude can go from less than 100mV to 3.35V aproximately. Above 4 Mhz the maximum amplitude decreases to about 1.6 V, but there will be a 'boost' button to double the gain.

The sine wave looks good up to 5 MHz and then starts to show some distortion.

The signal is amplified with the high speed LMH6658 opamp. It has a 140 MHz GBWP and a slew rate of 700 V/μs. These parameters are key in the opamp selection, otherwise it won't be able to amplify much the signal above 500 KHz.

More details in the GITHUB project: https://github.com/aresta/Function_Generator