revised folder structure

This commit is contained in:
Yunhorn 2024-12-18 14:05:49 +08:00
parent f3e62e3bed
commit a66071365a
13 changed files with 222 additions and 911 deletions

View File

@ -502,6 +502,11 @@
<type>1</type>
<locationURI>copy_PARENT/vl53lx_uld/VL53L1X_calibration.c</locationURI>
</link>
<link>
<name>Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.c</name>
<type>1</type>
<locationURI>copy_PARENT/vl53lx_uld/X-NUCLEO-53L1A1.c</locationURI>
</link>
<link>
<name>Drivers/BSP/vl53l1x_uld/vl53l1_platform.c</name>
<type>1</type>
@ -532,11 +537,6 @@
<type>1</type>
<locationURI>copy_PARENT/LoRaWAN/Target/radio_board_if.c</locationURI>
</link>
<link>
<name>Application/User/TOF/App/X-NUCLEO-53L1A1.c</name>
<type>1</type>
<locationURI>copy_PARENT/vl53lx_uld/X-NUCLEO-53L1A1.c</locationURI>
</link>
<link>
<name>Application/User/TOF/App/app_tof_peoplecount.c</name>
<type>1</type>

View File

@ -5,24 +5,19 @@
# Add inputs and outputs from these tool invocations to the build variables
C_SRCS += \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/X-NUCLEO-53L1A1.c \
../Application/User/TOF/App/app_tof.c \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/TOF/App/app_tof_peoplecount.c
OBJS += \
./Application/User/TOF/App/X-NUCLEO-53L1A1.o \
./Application/User/TOF/App/app_tof.o \
./Application/User/TOF/App/app_tof_peoplecount.o
C_DEPS += \
./Application/User/TOF/App/X-NUCLEO-53L1A1.d \
./Application/User/TOF/App/app_tof.d \
./Application/User/TOF/App/app_tof_peoplecount.d
# Each subdirectory must supply rules for building sources it contributes
Application/User/TOF/App/X-NUCLEO-53L1A1.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/X-NUCLEO-53L1A1.c Application/User/TOF/App/subdir.mk
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
Application/User/TOF/App/%.o Application/User/TOF/App/%.su Application/User/TOF/App/%.cyclo: ../Application/User/TOF/App/%.c Application/User/TOF/App/subdir.mk
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
Application/User/TOF/App/app_tof_peoplecount.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/TOF/App/app_tof_peoplecount.c Application/User/TOF/App/subdir.mk
@ -31,7 +26,7 @@ Application/User/TOF/App/app_tof_peoplecount.o: D:/ONEDRIVE/STM32WLV13/Projects/
clean: clean-Application-2f-User-2f-TOF-2f-App
clean-Application-2f-User-2f-TOF-2f-App:
-$(RM) ./Application/User/TOF/App/X-NUCLEO-53L1A1.cyclo ./Application/User/TOF/App/X-NUCLEO-53L1A1.d ./Application/User/TOF/App/X-NUCLEO-53L1A1.o ./Application/User/TOF/App/X-NUCLEO-53L1A1.su ./Application/User/TOF/App/app_tof.cyclo ./Application/User/TOF/App/app_tof.d ./Application/User/TOF/App/app_tof.o ./Application/User/TOF/App/app_tof.su ./Application/User/TOF/App/app_tof_peoplecount.cyclo ./Application/User/TOF/App/app_tof_peoplecount.d ./Application/User/TOF/App/app_tof_peoplecount.o ./Application/User/TOF/App/app_tof_peoplecount.su
-$(RM) ./Application/User/TOF/App/app_tof.cyclo ./Application/User/TOF/App/app_tof.d ./Application/User/TOF/App/app_tof.o ./Application/User/TOF/App/app_tof.su ./Application/User/TOF/App/app_tof_peoplecount.cyclo ./Application/User/TOF/App/app_tof_peoplecount.d ./Application/User/TOF/App/app_tof_peoplecount.o ./Application/User/TOF/App/app_tof_peoplecount.su
.PHONY: clean-Application-2f-User-2f-TOF-2f-App

View File

