Getting Started


Downloads

Below are the links to the latest software versions for both Windows and Linux. Both software versions should run standalone and feature the same functionalities. The Windows version has been tested on Windows 10 and 11. The Linux version is tested on Ubuntu 20.04 and 22.04.


Installation

Windows:

  1. Unzip the downloaded package. It contains the following folders:
    • Drivers
    • SPAD512S_standalone_win64
  2. Install the drivers and the Visual C++ Redistributables from the Drivers folder.
  3. Connect the two USB-B cables to the camera and the PC. Ideally to separate USB host controllers for the best performance.
  4. Connect the 5V power plug to the camera's master power jack. Always use only one power supply for the camera.
  5. Run the software by double clicking the SPAD512S.exe in the SPAD512S_standalone_win64 folder.
  6. The software will run a background calibration task the first time you turn on the camera.
  7. You should now be able to see the live view from the camera.

Linux:

  1. Unzip the downloaded package. It contains the following folders:
    • Install
    • SPADSPAD512S_standalone_linux64
  2. Open a terminal in the Install folder and execute the following command: sudo ./install.sh. You might be prompted for your administrator password to proceed with the installation. The installation file might require execution permissions, set this with sudo chmod +x install.sh
  3. Connect the two USB-B cables to the camera and the PC. Ideally to separate USB host controllers for the best performance.
  4. Connect the 5V power plug to the camera's master power jack. Always use only one power supply for the camera.
  5. Run the software by double clicking the SPAD512S executable in the SPAD512S_standalone_linux64 folder. Alternatively, open a terminal in the SPAD512S_standalone_linux64 folder and execute: ./SPAD512S. The application might require execution permissions, set this with sudo chmod +x SPAD512S
  6. The software will run a background calibration task the first time you turn on the camera.
  7. You should now be able to see the live view from the camera.

Setting up

At the first run, the noise and uniformity calibration data should be automatically downloaded from the remote server. However, it is advised to execute the following steps in order to ensure that the calibration data also matches the current environment conditions:

  1. Keep the system in the dark and run the noise calibration from the menu.
  2. Continue by running the dead pixel calibration from the menu still keeping the system in the dark.
  3. Optionally illuminate the sensor with a uniform light source and install the optics to be used for the experiments, now run the gain calibration to correct for non-uniformities in the sensor.
  4. In case the system will be synchronized to a (pulsed) laser, illuminate the sensor as uniformly as possible with the laser light and run the master/slave offset calibration from the menu. This step might have to be redone on each change of input frequency.

All these parameters will be stored and loaded on each new start-up of the camera.

The software will regularly check for updates and prompt in case new updates are available. One can force an update check from the dropdown menu in the top left corner of the software interface. To use the new software, remove the old software from the PC and extract the files from the new package as described in Installation.


Pile-up correction

Due to the dead time of each pixel, incident photons might be ignored, if detected shortly after the previous photon. This effect is mainly noticeable for higher photon count rates and needs to be corrected for, i.e. using the pile-up correction. This correction transforms the measured amount of photons into the probable amount of photons that hit the SPAD. To correct the images, one can use the following formula to correct the measured number of photons in each pixel Nmeasured into the actual amount of photons Nactual:


Nactual = -ln(1.0 - Nmeasured / 255) × 255

This formula is valid for 8-bit image data. In case a different bit depth is used, the value 255 has to be adapted to reflect this change, e.g. 4-bit requires the value 15.

This correction is applied by default on the images taken by our software to linearize the detector's response. The correction can be turned off from the software's menu, but we recommend to use the already linearized images for further data processing.

The following table summarizes the dynamic range etc. you can achieve with the pile-up correction in the various image levels:

Equivalent image levels setting Number of discrete levels Maximum SNR Dynamic range* Dynamic range bit depth
1-bit 1 1 1 1-bit
4-bit 15 √15 40 (59) 5.3-bit
6-bit 63 √63 261 (333) 8.0-bit
7-bit 127 √127 615 (759) 9.3-bit
8-bit 255 √255 1413 (1701) 10.5-bit
9-bit 510 √510 3180 (3756) 11.6-bit
10-bit 1020 √1020 7066 (8218) 12.8-bit
11-bit 2040 √2040 15546 (17850) 13.9-bit
12-bit 4080 √4080 33921 (38529) 15.0-bit

* the dynamic range is given by the pile-up at Nmeasured = 2bits-2. The infinite value returned by the formula (at Nmeasured = 2bits-1)+ is adapted in the software to the value shown in brackets.


Hardware


Sensor

The SPAD512² system contains a sensor with a 512×512 SPAD array. Each pixel contains circuitry for gated operation and a counting memory. Images are read from the sensor into the memory on the FPGA, where the images are integrated into higher multi-bit images. The current version of the firmware allows to read 1, 4 and 6 to 12-bit images streamed to our software package. FLIM images are always using an 8-bit image sequence. The maximum integration time per 1-bit frame is limited by the pixel memory to roughly 1ms.


System

The system is housed in a solid aluminium enclosure measuring 147×105×50mm. It is powered from a single 5V adapter and data can be read from the two USB-B ports. One can also connect only the 'Master' part to read data from half of the sensor. The SMA connectors on the top of the package are shown in the figure below. They have the following functionality:

  • Laser clock input
    Frequency: 1kHz—80MHz, high impedance, maximum input voltage: 5.0V (or 1.8V for systems delivered before July 2022).
  • Frame clock input
    High impedance, maximum input voltage: 5.0V (or 1.8V for systems delivered before July 2022).

All inputs have an internal 50Ω termination. Acceptable input voltage ranges: 0—2.5V, 0—3.3V and 0—5.0V (LVTTL/TTL). For systems delivered before July 2022, the acceptable range is 0—1.8V only (no internal termination)! The laser clock should have a duty cycle of at least 25%. The minimum detectable pulse width for the frame trigger is 12ns and for the gate trigger roughly 3ns.

For systems generating negative pulses (such as the NIM synchronization output on several laser drivers), we recommend the use of an active NIM to TTL inverter. We have obtained good results with the following active inverters:

Mechanical drawing

The system, FPGAs + sensor, consumes in idle operation mode around 7.5W. This is mainly static power consumed by the FPGA resources. Under measurement operation, the power consumption increases to maximum 10W. For optimal thermal performance, the system can be shutdown when unused for an elongated period of time. A proper metal support on the box can help to absorb part of the heat in the large thermal mass of an optical table. Adding a fan to the system is beneficial for cooling and reducing the dark noise.


Graphical user interface


Menu

