163 lines
3.0 KiB
C
163 lines
3.0 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.
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include "vl53lx_core.h"
|
|
#include "vl53lx_register_settings.h"
|
|
#include "vl53lx_hist_char.h"
|
|
|
|
#define LOG_FUNCTION_START(fmt, ...) \
|
|
_LOG_FUNCTION_START(VL53LX_TRACE_MODULE_HISTOGRAM, fmt, ##__VA_ARGS__)
|
|
#define LOG_FUNCTION_END(status, ...) \
|
|
_LOG_FUNCTION_END(VL53LX_TRACE_MODULE_HISTOGRAM, status, ##__VA_ARGS__)
|
|
#define LOG_FUNCTION_END_FMT(status, fmt, ...) \
|
|
_LOG_FUNCTION_END_FMT(VL53LX_TRACE_MODULE_HISTOGRAM,\
|
|
status, fmt, ##__VA_ARGS__)
|
|
|
|
|
|
VL53LX_Error VL53LX_set_calib_config(
|
|
VL53LX_DEV Dev,
|
|
uint8_t vcsel_delay__a0,
|
|
uint8_t calib_1,
|
|
uint8_t calib_2,
|
|
uint8_t calib_3,
|
|
uint8_t calib_2__a0,
|
|
uint8_t spad_readout)
|
|
{
|
|
|
|
|
|
VL53LX_Error status = VL53LX_ERROR_NONE;
|
|
uint8_t comms_buffer[3];
|
|
|
|
LOG_FUNCTION_START("");
|
|
|
|
|
|
|
|
status = VL53LX_enable_powerforce(Dev);
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE)
|
|
status = VL53LX_disable_firmware(Dev);
|
|
|
|
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE) {
|
|
status = VL53LX_WrByte(
|
|
Dev,
|
|
VL53LX_RANGING_CORE__VCSEL_DELAY__A0,
|
|
vcsel_delay__a0);
|
|
}
|
|
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE) {
|
|
|
|
|
|
comms_buffer[0] = calib_1;
|
|
comms_buffer[1] = calib_2;
|
|
comms_buffer[2] = calib_3;
|
|
|
|
status = VL53LX_WriteMulti(
|
|
Dev,
|
|
VL53LX_RANGING_CORE__CALIB_1,
|
|
comms_buffer,
|
|
3);
|
|
}
|
|
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE)
|
|
status = VL53LX_WrByte(
|
|
Dev,
|
|
VL53LX_RANGING_CORE__CALIB_2__A0,
|
|
calib_2__a0);
|
|
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE)
|
|
status = VL53LX_WrByte(
|
|
Dev,
|
|
VL53LX_RANGING_CORE__SPAD_READOUT,
|
|
spad_readout);
|
|
|
|
|
|
|
|
if (status == VL53LX_ERROR_NONE)
|
|
status = VL53LX_enable_firmware(Dev);
|
|
|
|
LOG_FUNCTION_END(status);
|
|
|
|
return status;
|
|
}
|
|
|
|
|
|
|
|
VL53LX_Error VL53LX_set_hist_calib_pulse_delay(
|
|
VL53LX_DEV Dev,
|
|
uint8_t calib_delay)
|
|
{
|
|
|
|
|
|
VL53LX_Error status = VL53LX_ERROR_NONE;
|
|
|
|
LOG_FUNCTION_START("");
|
|
|
|
status =
|
|
VL53LX_set_calib_config(
|
|
Dev,
|
|
0x01,
|
|
calib_delay,
|
|
0x04,
|
|
0x08,
|
|
0x14,
|
|
VL53LX_RANGING_CORE__SPAD_READOUT__CALIB_PULSES);
|
|
|
|
LOG_FUNCTION_END(status);
|
|
|
|
return status;
|
|
}
|
|
|
|
|
|
VL53LX_Error VL53LX_disable_calib_pulse_delay(
|
|
VL53LX_DEV Dev)
|
|
{
|
|
|
|
|
|
VL53LX_Error status = VL53LX_ERROR_NONE;
|
|
|
|
LOG_FUNCTION_START("");
|
|
|
|
status =
|
|
VL53LX_set_calib_config(
|
|
Dev,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
VL53LX_RANGING_CORE__SPAD_READOUT__STANDARD);
|
|
|
|
LOG_FUNCTION_END(status);
|
|
|
|
return status;
|
|
}
|
|
|
|
|