@ -7,16 +7,19 @@
C_SRCS += \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/VL53L1X_api.c \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/VL53L1X_calibration.c \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/X-NUCLEO-53L1A1.c \
D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/vl53l1_platform.c
OBJS += \
./Drivers/BSP/vl53l1x_uld/VL53L1X_api.o \
./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.o \
./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.o \
./Drivers/BSP/vl53l1x_uld/vl53l1_platform.o
C_DEPS += \
./Drivers/BSP/vl53l1x_uld/VL53L1X_api.d \
./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.d \
./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.d \
./Drivers/BSP/vl53l1x_uld/vl53l1_platform.d
@ -25,13 +28,15 @@ Drivers/BSP/vl53l1x_uld/VL53L1X_api.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/VL53L1X_calibration.c Drivers/BSP/vl53l1x_uld/subdir.mk
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/X-NUCLEO-53L1A1.c Drivers/BSP/vl53l1x_uld/subdir.mk
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
Drivers/BSP/vl53l1x_uld/vl53l1_platform.o: D:/ONEDRIVE/STM32WLV13/Projects/NUCLEO-WL55JC/Applications/LoRaWAN/STS_P2_VL53L1/vl53lx_uld/vl53l1_platform.c Drivers/BSP/vl53l1x_uld/subdir.mk
arm-none-eabi-gcc "$<" -mcpu=cortex-m4 -std=gnu11 -DCORE_CM4 -DYUNHORN_STS_RANDOM -DUSE_HAL_DRIVER -DSTM32WLE5xx -c -I../../Core/Inc -I../../LoRaWAN/App -I../../LoRaWAN/Target -I../../../../../../../Drivers/CMSIS/Include -I../../vl53lx_uld -I../../TOF/Target -I../../TOF/App -I../../../../../../../Drivers/CMSIS/Core/Include -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc -I../../../../../../../Drivers/STM32WLxx_HAL_Driver/Inc/Legacy -I../../../../../../../Utilities/trace/adv_trace -I../../../../../../../Utilities/misc -I../../../../../../../Utilities/sequencer -I../../../../../../../Utilities/timer -I../../../../../../../Utilities/lpm/tiny_lpm -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler/Packages -I../../../../../../../Drivers/CMSIS/Device/ST/STM32WLxx/Include -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Crypto -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac/Region -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Mac -I../../../../../../../Middlewares/Third_Party/LoRaWAN/LmHandler -I../../../../../../../Middlewares/Third_Party/LoRaWAN/Utilities -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy -I../../../../../../../Middlewares/Third_Party/SubGHz_Phy/stm32_radio_driver -I../../../../../../../Drivers/BSP/STM32WLxx_Nucleo -Os -ffunction-sections -fdata-sections -Wall -fstack-usage -fcyclomatic-complexity -MMD -MP -MF"$(@:%.o=%.d)" -MT"$@" --specs=nano.specs -mfloat-abi=soft -mthumb -o "$@"
clean: clean-Drivers-2f-BSP-2f-vl53l1x_uld
clean-Drivers-2f-BSP-2f-vl53l1x_uld:
-$(RM) ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.cyclo ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.d ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.o ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.su ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.cyclo ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.d ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.o ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.su ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.cyclo ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.d ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.o ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.su
-$(RM) ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.cyclo ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.d ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.o ./Drivers/BSP/vl53l1x_uld/VL53L1X_api.su ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.cyclo ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.d ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.o ./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.su ./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.cyclo ./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.d ./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.o ./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.su ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.cyclo ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.d ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.o ./Drivers/BSP/vl53l1x_uld/vl53l1_platform.su
.PHONY: clean-Drivers-2f-BSP-2f-vl53l1x_uld

View File

@ -24,7 +24,6 @@
"./Application/User/LoRaWAN/App/lora_info.o"
"./Application/User/LoRaWAN/Target/radio_board_if.o"
"./Application/User/Startup/startup_stm32wle5ccux.o"
"./Application/User/TOF/App/X-NUCLEO-53L1A1.o"
"./Application/User/TOF/App/app_tof.o"
"./Application/User/TOF/App/app_tof_peoplecount.o"
"./Application/User/TOF/Target/app_tof_pin_conf.o"
@ -32,6 +31,7 @@
"./Drivers/BSP/STM32WLxx_Nucleo/stm32wlxx_nucleo_radio.o"
"./Drivers/BSP/vl53l1x_uld/VL53L1X_api.o"
"./Drivers/BSP/vl53l1x_uld/VL53L1X_calibration.o"
"./Drivers/BSP/vl53l1x_uld/X-NUCLEO-53L1A1.o"
"./Drivers/BSP/vl53l1x_uld/vl53l1_platform.o"
"./Drivers/CMSIS/system_stm32wlxx.o"
"./Drivers/STM32WLxx_HAL_Driver/stm32wlxx_hal.o"

View File