The options menu is available in the top left corner of the user interface. There are the following options:

  • Set save path
    Changes the folder in which the software is saving the data to a user selected one.
  • Set time-out
    Changes the default 5 seconds time-out for measurements that use an external trigger. Value changes with 5 seconds increments.
  • Toggle GUI to standard/dark theme
    Switch between a dark themed interface and the classical theming.
  • Toggle plots to linear/log
    Switch the plots on the gated/FLIM tabs to use either a log or linear scale on the y-axis.
  • Toggle images colormap
    Switches the colormap in between colored and greyscale representation. All images are by default saved with a greyscale color map.
  • Disable/enable pile-up correction
    The pile-up correction can be applied on the fly on the images, this will extend the dynamic range of the images. The images as shown in the software will always be pile-up corrected.
  • Disable/enable calibrated corrections
    For inspection and debug purposes, the image corrections can be disabled.
  • Calibrate noise
    Stores a map of the noisy pixels to be interpolated for further measurements. This requires the system to be in complete darkness. The noise threshold is set to ~2kcps.
  • Calibrate dead
    Stores a map of the dead/broken pixels to be interpolated for further measurements. This requires the system to be kept in the dark.
  • Calibrate gain
    Stores a map of the pixel gain differences to be applied to further measurements to uniformize the image. This requires the system to be uniformly illuminated.
  • Calibrate breakdown
    Measures the breakdown point of the SPADs. This ensures each detector will always be biased at the same excess bias voltage with respect to the breakdown point. The breakdown voltage is stored and loaded on startup.
  • Calibrate master/slave offset [only after calibrate noise is completed]
    Stores the laser clock delay between the two halves. This requires the system to be illuminated with a pulsed light source.
  • Disable/enable fans
    Turn on and off the fans inside the enclosure. In the on state, the fans will run at their maximum speed.
  • Disable/enable VDD
    Turn on and off the detectors power supplies. This puts the detector in a safe operating mode in order to open the lid/change the objective. Never expose the sensor to light directly without disabling VDD.
  • Check for updates
    Forces an online check for a new software version.
  • Help
    Opens this manual.
  • Quit
    Closes the software.

Live view

SPAD512S live view

The live view tab shows images from the sensor array. The exposure is set automatically to account for changes in the light condition. The auto exposure tries to find a suitable average light intensity, which may give unwanted results in very dark environments. A black—red—yellow—white color scale shows the intensity variation over the array. The color scale can be changed to grey scale in the menu.

The automatic exposure can be disabled by toggling AUTO and M exposure modes. In M mode, the exposure can be adjusted with the scrollbar on the left side of the screen. In any mode, the current exposure time can be copied to measurements in the intensity and gated imaging tabs, populating the integration time fields per ratio to the bit levels setting and by correcting for the gate width ratio.

Sharp contrasts can be highlighted in the image by checking the Highlight contrasts checkbox below the image. This can be useful to check if the image is in focus.

A histogram of the current image can be enabled by checking the Live view histogram checkbox below the image. The histogram will update in real-time together with the currently shown image. Two additional checkboxes are available in this operation mode: highlighting saturated and/or dark pixels in blue/green colors in the current live view image. This should help to prevent getting over- or under-exposed images.

A small version of the live view is also available on the other tabs in the bottom left corners.


Intensity imaging

SPAD512S intensity imaging

The second tab provides the intensity imaging capabilities of the system. On the left side, there is a control panel to setup the parameters for the measurements that are displayed on the right. The measurement progression is indicated in the bottom status bar. The following options are available:

  • 1/4/6/7/8/9/10/11/12-bit equivalent image levels
    Switch between 1, 4, 6, 7, 8, 9, 10, 11 and 12-bit equivalent image levels. Due to the pile-up correction, we denote the number of discrete levels in the final output image (the image range is extended to roughly a +2.5-bit equivalent). 1-bit images are saved in binary format. All other bit levels are rendered out as 16-bit images (pile-up correction enabled). Images above 8-bit are internally obtained by summing multiple 8-bit data sets (so the maximum value is not 2n-1, but 2n-8 × 255).
  • Integration time (n-bit)
    Set the measurement integration time in micro/milliseconds for the total of an n-bit image. Except for 1-bit imaging, this time is divided by 2n-1 to get the single-bit image exposure time. Each n-bit image is always the sum of 2n-1 binary images (except 1-bit, and above 8-bit, where it is 2n-8 × 255).
  • Overlap expose/read checkbox
    Enables the simultaneous exposure and reading from the chip, which reduces the overhead from reading the single-bit frames.
  • Estimated frame rate
    Displays the estimated frame rate that the sensor will be taken images at. The background of the box will be colored green if the camera is running at its highest pace.
  • Frames
    Set the number of frames to be read from the camera. Setting zero (for 1*, 4, 6, 7, 8, 9, 10, 11, 12-bit equivalent levels) gives the option to measure an infinite amount of time until the stop button is pressed. The resulting images will be displayed on the right and can be scrolled through with the scrollbar on top of the images (when not saving or streaming). Currently, the maximum number of frames that can be taken in a single 1-bit acquisition is limited to 130,000.
  • External n-bit frame trigger checkbox
    Allows the start of each frame to be synchronized with an external source. On the rising edge of the frame trigger, a new n-bit image is integrated, dependent on the equivalent image levels set by the user. The external trigger is sampled with the internal 100MHz clock, thus requiring the trigger to have a minimum pulse width of roughly 12ns. Requires at least number of frames + 1 triggers to operate successfully. If this mode is activated through the TCP/IP interface, a READY confirmation will be sent before starting the sequence, so you know when it is safe to start triggering the camera.
  • External 1-bit frame trigger checkbox
    Allows the start of each individual 1-bit frame to be synchronized with an external source. On the rising edge of the frame trigger, a new 1-bit image is integrated. The 1-bit images will internally be summed to the requested equivalent image levels. The external trigger is sampled with the internal 100MHz clock, thus requiring the trigger to have a minimum pulse width of roughly 12ns. If this mode is activated through the TCP/IP interface, a READY confirmation will be sent before starting the sequence, so you know when it is safe to start triggering the camera.
  • Sparse data checkbox (1-bit)
    Instead of saving the complete image, only the pixels with a count are saved. Data is a binary array (integers) of the activated pixels.
  • Save checkbox
    Saves the measurement to disk. A folder data/intensity_images/acqXXXXX/ is created in the run or user specified directory and images are saved with the name IMGYYYYY.png or RAWYYYYY.bin (1-bit). XXXXX denotes the run iteration, YYYYY is the frame or package number of the measurement. The following metadata is available in the saved images: Author, System, Date taken, Time taken, Mode, Integration time, Overlap, Frame, Frames, External frame trigger, Software version. Images are saved with 8 or 16 bits depth.
    The raw binary data saved in 1-bit depth is a continuous array of bits. Each bit represents a single pixel, with its value either being 0 or 1. Each binary file stores at most 1,000 frames, with each frame taking exactly 512×512 bits.
    The sparse binary data saved in 1-bit depth is a continuous array of the activated pixels. Each four bytes form a single integer representing the pixel number with a value '1'. These binary files store at most 10,000 frames, pixel numbers are increasing. A dummy pixel 512×512 indicates the end of the current frame.
  • Start button
    Launches the chosen measurement.

The acquired images are displayed during the acquisition on the right side of the screen. Once the sequence is complete, one can scroll through the images with the scroll bar on the top (only if not in saving/streaming mode). The image brightness can be adjusted with the slider on the far right side of the screen.


Gated imaging

SPAD512S gated imaging

