300 lines
5.9 KiB
C
300 lines
5.9 KiB
C
/**
|
|
******************************************************************************
|
|
* Copyright (c) 2020, STMicroelectronics - All Rights Reserved
|
|
*
|
|
* This software is licensed under terms that can be found in the LICENSE file
|
|
* in the root directory of this software component.
|
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _VL53LX_HIST_STRUCTS_H_
|
|
#define _VL53LX_HIST_STRUCTS_H_
|
|
|
|
#include "vl53lx_ll_device.h"
|
|
#include "vl53lx_dmax_structs.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#define VL53LX_MAX_BIN_SEQUENCE_LENGTH 6
|
|
#define VL53LX_MAX_BIN_SEQUENCE_CODE 15
|
|
#define VL53LX_HISTOGRAM_BUFFER_SIZE 24
|
|
#define VL53LX_XTALK_HISTO_BINS 12
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
uint8_t histogram_config__spad_array_selection;
|
|
|
|
uint8_t histogram_config__low_amb_even_bin_0_1;
|
|
uint8_t histogram_config__low_amb_even_bin_2_3;
|
|
uint8_t histogram_config__low_amb_even_bin_4_5;
|
|
|
|
uint8_t histogram_config__low_amb_odd_bin_0_1;
|
|
uint8_t histogram_config__low_amb_odd_bin_2_3;
|
|
uint8_t histogram_config__low_amb_odd_bin_4_5;
|
|
|
|
uint8_t histogram_config__mid_amb_even_bin_0_1;
|
|
uint8_t histogram_config__mid_amb_even_bin_2_3;
|
|
uint8_t histogram_config__mid_amb_even_bin_4_5;
|
|
|
|
uint8_t histogram_config__mid_amb_odd_bin_0_1;
|
|
uint8_t histogram_config__mid_amb_odd_bin_2;
|
|
uint8_t histogram_config__mid_amb_odd_bin_3_4;
|
|
uint8_t histogram_config__mid_amb_odd_bin_5;
|
|
|
|
uint8_t histogram_config__user_bin_offset;
|
|
|
|
uint8_t histogram_config__high_amb_even_bin_0_1;
|
|
uint8_t histogram_config__high_amb_even_bin_2_3;
|
|
uint8_t histogram_config__high_amb_even_bin_4_5;
|
|
|
|
uint8_t histogram_config__high_amb_odd_bin_0_1;
|
|
uint8_t histogram_config__high_amb_odd_bin_2_3;
|
|
uint8_t histogram_config__high_amb_odd_bin_4_5;
|
|
|
|
uint16_t histogram_config__amb_thresh_low;
|
|
|
|
uint16_t histogram_config__amb_thresh_high;
|
|
|
|
|
|
} VL53LX_histogram_config_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
VL53LX_HistAlgoSelect hist_algo_select;
|
|
|
|
|
|
VL53LX_HistTargetOrder hist_target_order;
|
|
|
|
|
|
uint8_t filter_woi0;
|
|
|
|
uint8_t filter_woi1;
|
|
|
|
|
|
VL53LX_HistAmbEstMethod hist_amb_est_method;
|
|
|
|
uint8_t ambient_thresh_sigma0;
|
|
|
|
uint8_t ambient_thresh_sigma1;
|
|
|
|
|
|
|
|
uint16_t ambient_thresh_events_scaler;
|
|
|
|
|
|
|
|
int32_t min_ambient_thresh_events;
|
|
|
|
uint16_t noise_threshold;
|
|
|
|
|
|
int32_t signal_total_events_limit;
|
|
|
|
uint8_t sigma_estimator__sigma_ref_mm;
|
|
|
|
uint16_t sigma_thresh;
|
|
|
|
int16_t range_offset_mm;
|
|
|
|
uint16_t gain_factor;
|
|
|
|
|
|
uint8_t valid_phase_low;
|
|
|
|
uint8_t valid_phase_high;
|
|
|
|
uint8_t algo__consistency_check__phase_tolerance;
|
|
|
|
uint8_t algo__consistency_check__event_sigma;
|
|
|
|
|
|
|
|
uint16_t algo__consistency_check__event_min_spad_count;
|
|
|
|
|
|
|
|
uint16_t algo__consistency_check__min_max_tolerance;
|
|
|
|
|
|
uint8_t algo__crosstalk_compensation_enable;
|
|
|
|
uint32_t algo__crosstalk_compensation_plane_offset_kcps;
|
|
|
|
int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
|
|
|
|
int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
|
|
|
|
|
|
int16_t algo__crosstalk_detect_min_valid_range_mm;
|
|
|
|
int16_t algo__crosstalk_detect_max_valid_range_mm;
|
|
|
|
uint16_t algo__crosstalk_detect_max_valid_rate_kcps;
|
|
|
|
uint16_t algo__crosstalk_detect_max_sigma_mm;
|
|
|
|
|
|
|
|
uint8_t algo__crosstalk_detect_event_sigma;
|
|
|
|
|
|
|
|
uint16_t algo__crosstalk_detect_min_max_tolerance;
|
|
|
|
|
|
} VL53LX_hist_post_process_config_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
VL53LX_DeviceState cfg_device_state;
|
|
|
|
VL53LX_DeviceState rd_device_state;
|
|
|
|
|
|
uint8_t zone_id;
|
|
|
|
uint32_t time_stamp;
|
|
|
|
|
|
uint8_t VL53LX_p_019;
|
|
|
|
uint8_t VL53LX_p_020;
|
|
|
|
uint8_t VL53LX_p_021;
|
|
|
|
uint8_t number_of_ambient_bins;
|
|
|
|
uint8_t bin_seq[VL53LX_MAX_BIN_SEQUENCE_LENGTH];
|
|
|
|
uint8_t bin_rep[VL53LX_MAX_BIN_SEQUENCE_LENGTH];
|
|
|
|
int32_t bin_data[VL53LX_HISTOGRAM_BUFFER_SIZE];
|
|
|
|
|
|
uint8_t result__interrupt_status;
|
|
|
|
uint8_t result__range_status;
|
|
|
|
uint8_t result__report_status;
|
|
|
|
uint8_t result__stream_count;
|
|
|
|
uint16_t result__dss_actual_effective_spads;
|
|
|
|
|
|
uint16_t phasecal_result__reference_phase;
|
|
|
|
uint8_t phasecal_result__vcsel_start;
|
|
|
|
uint8_t cal_config__vcsel_start;
|
|
|
|
uint16_t vcsel_width;
|
|
|
|
uint8_t VL53LX_p_005;
|
|
|
|
uint16_t VL53LX_p_015;
|
|
|
|
uint32_t total_periods_elapsed;
|
|
|
|
|
|
uint32_t peak_duration_us;
|
|
|
|
uint32_t woi_duration_us;
|
|
|
|
|
|
int32_t min_bin_value;
|
|
|
|
int32_t max_bin_value;
|
|
|
|
|
|
uint16_t zero_distance_phase;
|
|
|
|
uint8_t number_of_ambient_samples;
|
|
|
|
int32_t ambient_events_sum;
|
|
|
|
int32_t VL53LX_p_028;
|
|
|
|
|
|
uint8_t roi_config__user_roi_centre_spad;
|
|
|
|
uint8_t roi_config__user_roi_requested_global_xy_size;
|
|
|
|
|
|
} VL53LX_histogram_bin_data_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
uint8_t zone_id;
|
|
|
|
uint32_t time_stamp;
|
|
|
|
|
|
uint8_t VL53LX_p_019;
|
|
|
|
uint8_t VL53LX_p_020;
|
|
|
|
uint8_t VL53LX_p_021;
|
|
|
|
uint32_t bin_data[VL53LX_XTALK_HISTO_BINS];
|
|
|
|
|
|
|
|
uint16_t phasecal_result__reference_phase;
|
|
|
|
uint8_t phasecal_result__vcsel_start;
|
|
|
|
uint8_t cal_config__vcsel_start;
|
|
|
|
uint16_t vcsel_width;
|
|
|
|
uint16_t VL53LX_p_015;
|
|
|
|
uint16_t zero_distance_phase;
|
|
|
|
|
|
} VL53LX_xtalk_histogram_shape_t;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
|
VL53LX_xtalk_histogram_shape_t xtalk_shape;
|
|
|
|
VL53LX_histogram_bin_data_t xtalk_hist_removed;
|
|
|
|
} VL53LX_xtalk_histogram_data_t;
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|