@ -1,223 +0,0 @@
/*
Copyright (c) 2021, STMicroelectronics - All Rights Reserved
This file : part of VL53L1X ULP and : dual licensed,
either 'STMicroelectronics
Proprietary license'
or 'BSD 3-clause "New" or "Revised" License' , at your option.
*******************************************************************************
'STMicroelectronics Proprietary license'
*******************************************************************************
License terms: STMicroelectronics Proprietary in accordance with licensing
terms at www.st.com/sla0081
STMicroelectronics confidential
Reproduction and Communication of this document : strictly prohibited unless
specifically authorized in writing by STMicroelectronics.
*******************************************************************************
Alternatively, VL53L1X ULP may be distributed under the terms of
'BSD 3-clause "New" or "Revised" License', in which case the following
provisions apply instead of the ones mentioned above :
*******************************************************************************
License terms: BSD 3-clause "New" or "Revised" License.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
/****************************************/
/* VL53L1X Low Power basic ranging */
/****************************************/
/*
* This example shows how to use the VL53L1X Ultra Low Power driver in a very
* simple example. It initializes the VL53L1X driver, configure the sensor and
* starts a ranging to capture 200 frames.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "sys_app.h"
#include "VL53L1X_ULP_api.h"
extern uint8_t ToF_EventDetected;
/*
uint8_t IsInterruptDetected(uint16_t dev)
{
// To be filled with customer HW. This function should
// return 1 when an interrupt is raised by the ToF on GPIO1 pin (pin7)
if (ToF_EventDetected )
{
APP_LOG(TS_OFF, VLEVEL_L,"############### TOF EVENT DETECTED \r\n");
ToF_EventDetected =0;
return 1;
} else {
return 0;
}
}
*/
int Example_1_basic_ranging(void)
{ /*
int sts_vl53lx_ranging(uint8_t vl_model, uint8_t range_mode,
uint16_t distance_threshold_mm, uint16_t inter_measurement_ms, uint16_t macro_timing,
uint16_t roi_width, uint16_t sigma_mm, uint16_t signal_kcps, uint16_t i_ambient_kcps);
*/
/*********************************/
/* VL53L1X ranging variables */
/*********************************/
uint8_t status, loop;
uint8_t dev;
uint16_t sensor_id;
uint8_t measurement_status;
uint16_t estimated_distance_mm, signal_kcps, sigma_mm, ambient_kcps;
/*********************************/
/* Customer platform */
/*********************************/
/* Default VL53L1X Ultra Low Power I2C address */
dev = 0x52;
/* (Optional) Change I2C address */
// status = VL53L1X_ULP_SetI2CAddress(dev, 0x52); //0x20
// dev = 0x20;
/*********************************/
/* Power on sensor and init */
/*********************************/
/* (Optional) Check if there is a VL53L1X sensor connected */
status = VL53L1X_ULP_GetSensorId(dev, &sensor_id);
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X address =%X\r\n",sensor_id );
if(status || (sensor_id != 0xEACC))
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X not detected at requested address\n");
return status;
}
/* (Mandatory) Init VL53L1X sensor */
status = VL53L1X_ULP_SensorInit(dev);
if(status)
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X ultra low power Loading failed\n");
//HAL_Delay(100);
return status;
}
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X ultra low power ready ! \r\n");
/*********************************/
/* Sensor configuration */
/*********************************/
/* (Optional) Program sensor to raise an interrupt ONLY below 300mm */
status = VL53L1X_ULP_SetInterruptConfiguration(dev, 800, 1); //i_distance_threshold_mm
/* (Optional) Program a 10Hz ranging frequency */
status = VL53L1X_ULP_SetInterMeasurementInMs(dev, 100); // range_interval_ms
{
/* Increase the macro timing. This is equivalent as increasing the integration time */
status = VL53L1X_ULP_SetMacroTiming(dev, 100); // micro_timing_ms
/* Enable all the SPADS */
status = VL53L1X_ULP_SetROI(dev, 16); // SPADS { 1 -- 16 }
// STS---001 for ultra low power
/* Reduce the macro timing to minimum. This is equivalent as reducing the integration time */
//status = VL53L1X_ULP_SetMacroTiming(dev, 1);
/* Reduce at maximum the SPADS */
//status = VL53L1X_ULP_SetROI(dev, 4);
// STS ---002 for short distance
/* Example for robust and short distance measurements. Max distance reduced
* but very low number of false-positives */
status |= VL53L1X_ULP_SetSigmaThreshold(dev, 30);
status |= VL53L1X_ULP_SetSignalThreshold(dev, 2000);
// STS --- 003 for long range
/* Relax some limits. Be careful, it can create false-positives !*/
//status |= VL53L1X_ULP_SetSigmaThreshold(dev, 60);
//status |= VL53L1X_ULP_SetSignalThreshold(dev, 1200);
}
/*********************************/
/* Ranging loop */
/*********************************/
status = VL53L1X_ULP_StartRanging(dev);
if(status)
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X_ULP_StartRanging failed with status %u\n", status);
return status;
}
APP_LOG(TS_OFF,VLEVEL_L,"Ranging started. Put your hand close to the sensor to generate an interrupt...\n");
loop = 0;
while(loop < 20)
{
/* Use this external function to detect when a hardware interrupt is
* generated on PIN 7 (GPIO1). It means that a new measurement is ready.
*/
//if(IsInterruptDetected(dev))
{
/* (Mandatory) Clear HW interrupt to restart measurements */
VL53L1X_ULP_ClearInterrupt(dev);
/* Dump debug data */
status = VL53L1X_ULP_DumpDebugData(dev, &measurement_status,
&estimated_distance_mm, &sigma_mm, &signal_kcps, &ambient_kcps);
APP_LOG(TS_OFF,VLEVEL_L,"Target detected! Interrupt raised by sensor, Distance =%d mm \r\n", estimated_distance_mm );
loop++;
}
}
status = VL53L1X_ULP_StopRanging(dev);
APP_LOG(TS_OFF,VLEVEL_L,"End of VL53L1X ultra low power demo\n");
return status;
}

View File