The third tab provides the gated imaging capabilities of the system. The control panel is again visible on the left and results are displayed and plotted on the right. The measurement progression is indicated in the bottom status bar. The following options are available:

  • 6/7/8/9/10/11/12-bit equivalent image levels
    Switch between 6, 7, 8, 9, 10, 11 and 12-bit equivalent image levels. Due to the pile-up correction, we denote the number of discrete levels in the final output image (the image range is extended to roughly a +2.5-bit equivalent). There are currently no 1 and 4-bit imaging modes available in gated operation. All equivalent image levels are rendered out as 16-bit images (pile-up corrected). Images above 8-bit are internally obtained by summing multiple 8-bit data sets (so the maximum value is not 2n-1, but 2n-8 × 255).
  • Integration time (n-bit)
    Set the measurement integration time in milliseconds for the total of an n-bit image. This time is divided by 2n-1 to get the single-bit image exposure time. Each n-bit image is always the sum of 2n-1 binary images (except above 8-bit, where it is 2n-8 × 255).
  • Overlap expose/read checkbox
    Enables the simultaneous exposure and reading from the chip, which reduces the overhead from reading the single-bit frames. This might, however, introduce some artefacts in the resulting image.
  • Estimated exposure time
    Displays the estimated exposure per image. Since the gate is only open for a fraction of the time, the estimated exposure time is the duration in which the gate is actually open.
  • Laser period
    Displays the frequency of the currently connected laser clock. The background of the box will be colored green if a proper clock is detected and the camera is ready for a new acquisition.
  • Estimated frame rate
    Displays the estimated frame rate per gate sequence. The background of the box will be colored green if the camera is running at its highest pace.
  • Frames
    Set the number of gate sequences to be read from the camera. Setting zero (for 6, 7, 8, 9, 10, 11, 12-bit equivalent levels) gives the option to measure an infinite amount of time until the stop button is pressed. The resulting images will be displayed on the right and can be scrolled through with the scrollbar on top of the images. The intensity profile of any pixel can be shown in the plot on the right by clicking on it in the image (up to 10 graphs). One can turn the plot to log scale through the menu.
  • Gate steps
    Set the number of gates to take for each frame. Each gate step will be shifted away from the laser clock edge by the step size either in positive direction.
  • Gate step size
    Set the step size in picoseconds. The step is calculated based on the provided frequency. The smallest step size is in the order of 17 to 20ps, or 1250ps for operation at less than 10MHz.
  • Arbitrary step sizes checkbox
    Defines if the gate steps will be uniform or loaded with a user defined sequence. The number of gate steps is defined by the length of the user defined sequence + 1.
  • Arbitrary step sizes
    Input the user defined sequence of steps. Each step is a multiple of the minimum step size. Each value has to be separated with a comma. The values are the delta steps, e.g. putting a value of 0 stays in the current step (and so it doesn't reset to the begin of the sequence). The sequence always starts with a step value of zero at the gate offset. The maximum number of arbitrary steps is 127 steps/frame.
  • Gate width
    Set the exposure opening of the gate with respect to the laser clock period, e.g. 50ns. The width is an integer value from 5ns to a value that depends on the provided frequency. The actual gate width can deviate slight for lower values (<10ns). We guarantee all our systems to be working properly from a gate width setting of 6ns. Setting 5ns gate width can lead to a shorter gate width, but it can also introduce some artefacts. This is dependent on device to device variation.
  • Gate offset
    Set the initial offset of the gate sequence. The offset is a multiple of the minimal gate step size.
  • External frame trigger checkbox
    Allows the start of each frame (one frame is a complete gate sequence with X gate steps) to be synchronized with an external source. On the rising edge of the frame trigger, a new n-bit image sequence is integrated, depending on the equivalent image levels set by the user. The external trigger is sampled with the internal 100MHz clock, thus requiring the trigger to have a minimum pulse width of roughly 12ns. If this mode is activated through the TCP/IP interface, a READY confirmation will be sent before starting the sequence, so you know when it is safe to start triggering the camera.
  • External gate trigger checkbox
    Allows the start of each gate pulse to be controlled with an external source. On each rising edge of the gate trigger, a single gate is opened for the duration set by the gate width. As soon as the gate closes, the system is ready to receive a new trigger. The integration time of a single image is set separately in the software as usual. In this integration time, there can be as little as zero external gate triggers up to a maximum of the integration time divided by the gate width + 2ns. The external trigger is sampled with the internal 500MHz clock, thus requiring the trigger to have a minimum pulse width of roughly 3ns. The external gate trigger should be applied on the laser clock input SMA.
  • Save (single/multi) checkbox
    Saves the measurement to disk. In multi mode, a folder data/gated_images/acqXXXXX/ is created in the run or user specified directory and images are saved with the name IMGYYYYY.png. XXXXX denotes the frame, YYYYY is the gate step. In single mode, a folder is created in the run directory with the name data/gated_images/acqXXXXX/. Images are saved with the following name: IMGYYYYY-ZZZZ.png. XXXXX denotes the measurement iteration, YYYYY is the frame number and ZZZZ is the gate step. The following metadata is available in the saved images: Author, System, Date taken, Time taken, Mode, Bit shift MSB, Integration time, Laser frequency, Overlap, Frame, Frames, Gate step, Gate steps, Gate step arbitrary, Gate step size, Gate width, Gate offset, Gate increment, External frame trigger, External gate trigger, Software version. Images are saved with 8 or 16 bits depth.
  • Start button
    Launches the chosen measurement.
  • Find gate button
    Calculates the optimal gate offset and number of gate steps to cover one period of the gate.

The acquired images are displayed during the acquisition on the right side of the screen, together with a graph representing the average counts on the sensor in each gate step. Once the sequence is complete, one can scroll through the images with the scroll bar on the top (only if not in saving/streaming mode). The image brightness can be adjusted with the slider on the far right side of the screen.

The gating measurement principle is shown below. A gated frame is a series of n-bit images, each shifted by a small time step in order to reconstruct the time varying phenomenon of interest. The number of images to be taken in a single frame is given by the gate steps parameter, or in case arbitrary step sizes are used, by the number of arbitrary steps. Each step, the gate opening, defined by the gate width, is shifted by the set gate step in picoseconds. The gate is shifted away from the rising edge of the laser clock. To create a single n-bit image, the gate is opened for N times, where N is given by the integration time (n-bit) multiplied by the laser frequency. For example, when the integration time is set to 3ms and the laser frequency is 20MHz, the gate will open 60,000 times to create a single image. One can also estimate the actual exposure time (the time in which the sensor is sensitive) from the gate width: exposure time = gate width / laser period * integration time. Taking the same example as before with a gate width of 6ns: exposure time = 6/50*3ms = 0.36ms. This number is also calculated and shown on the gated imaging tab.

Live view

Fluorescence lifetime imaging

SPAD512S FLIM imaging

The fourth tab provides (experimental) FLIM imaging capabilities of the system. This mode uses a sequence of gated images to calculate the lifetimes and generate a lifetime image. For ease of use, the number of parameters in the control panel on the left is simplified and most underlying gate parameters are calculated based on the expected lifetime. The control panel is split in between the measurement mode and the analysis mode, which becomes available after finishing a lifetime measurement. In measure mode, the following options are available:

  • Mono/bi-exponential mode [only before calibration]
    Switch between mono-exponential measurements and bi-exponential measurements. The main differences are the way the system is calibrated and the way normal measurements are IRF corrected.
  • Integration time (single step)
    Set the measurement integration time in milliseconds for the total of an image. This time is divided by 255 to get the single-bit image exposure time. This time is equivalent to the time set in gated imaging mode for a single step exposure.
  • Integration time (FLIM image)
    Set the measurement integration time in milliseconds for the complete sequence that will deliver a final FLIM image. This parameter defines the FLIM frame rate. The frame rate is influenced by the integration time for a single step and the gate subsampling setting.
  • Maximum expected lifetime [only before calibration]
    Set the maximum expected lifetime of the fluorophores under investigation. This parameter defines the measurement window of the exponential decay curve. The maximum lifetime is limited by the used laser frequency in combination with the used gate width. This value can be estimated with (laser period - gate width)/6.
  • Gate width [only before calibration]
    Set any of the three options for a short, medium or long exposure gate width. A short gate width should be sufficient for the majority of measurements. These gate widths correspond to values 6, 9 and 12ns respectively in gated imaging mode.
  • Gate subsampling [only after calibration]
    Divide the optimal number of gate steps as calculated in the calibration. For calibration, the minimum gate step size is taken to get the most accurate calibration result. For normal measurements, one can undersample to trade-off precision versus speed, i.e. a higher gate subsampling value will result in higher frame rates.
  • Save checkbox
    Saves the measurement to disk. A folder data/flim_images/acqXXXXX/ is created in the run or user specified directory and data is saved with the name IMGYYYY.txt. XXXX denotes the run iteration, YYYY is the frame number. On each line in the file, the following information for one pixel is printed: intensity [cps], lifetime [ps] and the (g/s)×1000 coordinates. When measuring a single frame, also images of all plots are saved into the data/flim_images/acqXXXXX/ folder.
  • Live view checkbox
    This option is available after at least one normal FLIM measurement in order to check that the data makes sense. Enabling this box and launching a new measurement will continuously run new FLIM measurements until the user stops the operation.
  • Start button
    Launches the chosen measurement.
  • ROI button
    Click, release and drag in the intensity image to select a region of interest. During selection, a white outline will appear on the image. Clicking a second time confirms the selected window. A new acquisition is launched taken the new ROI into account.
  • ROI reset
    Resets the region of interest back to the full image. A new acquisition is launched that shows the full image. The ROI is automatically reset for live view acquisitions.
  • Open button
    Open a previous FLIM measurement in order to analyse the data again or generate the plots. One can open a sequence of images by selecting multiple *.txt files at once. The format of the data should correspond to files previously saved by our software.

FLIM images are generated with the phasor method. In the case of mono-exponential samples, the calibration of the IRF finds the falling edge of the gate. The end of the IRFs falling edge determines the starting point for normal measurements and the measurement window is defined by the maximum lifetime. Since the gate falling edge is convolved with the fluorescence decay for normal measurements, we will capture exactly the exponential part of the decay curve. The phasor is calculated directly from the measurement data without further corrections.

In the case of bi-exponential data, the calibration and measurements rely on the complete gate window. Therefore, the calibration determines both the gate rising and falling edges and calculates the complete window, including the extension from the fluorescence convolution. For normal measurements, the phasor data is calculated and the IRF phasor data is subtracted from it.

For each measurement, an intensity image, lifetime image, pixel response curve and phasor plot are generated. Each is displayed in one quadrant of the screen on the right side of the control panel. One can adjust the zoom and color range to adjust the images for better clarity. One can add multiple pixels (up to 10) to the pixel curve graph by clicking on them in either the intensity or lifetime image. Clicking on a pixel will also highlight the corresponding phasor in the phasor plot with a red circle. The average calculated lifetime and standard deviation are printed in the bottom right corner.

Alternatively, one can stream out the raw data that is generated from the phasor calculations through the remote TCP/IP interface. The data for each pixel is streamed out and contains the intensity [cps], lifetime [ps] and the (g/s)×1000 coordinates of the phasor.

When the measurement is completed, the analysis tab is unlocked. The analysis mode has the following capabilities:

  • ROI button
    Click in the intensity image and move around the area of interest to draw the region of interest to be analysed. Click a second time to confirm the region. Once a region has been selected, the ROI is also displayed in the lifetime image. The average curve is displayed in the curves plot on the top right and an outline is drawn in the phasor plot that covers the lifetimes included in the current ROI. One can make up to 20 regions of interest.
  • ROI reset
    Clears all active regions of interest.
  • Open button
    Allows to load a previously stored set of ROIs. Once an analysis result is stored, a file is saved with the coordinates of each ROI. This file can be selected to repeat the same analysis on a new measurement.
  • Save button
    Saves all four plots into *.pdf documents, saves the list with the information on counts and lifetime into a *.txt file and saves the coordinates of each ROI into a *.txt file that can be loaded to rerun the analysis on a new measurement.

When a new measurement is requested, all the analysis steps are repeated and the ROIs and corresponding parameters are again displayed. Similarly, the analysis is repeated when the displayed frame is changed.


HDR imaging

SPAD512S HDR imaging

The fifth tab provides (experimental) high-dynamic range imaging functionalities. This mode uses a sequence of differently exposed images to blend into a HDR image. The exposure differences are pre-loaded in the firmware to achieve the highest possible image acquisition rate. On the left side, there is the usual control panel to setup the parameters for the measurements that are displayed on the right. The following options are available:

  • 6/7/8-bit equivalent image levels
    Switch between 6, 7, 8-bit equivalent image levels. Due to the pile-up correction, we denote the number of discrete levels in the final output image (the image range is extended to roughly a +2.5-bit equivalent). All equivalent image levels are rendered out as 16-bit images (pile-up corrected).
  • Integration time (n-bit)
    Set the measurement integration time in micro/milliseconds for the total of an n-bit image. This time is divided by 2n-1 to get the single-bit image exposure time. Each n-bit image is always the sum of 2n-1 binary images.
  • Δ Integration time
    Set the exposure time difference per image. Images are taken with the following multipliers: Δ×[0, -1, 1, -2, 2].
  • Images in sequence
    Select to either take 3 images (up to Δ±1) or 5 images (up to Δ±2).
  • HDR mode
    At the moment there is support for two very basics way of computing the high-dynamic range image. Either "Fusion", which extends the image range and selects the Δ based on the counts. Or "Laplacian weighted", which computes the quality of each Δ image based on well-exposedness and contrast.
  • Estimated frame rate
    Displays the estimated frame rate that the sensor will be taken images at. The background of the box will be colored green if the camera is running at its highest pace.
  • Frames
    Set the number of HDR frames. The total number of images taken by the camera is Frames × Images in sequence.
  • External n-bit frame trigger checkbox
    Allows the start of each image in the sequence to be synchronized with an external source.
  • External 1-bit frame trigger checkbox
    Allows the start of each individual 1-bit frame to be synchronized with an external source.
  • Save checkbox
    Saves the measurement to disk. A folder data/hdr_images/acqXXXXX/ is created in the run or user specified directory and images are saved with the name IMGYYYYY-Z.png. XXXXX denotes the run iteration, YYYYY is the frame or package number of the measurement, Z denotes the image in the sequence, or the HDR combined image. The following metadata is available in the saved images: Author, System, Date taken, Time taken, Mode, Integration time, Integration time delta, Bracket, Brackets, Frame, Frames, External frame trigger, Software version. Images are saved with 16 bits depth.
  • Start button
    Launches the chosen measurement.

The acquired images, both the Δ0 and the HDR image, are displayed during the acquisition on the right side of the screen. Once the sequence is complete, one can scroll through the images with the scroll bar on the top. The image brightness can be adjusted with the slider on the far right side of the screen.


Settings

SPAD512S camera settings

The last tab shows the system settings. The top half is divided in 6 boxes:

  • Top left
    Status indication of the USB connection. This is indicated green when the system is connected by USB3. The system can be reinitialized by clicking the reset button. The software gives a warning when the system is not connected with USB3.
  • Top middle
    Speed test for the USB connection. The transfer speed is calculated by transferring the set number of MBs and dividing by the elapsed time.
  • Top right
    Status of the remote communication server. The software can be programmed from any capable TCP/IP software package, see the command guide for instructions. The listening port on the localhost can be changed through the dropdown menu.
  • Bottom left
    Current operating voltages. The operating voltages can be changed on the fly. One can change the detectors sensitivity by adjusting the Vex. Vq is set to 0 by default and cannot be changed.
  • Bottom middle
    Current operating temperatures of the FPGA, the interposer (main) PCB and the chip PCB on which the sensor is located. Therefore, the chip PCB temperature should be a good indication of the sensors current operating temperature. Ideally, the sensor temperature should be kept as low as possible. Without air flow, the PCB temperature should be below 45°C. For supported device, also the relative humidity will be displayed.
  • Bottom right
    Current SMA input frequencies. Shows the current running frequency for the SMA laser and frame clock input.

The log is printed in the field below. Here you can find information regarding the connection to the two FPGAs and the current versions of the firmware and software. The log can be saved with the save button on the right.


Remote command interface

The software can be started with the following optional command line arguments. The command line syntax is either SPAD512S.exe arg1 arg2 arg3 on Windows or ./SPAD512S arg1 arg2 arg3 on Linux.

  • arg1 is GUI
    Launches the software with the GUI shown (default).
  • arg1 is headless
    Launches the software without the GUI shown. A tray icon is visible in the taskbar.
  • arg2 is options
    Displays the following options in the tray icons context menu: show, hide, quit (default in headless mode).
  • arg2 is no-options
    No context menu available for the tray icon.
  • arg3 is the user defined TCP/IP port
    Select a port of free choice. The software will confirm that it is listening on the chosen port. This value will default to 9999 when unused (or the value stored from a previous run).

For example to start the software without a GUI and with a context-menu in the tray icon on windows, execute in the command line: SPAD512S.exe headless options

To also specify a custom TCP/IP port, e.g. 2500, we execute on windows, in the command line: SPAD512S.exe headless options 2500

The software can be operated over TCP/IP with a simple command protocol. The software is listening for new remote users on the PCs localhost port 9999 by default. This port can be changed on the settings tab. The following sections list the available commands and show some programming examples.


Command guide

All commands start with capital characters, followed by its parameters. Parameters indicated in triangle brackets <> should be replaced by a numerical value, parameters in square brackets [] should be replaced by a string. Commands can be separated by a line feed \n, so multiple commands can be send at the same time.

  • Live view image
    L
    Command returns the latest live view image in binary format (1-byte per pixel).
  • Stop any currently running acquisition
    STOP
    Command stops currently running acquisitions (if any).
  • Intensity imaging
    I,<bits>,<measurement time in us/ms>,<frames>,<frame trigger>,<overlap>,<sparse>,<stream>,<image width *>
    <bits> is either 1, 4, 6, 7, 8, 9, 10, 11 or 12 for the equivalent image levels of the image.
    <frame trigger> is either 0 for no external triggering of new frames, 1 for the external triggering per n-bit frame, or 2 for the external triggering per 1-bit frame.
    <overlap> is either 1 for overlapping exposure and read-out or 0 for non-overlapped measurements.
    <sparse> is either 1 for sparse saving of data or 0 for standard full images. This option is only available in 1-bit depth, set to zero for all other image levels.
    <stream> is either 1 for direct streaming of the images through TCP/IP or 0 for saving of the images to disk.
    <image width *> is an optional parameter to set the width of images taken by the camera. This number should be a number that is a power of two.
    Command returns the paths to the image files, or streams the images directly.
  • Gated imaging
    G,<bits>,<measurement time in ms>,<frames>,<gate steps>,<gate step size in ps>,<gate step arbitrary>,<gate width>,
    <gate offset ins ps>,<gate direction>,<gate trigger>,<overlap>,<stream>,<image width*>
    <bits> is either 6, 7, 8, 9, 10, 11 or 12 for the equivalent image levels of the image.
    <gate step arbitrary> is either 0 for uniform step sizes defined by step size and steps or 1 for arbitrary step sizes defined by the user (use command Ga).
    <gate direction> is unused (always incrementing).
    <gate trigger> is either 0 for internal trigger, 1 for the use of an external trigger to launch each gate pulse, or 2 for the use of an external trigger to launch each gate frame (step sequence).
    <overlap> is either 1 for overlapping exposure and read-out or 0 for non-overlapped measurements.
    <stream> is either 1 for direct streaming of the images through TCP/IP or 0 for saving of the images to disk.
    <image width *> is an optional parameter to set the width of images taken by the camera. This number should be a number that is a power of two.
    Command returns the paths to the image files.
  • Set arbitrary gated step sizes
    Ga,[step size array]
    [step size array] is a dot-comma (;) separated array with the user defined step sizes to be loaded into the FPGA.
    Command returns a confirmation if writing the array is successful.
  • Find optimal gate offset and number of gate steps
    Gf,<measurement time in ms>,<gate step size in ps>,<gate width>,<gate direction>
    <measurement time> is unused.
    <gate direction> is unused.
    Command returns the parameters found for the gate.
  • FLIM imaging
    • Calibration
      F,c,<flim mode>,<measurement time in ms>,<expected lifetime in ns>,<gate width>
      <flim mode> is either 0 for mono-exponential or 1 for bi-exponential measurements.
      <gate width> is either 0 for a short, 1 for a medium or 2 for a long gate width.
      Command returns the result of the calibration.
    • Normal measurement
      F,i,<measurement time in ms>,<frames>,<gate subsample ratio>,<stream>
      <stream> is either 0 for saving the data to disk or 1 for direct streaming the output through TCP/IP in the format intensity [cps], lifetime [ps] and the (g/s)×1000 coordinates per pixel (same format as in the saved file). See below python example for the reconstruction of an image from the raw data.
      Command returns the paths to the image files and phasor plot or it returns the raw data directly.
  • HDR imaging
    H,<bits>,<measurement time in ms>,<delta measurement time in ms>,<number of images in sequence>,<hdr mode>,<frames>,<frame trigger>,<overlap>,<sparse>,<stream>,<image width *>
    <bits> is either 6, 7 or 8 for the equivalent image levels of the image.
    <number of images in sequence> is either 3 or 5.
    <hdr mode> is either 1 for "Fusion" or 2 for "Laplacian weighted".
    <frame trigger> is either 0 for no external triggering of new frames, 1 for the external triggering per n-bit frame, or 2 for the external triggering per 1-bit frame.
    <stream> is either 1 for direct streaming of the images through TCP/IP or 0 for saving of the images to disk.
    <image width *> is an optional parameter to set the width of images taken by the camera. This number should be a number that is a power of two.
    Command returns the paths to the image files, or streams the images directly (bracketed images + fused image).
  • Set auto or manual exposure for the live view
    AE,<mode>,<measurement time in ms>
    <mode> is 0 for manual exposure and 1 for auto exposure.
    Command returns a confirmation of the changed exposure mode.
  • Set pile-up correction to be active/inactive
    PU,<enable>
    <enable> is 1 for the pile-up correction to be active (default behaviour as of version 1.50), 0 for no pile-up correction.
    Command returns a confirmation of the new operation mode.
  • Calibrate the system
    CALIB,<mode>
    <mode> is 0 for noise calibration, 1 for dead pixel calibration, 2 for master/slave offset calibration and 3 for breakdown calibration.
    Command returns when the calibration has completed.
  • Manually set the master/slave offset value
    CALIB,<mode>,<value>
    <mode> is 2 to set master/slave offset.
    <value> is the offset in picoseconds.
    Command returns the new offset value.
  • Get current operating temperatures and running frequencies
    R
    Command returns the temperatures of the FPGA and PCBs in °C. It also returns the measured frequency of the laser and frame clocks. Format is <FPGA master temperature>,<FPGA slave temperature>,<main PCB temperature>,<chip PCB temperature>,<laser clock frequency>,<frame clock frequency>. For systems with a humidity sensor, the format is: <FPGA master temperature>,<FPGA slave temperature>,<main PCB temperature>,<main PCB temperature 2>,<chip PCB temperature>,<relative humidity in %>,<laser clock frequency>,<frame clock frequency>.
  • Get system information
    D
    Command returns the debug information for the system. This includes the FPGA serial numbers, version numbers and enabled modules.
  • Set the path for the software to save data and images
    D,[dir]
    Command returns the folder path if it exists.
  • Set the time-out for measurements
    TO,<time in seconds>
    Command sets the new time-out (value rounded to 5 seconds increments).
  • Reset an intensity shutdown when it occurs
    SI
    Command returns if an intensity shutdown reset has been initiated or not.
  • Set the fan speed
    S,<speed>
    <speed> is 0 for disabled fans, 1 for enabled fans at full-speed.
    Command returns a confirmation if fan speed change is successful.
  • Enable/disable systems power
    POW,<enable>
    <enable> is 1 for activating VDD, 0 for disabling VDD.
    Command returns a confirmation of the new power state.
  • Set voltages
    V,<Vex>
    <Vex> range is 4 to 7V.
    Command returns a confirmation if changes are successful.
  • Get voltages
    V
    Command returns the current operating voltages. Format is <Vex>
  • Close the software QUIT
    Closes the software and brings the detector in a safe operating regime.

Python library

We provide an extensive library that gives access to all functions provided by the SPAD512² software in an easy to use way integrated into Python. The following files are available:

  • SPAD512S.py
    Python library to control the camera, with easy access to all functionalities from the software.
  • SPAD512S_example_script.py
    Python script to demonstrate the use of the library with a few examples.

Basic programming examples

Some simple programming examples are available for download below, these are useful if you want to develop your own scripts from scratch without using our Python library. The following files are available:


Performance benchmarks

The following tables gives an overview of the acquisition speeds that can be obtained with our camera and software. Since they depend on the connected PC, these metrics cannot be guaranteed and are solely for reference purposes. These values were obtained on a PC with the following specifications:

  • OS: Windows 10, version 22H2
  • Processor: AMD Ryzen 7 3700X
  • RAM: 64 GB
  • Storage: SSD 1 TB

The table shows some typical measurement scenarios and corresponding values, most of them are split between the reading time from the USB and the post-processing time taken by the software. Currently, the 4-bit levels requires most post-processing due to the packing of the data in bytes and the need to unpack this data. In most scenarios, a read-out speed can be obtained that is fairly close to the theoretical value. In case of 1-bit depth, the data is stored locally in the FPGA before being transmitted to the PC; in this case the read-out speed is not separated from the total speed. Saving to disk and streaming through TCP/IP have a slight overhead, mainly dependent on the performance of the PC. The time with saving is the time until the system is ready for a new measurement; it might be that the software is still writing the images to disk in the background.

Measurement settings Time without saving Time with saving Time with streaming
Intensity 8-bit, overlap enabled,
2.7 ms/frame, 1,000 frames
2705 + 5 ms 2705 + 5 ms 2705 + 6 ms
Intensity 7-bit, overlap enabled,
1.4 ms/frame, 1,000 frames
1412 + 6 ms 1413 + 9 ms 1412 + 9 ms
Intensity 6-bit, overlap enabled,
0.7 ms/frame, 1,000 frames
720 + 10 ms 726 + 11 ms 732 + 12 ms
Intensity 4-bit, overlap enabled,
170 μs/frame, 1,000 frames
218 + 260 ms 222 + 285 ms 227 + 335 ms
Intensity 1-bit, overlap enabled,
10.3 μs/frame, 10,000 frames
640 ms 945 ms 714 ms
Gated 8-bit, overlap enabled,
2.7 ms/frame, 10 frames, 50 gate steps/frame
1372 + 4 ms 1371 + 6 ms 1372 + 6 ms
Gated 7-bit, overlap enabled,
1.4 ms/frame, 10 frames, 50 gate steps/frame
767 + 7 ms 767 + 8 ms 767 + 9 ms
Gated 6-bit, overlap enabled,
0.7 ms/frame, 10 frames, 50 gate steps/frame
500 + 13 ms 503 + 20 ms 508 + 36 ms
Gated 8-bit, overlap enabled,
2.7 ms/frame, 1 frames, 500 gate steps/frame
1349 + 4 ms 1349 + 4 ms 1350 + 5 ms
Gated 7-bit, overlap enabled,
1.4 ms/frame, 1 frames, 500 gate steps/frame
701 + 11 ms 701 + 12 ms 701 + 17 ms
Gated 6-bit, overlap enabled,
0.7 ms/frame, 1 frames, 500 gate steps/frame
361 + 17 ms 363 + 24 ms 368 + 45 ms

FAQ

Answers to the most frequently asked questions.

Always use only a single power supply with our camera! You can use either of the two ports on the camera to plug in the power cable.
First thing to check is the SMA port to which the laser signal is connected. Only the first port on the left side of the camera as seen from the front can be used, so make sure that you are using the correct SMA. Second thing to check is the amplitude of the signal. For NIM users, we suggest using any of the adapters listed in the hardware section. For all other users, check that the signal has an amplitude of at least 1.8 V. Ideally a LVTTL / TTL signal with 50% duty cycle should be used.
Usually this is caused by not calibrating the master and slave offset. Try to run the calibration of master/slave offset through the menu to correct for the timing difference between the two halves of the camera. If there is still a large timing difference (skew) between the two halves, one can try to enter the timing difference manually in the box that appears when using the shortcut CTRL + SHIFT + O.
You can acquire more than 130,000 frames in all bit modes except in 1-bit mode by setting the frames parameter to zero. This will start a measurement with an infinite number of frames. You can stop the acquisition once the number of frames that you need are acquired. In 1-bit imaging, it is not possible to do a continuous stream. Therefore, the maximum number of frames that can be stored on the camera limits the size of the burst-mode packages close to 130,000. In the future, we will also enable automatic burst-mode repetition for 1-bit depth for those who want to acquire multiple burst at once.
The minimum acquisition time depends on the bit-mode and the gate parameters. In intensity imaging and 1-bit depth, the minimum acquisition time is 20 nanoseconds. In the other bit depths, it will be a 2^bit-mode multiple of this. E.g. in 8-bit equivalent image levels it is 256×20 ns = 5.1 us. In gated imaging, the shortest possible gate is 6 nanoseconds, in combination with the external gate trigger, one could get a single 6 ns integration time in an 8-bit image. However, this is not very useful, since this can only lead to a single count. Normally in gated imaging, one would calculate the effective exposure time: integration time×gate width/laser period.
You can use any frequency that is greater than 1 kHz and up to 80 MHz, as from version 1.50.
You can decrease the width of the image as of version 1.50.

Support

If this documentation doesn't answer your questions, feel free to send us an e-mail.


Changelog

Version history with most notable changes.

Version 1.56

  • Fixed Breakdown calibration on newer systems.

Version 1.55

  • Added Contrast slider in live view.
  • Added Intensity/gated ROI lines in live view.
  • Added Breakdown calibration status message when starting remote server.
  • Changed SI command to always be responding.
  • Fixed No humidity sensor detected in headless mode.
  • Fixed Sync between master/slave in some scenarios.

Version 1.54

  • Fixed Time-outs on acquisitions.
  • Fixed Stopping of acquisitions.
  • Fixed FLIM ROI crash.
  • Fixed FLIM open previous dataset crash.
  • Fixed FLIM graphs to be noise corrected.
  • Fixed FLIM data streaming through TCP/IP.

Version 1.53

  • Improved FLIM ranges to be consistent along a multi-frame acquisition.
  • Improved FLIM data saving speed.
  • Changed FLIM save data format.
  • Changed FLIM intensity threshold to allow lower signals.
  • Fixed Black patterns in FLIM images.
  • Fixed Drifting lifetime in multi-frame FLIM acquisitions.
  • Fixed To end any running measurement at quit of program.

Version 1.52

  • Improved Integration time difference between overlap/non-overlapped acquisitions.
  • Added STOP command to stop any running measurement (if any).
  • Added TO command to alter the default 5 seconds time-out.
  • Added TO option in the menu.
  • Added Continuous (slow) 1-bit mode.
  • Fixed Previous noise/dead/gain calibrations not resetting properly.
  • Fixed 1-bit measurements failing.
  • Fixed Contrast slider for single frame acquisitions.

Version 1.51

  • Improved Detection of faulty systems.
  • Improved Handling of errors.
  • Added Ability to open a previous FLIM dataset.

Version 1.50

  • Changed Pile-up correction by default.
  • Changed Gated trigger through laser clock input.
  • Changed Gated trigger and frame trigger can be used simultaneously.
  • Changed Calibration mappings, please redo all calibration steps.
  • Changed No more image sequence functionality in saving/streaming modes.
  • Improved Memory usage in saving/streaming modes.
  • Improved Calibration routines.
  • Improved Detection of the maser/slave offset.
  • Improved Finding the gate profile.
  • Improved Longer gate widths in gated triggering mode (for low frequencies).
  • Improved FLIM images to be user changeable graphs.
  • Improved FLIM phasor plot to show density.
  • Improved FLIM saving to write a list of raw values to text.
  • Improved FLIM saving of single frame also renders all the graphs as pdf.
  • Improved FLIM analysis per frame (highlight coverage area in phasor plot).
  • Added Gate offset functionality when using gated triggering mode.
  • Added Warm pixel correction.
  • Added Ability to do gating at lower frequencies down to 1 kHz.
  • Added Ability to reduce the image width to increase frame rate.
  • Added Ability to use frame trigger in intensity mode for either full frame or per 1-bit sub-frame.
  • Fixed First intensity frame has lower counts on LVDS systems.
  • Fixed Gated steps not always shifting properly.
  • Fixed FLIM images crashing / not saving > 1 frame.
  • Fixed FLIM curves disappearing > 1 frame.
  • Fixed FLIM calibration.

Version 1.48

  • Added Message before starting breakdown calibration.
  • Fixed Voltage settling behaviour.

Version 1.47

  • Added Gated imaging save in single or multiple folders.
  • Improved 1-bit error detection.
  • Improved Arbitrary gated imaging (new limit 127 gate steps/frame).
  • Fixed Weird display behaviour with arbitrary gated imaging.
  • Fixed First intensity frame has lower counts.
  • Fixed Start-up bug (also when doing breakdown calibration).

Version 1.46

  • Improved Image metadata.
  • Removed Arbitrary 4x step size limitation.
  • Fixed Crash on gated imaging with arbitrary step sizes.
  • Fixed Save folder numbering.

Version 1.45

  • Fixed Sensor starting with black image introduced in 1.44.

Version 1.44

  • Improved Support for > 8-bit depths (correct display).
  • Improved Calculation of frame rate (especially for 4-bit imaging).
  • Added Option to apply the pile-up correction on the image data.
  • Added Option to change the alignment of images with the MSB.
  • Changed Default alignment of images with the LSB.

Version 1.43

  • Improved Support for > 8-bit depths.
  • Improved Saving of images during acquisition.
  • Improved Accuracy of saving/processing elapsed time.
  • Added Image updates during acquisition.
  • Added Image average gate sequence plot during acquisition.
  • Added Estimated frame rate display based on current settings.
  • Changed Saving of image sequences in separate folders.
  • Changed Button to copy the current live view exposure time to gated imaging as well with gate width ratio compensation.

Version 1.42

  • Fixed Data scrambling introduced in 1.41.

Version 1.41

  • Added Support for bit-depths > 8-bit (for testing purposes).
  • Fixed Noise suppression value calculation.
  • Fixed Potential critical start-up wait time.

Version 1.40

  • Added Support for humidity sensing (only new devices).
  • Added Dark theme (enable from the menu).
  • Added Live view histogramming.
  • Added Live view pixel saturation display.
  • Added Brightness slider to intensity / gated imaging (for displaying purposes only).
  • Added POW command to enable / disable VDD.
  • Added Basic gain calibration (use a uniform light source in combination with the optics to be used).
  • Added Option to disable all pixel corrections.
  • Added Timetags to image metadata.

Version 1.37

  • Added READY confirmation in frame triggering mode before starting the sequence.
  • Improved Accuracy of measurement elapsed time.
  • Fixed Frame triggering in intensity and gated imaging modes.
  • Fixed Exposure of the first frame in intensity and gated imaging modes.
  • Removed Requirement for sending additional frame trigger pulses.

Version 1.36

  • Fixed TCP/IP port selection.

Version 1.35

  • Changed 1-bit depth can now be activated from the options menu.

Version 1.34

  • Added Check if TCP/IP port is occupied and select next one in case.
  • Added Ability to start with custom TCP/IP port from the command line.
  • Added Ability to reset intensity shutdown through TCP/IP.
  • Added Ability to separate remote commands with line feed for improved reliability.
  • Improved Intensity shutdown information now also through TCP/IP.
  • Fixed Gating at low frequencies (below 18MHz).

Version 1.33

  • Improved Detection of master/slave FPGAs.
  • Improved USB speed-test accuracy.

Version 1.32

  • Added Remote command to manually set the master/slave offset.
  • Fixed Intensity linearity of images when the software is not in greyscale mode.

Version 1.31

  • Improved Master/slave offset calibration.
  • Improved Optimal gate settings finder.
  • Added Time-out for triggered acquisitions.
  • Added Ability to stop ongoing acquisitions by sending the remote command again.

Version 1.30

  • Added Breakdown calibration.
  • Added Frame-based read-out for gated imaging in firmware.
  • Added Ability to stop an ongoing gated acquisition.
  • Changed NDO command to CALIB and added breakdown calibration flag.

Version 1.22

  • Fixed Frame triggering in gated imaging.
  • Fixed Calibrate noise/dead not functioning.

Version 1.21

  • Added Ability to stop an ongoing intensity acquisition.
  • Fixed Handling of 1-bit data corruption.

Version 1.20

  • Added Headless mode for the GUI.
  • Added Command to get the latest live view image.
  • Added Command to get system information.
  • Added Frame triggering to gated imaging.
  • Fixed Noise / dead pixel removal.
  • Changed Dead pixel calibration to require darkness (like noise calibration).

Version 1.16

  • Contact us If you require 1-bit functionality.
  • Added Optimal gate settings finder to help set the initial gate parameters.
  • Added Remote command for gate settings finder.
  • Fixed Minimum gate width not working properly.
  • Fixed Systems not always starting.

Version 1.15

  • Removed 1-bit functionality -> please contact us if you need this.
  • Reduced Idle power consumption.
  • Please Don't use versions 1.11 / 1.12 / 1.13 / 1.14, they may break your system.

Version 1.14

  • Fixed Critical startup bug (this might potentially break the system).

Version 1.13

  • Improved Intensity shutdown.
  • Added Manual exposure time slider to the live view.
  • Added Command to change the auto exposure.
  • Added Button to copy the current live view exposure time to intensity imaging.

Version 1.12

  • Fixed LVDS read-out glitches.

Version 1.11

  • Fixed Minor bugfixes.

Version 1.10

  • Changed Several remote commands to add the bit-options for the images.
  • Added Intensity shutdown at excessive count rates.
  • Added Acceptance range of laser clock frequency from 10 to 80MHz.
  • Added Recalculation of gate time steps at each input frequency.
  • Added Disable of 1-bit imaging clock after time-out (re-enabled on the next 1-bit run).
  • Added 6 and 7-bit options to both intensity and gated imaging.
  • Improved Performance of intensity and gated imaging.
  • Improved Handling of 1-bit data and processing speed.
  • Removed Minimum integration time limit in overlapped exposure and read-out mode.
  • Fixed Handling of failed 1-bit acquisitions.
  • Fixed Crashes on infinite measurements when frames set to 0.
  • Fixed 10MHz gated acquisition mode no longer doubling gates.
  • Fixed Master/Slave offset calculation not properly aligning.

Version 1.04

  • Improved Performance of various acquisition modes.
  • Fixed Handling of failed 1-bit acquisitions.

Version 1.03

  • Improved Gated imaging performance.
  • Improved Accuracy of measured acquisition time.

Version 1.02

  • Changed Online documentation platform.
  • Fixed Set save path crashes.

Version 1.01

  • Improved Automatic download of the calibration files from the remote server.
  • Added Commands to calibrate the noise, dead pixels and master/slave offset through TCP/IP.

Version 1.0

  • Improved Updated the core system for better support on modern systems and high-DPI displays.
  • Added Support for higher laser frequencies (experimental, not supported on all systems).
  • Added First FLIM analysis functions with multi-ROI support.
  • Added Dialog on first startup to select firmware flavour.
  • Fixed Https issues for new version checks.

Version 0.91

  • Improved Noise correction algorithm.
  • Improved Dead pixel correction algorithm.
  • Improved LVDS/SE device handling.
  • Fixed Minor bugfixes.
  • Removed Gated offset in external trigger mode.

Version 0.9

  • Added Streaming mode for gated imaging.
  • Added Arbitrary step sizes for gated imaging.
  • Added Saving of the fan state.
  • Added Support for LVDS version devices.
  • Improved Merging 10/20MHz in same firmware with internal switch.
  • Changed Streaming for all image modes to binary data.
  • Changed Intensity and gated measurement commands to add frame trigger and overlapping.
  • Fixed 1-bit sensor read-out.
  • Fixed Half-sensor data processing.
  • Fixed FLIM image processing.

Version 0.81

  • Added A dummy pixel 512×512 to sparse image saving/streaming in 1-bit depth.
  • Changed Set minimum number of frames in gated mode with external trigger to 2.

Version 0.8

  • Added Sparse image saving/streaming for 1-bit images.
  • Added Option to set the fan speed remotely.
  • Improved 1-bit depth processing speed.
  • Changed Saving/streaming of 1-bit images into binary format.
  • Changed Intensity and gated measurement commands to add frame trigger and overlapping.
  • Fixed Crashes in 1-bit depth.
  • Fixed External triggering in gated mode.

Version 0.79

  • Added Option to stream the raw FLIM data through TCP/IP.
  • Fixed FLIM calibration and edge detection.
  • Fixed Limits for maximum integration times.
  • Fixed Limits for maximum expected lifetime.

Version 0.78

  • Added Metadata into the images.
  • Fixed Greyscale saving.

Version 0.77

  • Added Option to externally trigger gates in gated image acquisitions.
  • Added Option to synchronize the laser clock between master/slave.
  • Fixed Pixel mappings.
  • Fixed FLIM calculations.
  • Fixed Minor bugfixes.

Version 0.76

  • Improved Increased the acceptable laser frequency range.

Version 0.75

  • Added Option to externally trigger gates in gated image acquisitions.
  • Added Option to synchronize the laser clock between master/slave.
  • Fixed Pixel mappings.
  • Fixed FLIM calculations.
  • Fixed Minor bugfixes.

Version 0.74

  • Added Multithreading to some heavier calculations and image saving.
  • Improved Reliability.
  • Fixed Pixel mappings (partially solved).
  • Fixed Minor bugfixes.

Version 0.73

  • Added Option to externally trigger frames in intensity image acquisitions.

Version 0.72

  • Added Option for infinite 4 and 8-bit intensity image acquisitions..
  • Fixed Minor bugfixes.

Version 0.71

  • Added Option to overlap read-out and exposure.
  • Added Option to stream intensity images through TCP/IP.
  • Fixed Array column ordering.

Version 0.7

Initial release with the following functionalities:

  • Live view from the SPAD sensor (intensity + FLIM mode).
  • Intensity imaging (1, 4 and 8-bit depths).
  • Gated imaging.
  • FLIM imaging.
  • Voltage control.
  • Temperature reading.
  • TCP/IP remote command interface.

Windows 64-bit + Linux 64-bit.