1. Aaron Hexamer
  2. FRA4PicoScope


Clone wiki

FRA4PicoScope / Home

Overview, Main Features and Use Cases

This application provides Frequency Response Analysis (FRA) capabilities for the PicoScope instruments from Pico Technology. The FRA uses a common technique of frequency sweeping (in this case stepping), and DFT extraction. The main output is a Bode plot of gain in dB and phase in degrees.

FRA has several use cases, some of which may be limited by the capabilities of the scope. Some examples include:

  • Filter characterization
  • Feedback loop analysis, to characterize control system stability and responsiveness
  • A subset of feedback loop analysis includes power supply stability analysis
  • General impedance measurements

The user supplies basic inputs such as channel settings, input signal amplitude, and sweep range. Once the FRA is started, the execution is automated, including all necessary auto-ranging. Once the analysis is complete, a plot of the data is displayed. This data can be exported into image files or raw data.


The following is an example screenshot from a FRA execution for a 1 kHz RC highpass filter.

HPF Screenshot 3.png

The following is an example screenshot from an SMPS stability measurement (TPS5420EVM-175)


Basic use instructions

The first time the application is run, it will search for available scopes. If there is only one scope, it will just use that one, otherwise it will ask the user to select one. From that point forward, the application will remember the most recently used scope and automatically open it on startup. The scope can be changed by accessing the File->Connect Device menu.

The first time a scope is opened, default FRA settings are provided. The user should change these as appropriate. Once settings are entered and the circuit being measured is connected, press the Go button. If the user needs to stop the execution for any reason, the Cancel button can be pressed. Once the FRA execution is completed, the plot image or raw data can be exported by accessing these features from the File menu.

Modes of operation

There are two major modes of operation: low noise and high noise. In the low noise setting, it is assumed that the background noise is minimal and thus only samples the data at a nominal oversampling of the stimulus signal. This mode would be appropriate where a filter is being characterized in isolation. If there is significant noise, it may get aliased, leading to inaccurate results. The main advantage of this mode is that it executes faster. In the high noise setting, it is assumed that significant background noise exists that must be filtered out. In this mode, the sampling rate is as high as possible for the scope, or a modest oversampling above the bandwidth limiter (where available). This mode would be appropriate for power supply stability measurements, where ripple noise is significant compared to the injected stimulus.

Obtaining the application

Binary download

If you're not interested in building from source, a stock windows binary is available from the project Downloads. For the FRA for PicoScope application to run correctly, you should have the PicoScope SDK installed on your PC. Having only the PicoScope Application software installed may work as well, but is not guaranteed. The PicoScope SDK can be downloaded and installed from the Pico Technology website. Install the SDK for the operating system and processor architecture appropriate for the FRA4PicoScope app (currently only Windows 32 bit)

Building from source

This application was developed in Visual Studio 2015 Community Edition. Other versions of Visual Studio may work, but are not guaranteed. The main dependencies are the PicoScope SDK libraries, the PLplot library with Qt, and the Boost library.

For detailed build steps, please see the Detailed Build Steps page.

If you would like to build FRA4PicoScope but would rather not build the PLplot or Qt libraries, I have provided binaries of these libraries on the downloads page as well. Instructions for how these were built are included in the Detailed Build Steps page.

Qt libs
PLplot debug libs
PLplot release libs


The current design of the application requires a PicoScope device that has at least 2 channels and a function generator. This is unlikely to change in the near term for the following reasons. Firstly, it is fundamentally important that the input and output signals be captured simultaneously. Lags between input/output captures will directly impact phase measurements. While single channel devices could be combined to capture an input and output, there are currently no mechanisms for these to be synchronized. Secondly, using the internal function generator keeps the design simple: there's no need to pull in another library to interface to a standalone function generator. Finally, use of the internal function generator has the assumed advantage of sharing a common clock with the sampling subsystem. This avoids possible inaccuracy caused by frequency mismatch between an external function generator and the scope; although this may not be a practical concern.

Some devices are not compatible due to other unique impediments. For example, the PS3204 function generator currently does not output a pure sine. Due to current design limitations, the application may open incompatible scopes, but then report incompatibility when the user attempts to execute a FRA.

The application is designed to run in Windows XP SP3, Vista, Windows 7, Windows 8 and Windows 10.

Known limitations and issues

  • Some functional limitations can be due to the capabilities of the scope being used. These are normally driven by the main specs such as bandwidth, sampling rates, resolution, range, and function generator frequency and amplitude limitations.

Outstanding bugs

  • The method of changing frequencies results in discontinuities in the function generator output. When in AC coupling mode, the DC offsets introduced by these discontinuities take some time to settle out. The program tries to adapt to this, but is not perfect. The main issue is at very low frequencies where there can be a DC offset decay that appears in the captured data. This is largely compensated by the DFT, but may affect noise measurement.

Planned future enhancements

Some enhancements are already partially implemented. They may appear to be available in the UI, but are not completed.

  • Ability to send the plot to a printer
  • Support calibration by running a "loopback" test and compensate for any gain/phase bias.
  • Interactive auto-ranging. This is the ability to ask the user to take actions upon reaching an auto-range limit. These could be switching the probe attenuation, turning on/off an amplifier, etc. The user would indicate the action taken and the FRA could proceed.
  • Allow customizing colors on the plot (screen and image file).
  • User interactive cursors for the plot
  • Make multi-platform (e.g. including Linux). This was an original design goal, but due to complexity was abandoned. Much of the code is still portable and that which is not is mostly encapsulated.

Version History

Copyright and License:

Copyright (c) 2014-2017 by Aaron Hexamer

Frequency Response Analyzer for PicoScope is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Frequency Response Analyzer for PicoScope is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Frequency Response Analyzer for PicoScope. If not, see http://www.gnu.org/licenses/.