@ -1,217 +0,0 @@
/*
Copyright (c) 2021, STMicroelectronics - All Rights Reserved
This file : part of VL53L1X ULP and : dual licensed,
either 'STMicroelectronics
Proprietary license'
or 'BSD 3-clause "New" or "Revised" License' , at your option.
*******************************************************************************
'STMicroelectronics Proprietary license'
*******************************************************************************
License terms: STMicroelectronics Proprietary in accordance with licensing
terms at www.st.com/sla0081
STMicroelectronics confidential
Reproduction and Communication of this document : strictly prohibited unless
specifically authorized in writing by STMicroelectronics.
*******************************************************************************
Alternatively, VL53L1X ULP may be distributed under the terms of
'BSD 3-clause "New" or "Revised" License', in which case the following
provisions apply instead of the ones mentioned above :
*******************************************************************************
License terms: BSD 3-clause "New" or "Revised" License.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
/****************************************/
/* VL53L1X Low Power tune sensor */
/****************************************/
/*
* This example shows how to tune the VL53L1X Low power for a specific
* application, playing with sigma and signal threshold.
* It initializes the VL53L1X driver, configure the sensor and
* starts a ranging to capture 200 frames.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "../../STM32CubeIDE/Drivers/BSP/vl53l1x_uld/VL53L1X_ULP_api.h"
uint8_t IsInterruptDetected(uint16_t dev)
{
// To be filled with customer HW. This function should
// return 1 when an interrupt is raised by the ToF on GPIO1 pin (pin7)
}
uint8_t Example_2_tune_sensor_with_debug_data(void)
{
/*********************************/
/* VL53L1X ranging variables */
/*********************************/
uint8_t status, loop;
uint8_t dev;
uint16_t sensor_id;
uint8_t measurement_status;
uint16_t estimated_distance_mm, signal_kcps, sigma_mm, ambient_kcps;
/*********************************/
/* Customer platform */
/*********************************/
/* Default VL53L1X Ultra Low Power I2C address */
dev = 0x52;
/* (Optional) Change I2C address */
// status = VL53L1X_ULP_SetI2CAddress(dev, 0x20);
// dev = 0x20;
/*********************************/
/* Power on sensor and init */
/*********************************/
/* (Optional) Check if there is a VL53L1X sensor connected */
status = VL53L1X_ULP_GetSensorId(dev, &sensor_id);
if(status || (sensor_id != 0xEACC))
{
printf("VL53L1X not detected at requested address\n");
return status;
}
/* (Mandatory) Init VL53L1X sensor */
status = VL53L1X_ULP_SensorInit(dev);
if(status)
{
printf("VL53L1X ultra low power Loading failed\n");
return status;
}
printf("VL53L1X ultra low power ready !\n");
/*********************************/
/* Sensor tuning */
/*********************************/
/* Here we will change some settings to tune the sensor valid measurements.
* The sensor can output 2 thresholds used to define a valid distance :
* - Sigma threshold. This is the estimated standard deviation of the
* measurement. A low value means that the accuracy is good. Reducing
* this threshold reduces the max ranging distance, but it reduces the
* number of false-positives.
*
* - Signal threshold. This is the quantity of photons measured by the
* sensor. A high value means that the accuracy is good. Increasing
* this threshold reduces the max ranging distance, but it reduces the
* number of false-positives.
*/
/* Example for robust and short distance measurements. Max distance reduced
* but very low number of false-positives */
status |= VL53L1X_ULP_SetSigmaThreshold(dev, 30);
status |= VL53L1X_ULP_SetSignalThreshold(dev, 2000);
/* Example for longer distance measurements. Max distance increased
* but false-positives may appear */
// status |= VL53L1X_ULP_SetSigmaThreshold(dev, 60);
// status |= VL53L1X_ULP_SetSignalThreshold(dev, 1200);
/*********************************/
/* Sensor configuration */
/*********************************/
/* (Optional) Program sensor to output interrupt when a new measurement is
* ready, even if the distance is not valid */
status = VL53L1X_ULP_SetInterruptConfiguration(dev, 0, 0);
/* (Optional) Program a 10Hz ranging frequency */
status = VL53L1X_ULP_SetInterMeasurementInMs(dev, 100);
/*********************************/
/* Ranging loop */
/*********************************/
status = VL53L1X_ULP_StartRanging(dev);
if(status)
{
printf("VL53L1X_ULP_StartRanging failed with status %u\n", status);
return status;
}
printf("Ranging started. Put your hand close to the sensor to generate an interrupt...\n");
loop = 0;
while(loop < 200)
{
/* Use this external function to detect when a hardware interrupt is
* generated on PIN 7 (GPIO1). It means that a new measurement is ready.
*/
if(IsInterruptDetected(dev))
{
/* (Mandatory) Clear HW interrupt to restart measurements */
VL53L1X_ULP_ClearInterrupt(dev);
/* Dump debug data */
status = VL53L1X_ULP_DumpDebugData(dev, &measurement_status,
&estimated_distance_mm, &sigma_mm, &signal_kcps, &ambient_kcps);
/* Print debug data. Measurement status 0 means that a valid target
* has been detected */
printf("DEBUG DATA : Status = %2u, Estimated distance = %4u mm, Signal = %6u kcps, Sigma = %3u mm\n",
measurement_status,
estimated_distance_mm,
signal_kcps,
sigma_mm);
loop++;
}
}
status = VL53L1X_ULP_StopRanging(dev);
printf("End of VL53L1X ultra low power demo\n");
return status;
}

View File

