Rename library
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging
Diff: modules/vl53lx_hist_char.c
- Revision:
- 5:89031b2f5316
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/modules/vl53lx_hist_char.c Wed Jul 14 12:45:49 2021 +0100 @@ -0,0 +1,162 @@ + +// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause +/****************************************************************************** + * Copyright (c) 2020, STMicroelectronics - All Rights Reserved + + This file is part of VL53LX and is dual licensed, + either GPL-2.0+ + or 'BSD 3-clause "New" or "Revised" License' , at your option. + ****************************************************************************** + */ + + + + + +#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; +} + +