@ -1,185 +0,0 @@
/*
Copyright (c) 2021, STMicroelectronics - All Rights Reserved
This file : part of VL53L1X ULP and : dual licensed,
either 'STMicroelectronics
Proprietary license'
or 'BSD 3-clause "New" or "Revised" License' , at your option.
*******************************************************************************
'STMicroelectronics Proprietary license'
*******************************************************************************
License terms: STMicroelectronics Proprietary in accordance with licensing
terms at www.st.com/sla0081
STMicroelectronics confidential
Reproduction and Communication of this document : strictly prohibited unless
specifically authorized in writing by STMicroelectronics.
*******************************************************************************
Alternatively, VL53L1X ULP may be distributed under the terms of
'BSD 3-clause "New" or "Revised" License', in which case the following
provisions apply instead of the ones mentioned above :
*******************************************************************************
License terms: BSD 3-clause "New" or "Revised" License.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
/****************************************/
/* VL53L1X Low Power basic ranging */
/****************************************/
/*
* This example shows how to use the VL53L1X Ultra Low Power driver for
* detecting a user at long distance (>60cm). Please note that the proposed
* configuration also increase the power consumption.
* The example initializes the VL53L1X driver, configure the sensor and
* starts a ranging to capture 200 frames.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "../../STM32CubeIDE/Drivers/BSP/vl53l1x_uld/VL53L1X_ULP_api.h"
uint8_t IsInterruptDetected(uint16_t dev)
{
// To be filled with customer HW. This function should
// return 1 when an interrupt is raised by the ToF on GPIO1 pin (pin7)
}
uint8_t Example_3_long_ranging(void)
{
/*********************************/
/* VL53L1X ranging variables */
/*********************************/
uint8_t status, loop;
uint8_t dev;
uint16_t sensor_id;
/*********************************/
/* Customer platform */
/*********************************/
/* Default VL53L1X Ultra Low Power I2C address */
dev = 0x52;
/* (Optional) Change I2C address */
// status = VL53L1X_ULP_SetI2CAddress(dev, 0x20);
// dev = 0x20;
/*********************************/
/* Power on sensor and init */
/*********************************/
/* (Optional) Check if there is a VL53L1X sensor connected */
status = VL53L1X_ULP_GetSensorId(dev, &sensor_id);
if(status || (sensor_id != 0xEACC))
{
printf("VL53L1X not detected at requested address\n");
return status;
}
/* (Mandatory) Init VL53L1X sensor */
status = VL53L1X_ULP_SensorInit(dev);
if(status)
{
printf("VL53L1X ultra low power Loading failed\n");
return status;
}
printf("VL53L1X ultra low power ready !\n");
/*********************************/
/* Sensor configuration */
/*********************************/
/* (Optional) Program sensor to raise an interrupt ONLY below 600mm */
status = VL53L1X_ULP_SetInterruptConfiguration(dev, 600, 1);
/* (Optional) Program a 10Hz ranging frequency */
status = VL53L1X_ULP_SetInterMeasurementInMs(dev, 100);
/* Increase the macro timing. This is equivalent as increasing the integration time */
status = VL53L1X_ULP_SetMacroTiming(dev, 100);
/* Enable all the SPADS */
status = VL53L1X_ULP_SetROI(dev, 16);
/* Relax some limits. Be careful, it can create false-positives !*/
status |= VL53L1X_ULP_SetSigmaThreshold(dev, 60);
status |= VL53L1X_ULP_SetSignalThreshold(dev, 1200);
/*********************************/
/* Ranging loop */
/*********************************/
status = VL53L1X_ULP_StartRanging(dev);
if(status)
{
printf("VL53L1X_ULP_StartRanging failed with status %u\n", status);
return status;
}
printf("Ranging started. Put your hand close to the sensor to generate an interrupt...\n");
loop = 0;
while(loop < 200)
{
/* Use this external function to detect when a hardware interrupt is
* generated on PIN 7 (GPIO1). It means that a new measurement is ready.
*/
if(IsInterruptDetected(dev))
{
/* (Mandatory) Clear HW interrupt to restart measurements */
VL53L1X_ULP_ClearInterrupt(dev);
printf("Target detected! Interrupt raised by sensor\n");
loop++;
}
}
status = VL53L1X_ULP_StopRanging(dev);
printf("End of VL53L1X ultra low power demo\n");
return status;
}

View File

@ -1,180 +0,0 @@
/*
Copyright (c) 2021, STMicroelectronics - All Rights Reserved
This file : part of VL53L1X ULP and : dual licensed,
either 'STMicroelectronics
Proprietary license'
or 'BSD 3-clause "New" or "Revised" License' , at your option.
*******************************************************************************
'STMicroelectronics Proprietary license'
*******************************************************************************
License terms: STMicroelectronics Proprietary in accordance with licensing
terms at www.st.com/sla0081
STMicroelectronics confidential
Reproduction and Communication of this document : strictly prohibited unless
specifically authorized in writing by STMicroelectronics.
*******************************************************************************
Alternatively, VL53L1X ULP may be distributed under the terms of
'BSD 3-clause "New" or "Revised" License', in which case the following
provisions apply instead of the ones mentioned above :
*******************************************************************************
License terms: BSD 3-clause "New" or "Revised" License.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************
*/
/****************************************/
/* VL53L1X Low Power basic ranging */
/****************************************/
/*
* This example shows how to use the VL53L1X Ultra Low Power driver with the
* lowest possible power consumption.
* The example initializes the VL53L1X driver, configure the sensor and
* starts a ranging to capture 200 frames.
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "../../STM32CubeIDE/Drivers/BSP/vl53l1x_uld/VL53L1X_ULP_api.h"
uint8_t IsInterruptDetected(uint16_t dev)
{
// To be filled with customer HW. This function should
// return 1 when an interrupt is raised by the ToF on GPIO1 pin (pin7)
}
uint8_t Example_4_ultra_low_power(void)
{
/*********************************/
/* VL53L1X ranging variables */
/*********************************/
uint8_t status, loop;
uint8_t dev;
uint16_t sensor_id;
/*********************************/
/* Customer platform */
/*********************************/
/* Default VL53L1X Ultra Low Power I2C address */
dev = 0x52;
/* (Optional) Change I2C address */
// status = VL53L1X_ULP_SetI2CAddress(dev, 0x20);
// dev = 0x20;
/*********************************/
/* Power on sensor and init */
/*********************************/
/* (Optional) Check if there is a VL53L1X sensor connected */
status = VL53L1X_ULP_GetSensorId(dev, &sensor_id);
if(status || (sensor_id != 0xEACC))
{
printf("VL53L1X not detected at requested address\n");
return status;
}
/* (Mandatory) Init VL53L1X sensor */
status = VL53L1X_ULP_SensorInit(dev);
if(status)
{
printf("VL53L1X ultra low power Loading failed\n");
return status;
}
printf("VL53L1X ultra low power ready !\n");
/*********************************/
/* Sensor configuration */
/*********************************/
/* (Optional) Program sensor to raise an interrupt ONLY below 300mm */
status = VL53L1X_ULP_SetInterruptConfiguration(dev, 300, 1);
/* (Optional) Program a 10Hz ranging frequency */
status = VL53L1X_ULP_SetInterMeasurementInMs(dev, 100);
/* Reduce the macro timing to minimum. This is equivalent as reducing the integration time */
status = VL53L1X_ULP_SetMacroTiming(dev, 1);
/* Reduce at maximum the SPADS */
status = VL53L1X_ULP_SetROI(dev, 4);
/*********************************/
/* Ranging loop */
/*********************************/
status = VL53L1X_ULP_StartRanging(dev);
if(status)
{
printf("VL53L1X_ULP_StartRanging failed with status %u\n", status);
return status;
}
printf("Ranging started. Put your hand close to the sensor to generate an interrupt...\n");
loop = 0;
while(loop < 200)
{
/* Use this external function to detect when a hardware interrupt is
* generated on PIN 7 (GPIO1). It means that a new measurement is ready.
*/
if(IsInterruptDetected(dev))
{
/* (Mandatory) Clear HW interrupt to restart measurements */
VL53L1X_ULP_ClearInterrupt(dev);
printf("Target detected! Interrupt raised by sensor\n");
loop++;
}
}
status = VL53L1X_ULP_StopRanging(dev);
printf("End of VL53L1X ultra low power demo\n");
return status;
}

View File

@ -25,9 +25,11 @@ extern "C" {
/* Includes ------------------------------------------------------------------*/
#include "app_tof.h"
#include "main.h"
#include "sys_app.h"
#include <stdio.h>
#include "53l1a2_ranging_sensor.h"
#include "VL53L1X_ULP_api.h"
//#include "53l1a2_ranging_sensor.h"
#include "stm32wlxx_nucleo.h"
/* Private typedef -----------------------------------------------------------*/
@ -37,17 +39,17 @@ extern "C" {
#define POLLING_PERIOD (250U) /* refresh rate for polling mode (milliseconds, shall be consistent with TimingBudget value) */
/* Private variables ---------------------------------------------------------*/
static RANGING_SENSOR_Capabilities_t Cap;
static RANGING_SENSOR_ProfileConfig_t Profile;
static int32_t status = 0;
static volatile uint8_t PushButtonDetected = 0;
//static RANGING_SENSOR_Capabilities_t Cap;
//static RANGING_SENSOR_ProfileConfig_t Profile;
//static int32_t status = 0;
volatile uint8_t ToF_EventDetected = 0;
/* Private function prototypes -----------------------------------------------*/
static void MX_53L1A2_SimpleRanging_Init(void);
static void MX_53L1A2_SimpleRanging_Process(void);
static void print_result(RANGING_SENSOR_Result_t *Result);
static int32_t decimal_part(float_t x);
int sts_vl53lx_ranging(uint8_t vl_model, uint8_t range_mode, uint16_t distance_threshold_mm, uint16_t inter_measurement_ms, uint16_t macro_timing,uint16_t roi_width, uint16_t sigma_mm, uint16_t signal_kcps);
uint8_t IsInterruptDetected(uint16_t dev);
void MX_TOF_Init(void)
{
@ -60,9 +62,10 @@ void MX_TOF_Init(void)
/* USER CODE END TOF_Init_PreTreatment */
/* Initialize the peripherals and the TOF components */
APP_LOG(TS_OFF,VLEVEL_L,"\r\n###################### MX TOF Init... \r\n");
MX_53L1A2_SimpleRanging_Init();
//MX_53L1A2_SimpleRanging_Init();
STS_TOF_VL53LX_PeopleCounting_Process();
/* USER CODE BEGIN TOF_Init_PostTreatment */
/* USER CODE END TOF_Init_PostTreatment */
@ -77,112 +80,218 @@ void MX_TOF_Process(void)
/* USER CODE END TOF_Process_PreTreatment */
MX_53L1A2_SimpleRanging_Process();
//APP_LOG(TS_OFF,VLEVEL_L,"\r\n###################### MX TOF Process... \r\n");
//STS_TOF_VL53LX_Range_Process();
//STS_TOF_VL53LX_PeopleCounting_Process();
sts_tof_vl53lx_peoplecount_subprocess();
/* USER CODE BEGIN TOF_Process_PostTreatment */
/* USER CODE END TOF_Process_PostTreatment */
}
typedef enum {
STS_TOF_SHORT_RANGE=0,
STS_TOF_LONG_RANGE,
STS_TOF_LOW_POWER_RANGE,
STS_TOF_PP_RANGE
} range_mode_t;
typedef enum {
STS_TOF_VL53L0X=0,
STS_TOF_VL53L1X,
STS_TOF_VL53L2X,
STS_TOF_VL53L3X,
STS_TOF_VL53L4X,
STS_TOF_VL53L5X,
STS_TOF_VL53L6X,
STS_TOF_VL53L7X
} vl53lx_model;
static void MX_53L1A2_SimpleRanging_Init(void)
uint8_t IsInterruptDetected(uint16_t dev)
{
/* Initialize Virtual COM Port */
BSP_COM_Init(COM1);
/* Initialize button */
BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_EXTI);
printf("53L1A2 Simple Ranging demo application\n");
status = VL53L1A2_RANGING_SENSOR_Init(VL53L1A2_DEV_CENTER);
if (status != BSP_ERROR_NONE)
{
printf("VL53L1A2_RANGING_SENSOR_Init failed\n");
while(1);
}
// To be filled with customer HW. This function should
// return 1 when an interrupt is raised by the ToF on GPIO1 pin (pin7)
if (ToF_EventDetected )
{
APP_LOG(TS_OFF, VLEVEL_L,"############### TOF EVENT DETECTED \r\n");
ToF_EventDetected =0;
return 1;
} else {
return 0;
}
}
static void MX_53L1A2_SimpleRanging_Process(void)
void STS_TOF_VL53LX_Range_Process(void)
{
uint32_t Id;
uint8_t vl53lx_model = STS_TOF_VL53L1X;
uint8_t range_mode = STS_TOF_SHORT_RANGE;
RANGING_SENSOR_Result_t Result;
uint16_t i_distance_threshold_mm = 800;
uint16_t i_inter_measurement_ms, i_macro_timing;
uint16_t i_roi_width=16, i_sigma_mm=30, i_signal_kcps=2000;
while (1)
{
VL53L1A2_RANGING_SENSOR_ReadID(VL53L1A2_DEV_CENTER, &Id);
VL53L1A2_RANGING_SENSOR_GetCapabilities(VL53L1A2_DEV_CENTER, &Cap);
Profile.RangingProfile = RS_MULTI_TARGET_MEDIUM_RANGE;
Profile.TimingBudget = TIMING_BUDGET; /* 16 ms < TimingBudget < 500 ms */
Profile.Frequency = 0; /* Induces intermeasurement period, set to ZERO for normal ranging */
Profile.EnableAmbient = 1; /* Enable: 1, Disable: 0 */
Profile.EnableSignal = 1; /* Enable: 1, Disable: 0 */
switch (range_mode)
{
case STS_TOF_SHORT_RANGE:
// STS ---002 for short distance
/* Example for robust and short distance measurements. Max distance reduced
* but very low number of false-positives */
//status |= VL53L1X_ULP_SetSigmaThreshold(dev, 30);
//status |= VL53L1X_ULP_SetSignalThreshold(dev, 2000);
i_sigma_mm = 30; //increase this for longer distance, reduce for shorter distance
i_signal_kcps = 2000; // 1000- 6000 kcps
i_distance_threshold_mm = 900;
i_inter_measurement_ms = 100; // 100 - 1000 ms
i_macro_timing = 100;
//i_roi_width = 16;
/* set the profile if different from default one */
VL53L1A2_RANGING_SENSOR_ConfigProfile(VL53L1A2_DEV_CENTER, &Profile);
break;
status = VL53L1A2_RANGING_SENSOR_Start(VL53L1A2_DEV_CENTER, RS_MODE_BLOCKING_CONTINUOUS);
case STS_TOF_LONG_RANGE:
// STS --- 003 for long range
/* Relax some limits. Be careful, it can create false-positives !*/
//status |= VL53L1X_ULP_SetSigmaThreshold(dev, 60);
//status |= VL53L1X_ULP_SetSignalThreshold(dev, 1200);
i_sigma_mm = 85; // increase this for longer distance, reduce for short distance
i_signal_kcps = 1000; // 1000- 6000 kcps
i_distance_threshold_mm = 4000; //4000;
i_inter_measurement_ms = 200; // 100 - 1000 ms
i_macro_timing = 30; // 1 - 100 ms
i_roi_width = 8;
if (status != BSP_ERROR_NONE)
{
printf("VL53L1A2_RANGING_SENSOR_Start failed\n");
while(1);
}
while (1)
{
/* polling mode */
status = VL53L1A2_RANGING_SENSOR_GetDistance(VL53L1A2_DEV_CENTER, &Result);
break;
if (status == BSP_ERROR_NONE)
{
print_result(&Result);
}
case STS_TOF_LOW_POWER_RANGE:
// STS---001 for ultra low power
/* Reduce the macro timing to minimum. This is equivalent as reducing the integration time */
//status = VL53L1X_ULP_SetMacroTiming(dev, 1);
i_distance_threshold_mm = 4000;
i_inter_measurement_ms = 100; // 100 - 1000 ms
i_macro_timing = 1;
/* Reduce at maximum the SPADS */
//status = VL53L1X_ULP_SetROI(dev, 4);
i_roi_width = 4;
HAL_Delay(POLLING_PERIOD);
}
}
break;
default:
break;
}
static void print_result(RANGING_SENSOR_Result_t *Result)
{
uint8_t i, j;
sts_vl53lx_ranging(vl53lx_model, range_mode, i_distance_threshold_mm, i_inter_measurement_ms,i_macro_timing, i_roi_width, i_sigma_mm, i_signal_kcps);
for (i = 0; i < RANGING_SENSOR_MAX_NB_ZONES; i++)
{
printf("\nTargets = %lu", (unsigned long)Result->ZoneResult[i].NumberOfTargets);
for (j = 0; j < Result->ZoneResult[i].NumberOfTargets; j++)
{
printf("\n |---> ");
printf("Status = %ld, Distance = %5ld mm ",
(long)Result->ZoneResult[i].Status[j],
(long)Result->ZoneResult[i].Distance[j]);
if (Profile.EnableAmbient)
printf(", Ambient = %ld.%02ld kcps/spad",
(long)Result->ZoneResult[i].Ambient[j],
(long)decimal_part(Result->ZoneResult[i].Ambient[j]));
if (Profile.EnableSignal)
printf(", Signal = %ld.%02ld kcps/spad",
(long)Result->ZoneResult[i].Signal[j],
(long)decimal_part(Result->ZoneResult[i].Signal[j]));
}
}
printf ("\n");
}
static int32_t decimal_part(float_t x)
{
int32_t int_part = (int32_t) x;
return (int32_t)((x - int_part) * 100);
range_mode ++;
range_mode %= 3 ;
}
}
void BSP_PB_Callback(Button_TypeDef Button)
{
PushButtonDetected = 1;
//PushButtonDetected = 1;
}
int sts_vl53lx_ranging(uint8_t vl_model, uint8_t range_mode, uint16_t distance_threshold_mm, uint16_t inter_measurement_ms, uint16_t macro_timing,
uint16_t roi_width, uint16_t sigma_mm, uint16_t signal_kcps)
{
/*********************************/
/* VL53L1X ranging variables */
/*********************************/
uint8_t status, loop;
uint8_t dev;
uint16_t sensor_id;
uint8_t measurement_status;
uint16_t estimated_distance_mm, r_signal_kcps, r_sigma_mm, r_ambient_kcps;
/*********************************/
/* Customer platform */
/*********************************/
/* Default VL53L1X Ultra Low Power I2C address */
dev = 0x52;
/* (Optional) Change I2C address */
// status = VL53L1X_ULP_SetI2CAddress(dev, 0x52);
// dev = 0x20;
/*********************************/
/* Power on sensor and init */
/*********************************/
APP_LOG(TS_OFF,VLEVEL_L,"Range Mode =%d \r\n",range_mode);
/* (Optional) Check if there is a VL53L1X sensor connected */
status = VL53L1X_ULP_GetSensorId(dev, &sensor_id);
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X address =%X\r\n",sensor_id );
if(status || (sensor_id != 0xEACC))
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X not detected at requested address\n");
return status;
}
/* (Mandatory) Init VL53L1X sensor */
status = VL53L1X_ULP_SensorInit(dev);
if(status)
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X ultra low power Loading failed\n");
//HAL_Delay(100);
return status;
}
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X ultra low power ready ! \r\n");
/*********************************/
/* Sensor configuration */
/*********************************/
/* (Optional) Program sensor to raise an interrupt ONLY below 300mm */
status = VL53L1X_ULP_SetInterruptConfiguration(dev, distance_threshold_mm, 1); //i_distance_threshold_mm
/* (Optional) Program a 10Hz ranging frequency */
status = VL53L1X_ULP_SetInterMeasurementInMs(dev, inter_measurement_ms); // range_interval_ms
/* Increase the macro timing. This is equivalent as increasing the integration time */
status = VL53L1X_ULP_SetMacroTiming(dev, macro_timing); // micro_timing_ms
/* Enable all the SPADS */
status = VL53L1X_ULP_SetROI(dev, roi_width); // SPADS { 1 -- 16 }
if(range_mode != STS_TOF_LOW_POWER_RANGE)
{
/* Example for robust and short distance measurements. Max distance reduced
* but very low number of false-positives */
status |= VL53L1X_ULP_SetSigmaThreshold(dev, sigma_mm);
status |= VL53L1X_ULP_SetSignalThreshold(dev, signal_kcps);
}
/*********************************/
/* Ranging loop */
/*********************************/
status = VL53L1X_ULP_StartRanging(dev);
if(status)
{
APP_LOG(TS_OFF,VLEVEL_L,"VL53L1X_ULP_StartRanging failed with status %u\n", status);
return status;
}
APP_LOG(TS_OFF,VLEVEL_L,"Ranging started. Put your hand close to the sensor to generate an interrupt...\n");
loop = 0;
while(loop < 20)
{
/* Use this external function to detect when a hardware interrupt is generated on PIN 7 (GPIO1). It means that a new measurement is ready.
*/
if(IsInterruptDetected(dev))
{
/* (Mandatory) Clear HW interrupt to restart measurements */
VL53L1X_ULP_ClearInterrupt(dev);
/* Dump debug data */
status = VL53L1X_ULP_DumpDebugData(dev, &measurement_status,
&estimated_distance_mm, &r_sigma_mm, &r_signal_kcps, &r_ambient_kcps);
APP_LOG(TS_OFF,VLEVEL_L,"Target detected! Interrupt raised by sensor, Distance =%d mm \r\n", estimated_distance_mm );
loop++;
}
}
status = VL53L1X_ULP_StopRanging(dev);
APP_LOG(TS_OFF,VLEVEL_L,"End of VL53L1X ultra low power demo\n");
return status;
}
#ifdef __cplusplus
}
#endif

View File

@ -33,6 +33,11 @@
/* Exported functions --------------------------------------------------------*/
void MX_TOF_Init(void);
void MX_TOF_Process(void);
void STS_TOF_VL53LX_Range_Process(void);
void STS_TOF_VL53LX_PeopleCounting_Process(void);
int sts_tof_vl53lx_peoplecount_subprocess(void);
#ifdef __cplusplus
}

View File

@ -39,7 +39,7 @@ extern "C" {
* if you are only using the on-board sensor without break-out boards
* change its to (1U) in order to save space in RAM memory
*/
#define RANGING_SENSOR_INSTANCES_NBR (3U)
#define RANGING_SENSOR_INSTANCES_NBR (1U)
#define VL53L1A2_hi2c (hi2c2)

View File

@ -20,7 +20,7 @@
#include "app_tof_pin_conf.h"
extern volatile uint8_t ToF_EventDetected;
#if 0
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if (GPIO_Pin == TOF_INT_EXTI_PIN)
@ -28,3 +28,5 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
ToF_EventDetected = 1;
}
}
#endif

View File

@ -28,7 +28,7 @@ extern "C" {
#include "stm32wlxx_hal.h"
/* Exported symbols ----------------------------------------------------------*/
#define TOF_INT_EXTI_PIN (GPIO_PIN_3) // (GPIO_PIN_4)
#define TOF_INT_EXTI_PIN (GPIO_PIN_3) // WL55JC GPIO_PIN_10, F401xE ==>(GPIO_PIN_4)
#define TOF_INT_EXTI_PORT (GPIOB)
#ifdef __cplusplus