---vl6180dr
This commit is contained in:
72
App/app.cpp
72
App/app.cpp
@@ -96,9 +96,61 @@ void lightingOff (void)
|
|||||||
{
|
{
|
||||||
HAL_GPIO_WritePin(LIGHTING_EN_GPIO_Port, LIGHTING_EN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(LIGHTING_EN_GPIO_Port, LIGHTING_EN_Pin, GPIO_PIN_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint8_t proximityCompleteMessure = 0;
|
||||||
|
void proximityMessureCompleted (void)
|
||||||
|
{
|
||||||
|
proximityCompleteMessure = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
VL6180_RangeData_t VL6180_Range;
|
||||||
|
uint32_t waitAnsweredMs = 0;
|
||||||
|
#define MAX_WAIT_ANSWER_FROM_GM60 10000
|
||||||
|
#define DATA_TIMEOUT 500
|
||||||
|
|
||||||
|
uint32_t lightStartMs = 0;
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t uartTask (void) // return 0 if data received , otherwise return 1
|
||||||
|
{
|
||||||
|
if (waitAnsweredMs != 0)
|
||||||
|
{
|
||||||
|
if (HAL_GetTick() - waitAnsweredMs >= MAX_WAIT_ANSWER_FROM_GM60 )
|
||||||
|
{
|
||||||
|
HAL_GPIO_WritePin(READER_EN_GPIO_Port, READER_EN_Pin, GPIO_PIN_SET );
|
||||||
|
HAL_Delay(500);
|
||||||
|
HAL_GPIO_WritePin(READER_EN_GPIO_Port, READER_EN_Pin, GPIO_PIN_RESET );
|
||||||
|
waitAnsweredMs = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bridge.uart1Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart2(), UART_FLAG_TC))) {
|
||||||
|
waitAnsweredMs = HAL_GetTick();
|
||||||
|
temp[1] = bridge.uart1Buf->dequeue();
|
||||||
|
HAL_UART_Transmit_IT(bridge.getHuart2(), &temp[1], 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bridge.uart2Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart1(), UART_FLAG_TC))) {
|
||||||
|
temp[2] = bridge.uart2Buf->dequeue();
|
||||||
|
HAL_UART_Transmit_IT(bridge.getHuart1(), &temp[2], 1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
void AppTask(void)
|
void AppTask(void)
|
||||||
{
|
{
|
||||||
if (!updateMode) {
|
if (!updateMode) {
|
||||||
|
if (uartTask() == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
if (HAL_GetTick() - lightStartMs >= 10000)
|
||||||
|
{
|
||||||
|
lightStartMs = 0;
|
||||||
|
lightingOff();
|
||||||
|
}
|
||||||
if (HAL_GPIO_ReadPin(CONTROL_PIN_GPIO_Port, CONTROL_PIN_Pin) == GPIO_PIN_SET) {
|
if (HAL_GPIO_ReadPin(CONTROL_PIN_GPIO_Port, CONTROL_PIN_Pin) == GPIO_PIN_SET) {
|
||||||
if (controlPinFlag == 0)
|
if (controlPinFlag == 0)
|
||||||
{
|
{
|
||||||
@@ -122,14 +174,20 @@ void AppTask(void)
|
|||||||
//////ZUMMER OFF
|
//////ZUMMER OFF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!bridge.uart1Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart2(), UART_FLAG_TC))) {
|
if (bridge.uart1Buf->is_empty() && bridge.uart2Buf->is_empty())
|
||||||
temp[1] = bridge.uart1Buf->dequeue();
|
{
|
||||||
HAL_UART_Transmit_IT(bridge.getHuart2(), &temp[1], 1);
|
if (proximityCompleteMessure == 1)
|
||||||
|
{
|
||||||
|
proximityCompleteMessure = 0;
|
||||||
|
if (getRange(&VL6180_Range) == 0)
|
||||||
|
{
|
||||||
|
if (VL6180_Range.range_mm > 0 && lightStartMs == 0)
|
||||||
|
{
|
||||||
|
lightStartMs = uwTick;
|
||||||
|
lightingOn();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!bridge.uart2Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart1(), UART_FLAG_TC))) {
|
|
||||||
temp[2] = bridge.uart2Buf->dequeue();
|
|
||||||
HAL_UART_Transmit_IT(bridge.getHuart1(), &temp[2], 1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ void MX_GPIO_Init(void)
|
|||||||
HAL_GPIO_Init(CONTROL_PIN_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(CONTROL_PIN_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* EXTI interrupt init*/
|
/* EXTI interrupt init*/
|
||||||
HAL_NVIC_SetPriority(EXTI0_1_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(EXTI0_1_IRQn, 1, 0);
|
||||||
HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
|
HAL_NVIC_EnableIRQ(EXTI0_1_IRQn);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,8 +79,7 @@ static void VectorBase_Config(void) {
|
|||||||
SCB->VTOR = (unsigned long) &g_pfnVectors[0];
|
SCB->VTOR = (unsigned long) &g_pfnVectors[0];
|
||||||
}
|
}
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
uint8_t data3[1024];
|
|
||||||
uint8_t data2[1024];
|
|
||||||
/**
|
/**
|
||||||
* @brief The application entry point.
|
* @brief The application entry point.
|
||||||
* @retval int
|
* @retval int
|
||||||
@@ -132,7 +131,8 @@ int main(void) {
|
|||||||
* @brief System Clock Configuration
|
* @brief System Clock Configuration
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void SystemClock_Config(void) {
|
void SystemClock_Config(void)
|
||||||
|
{
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
||||||
|
|
||||||
@@ -143,12 +143,16 @@ void SystemClock_Config(void) {
|
|||||||
/** Initializes the RCC Oscillators according to the specified parameters
|
/** Initializes the RCC Oscillators according to the specified parameters
|
||||||
* in the RCC_OscInitTypeDef structure.
|
* in the RCC_OscInitTypeDef structure.
|
||||||
*/
|
*/
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||||
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||||
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
|
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
|
||||||
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
|
RCC_OscInitStruct.PLL.PLLN = 16;
|
||||||
|
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||||
|
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
|
||||||
|
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
||||||
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,15 +160,17 @@ void SystemClock_Config(void) {
|
|||||||
*/
|
*/
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
||||||
|RCC_CLOCKTYPE_PCLK1;
|
|RCC_CLOCKTYPE_PCLK1;
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
|
||||||
|
|
||||||
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {
|
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
|
||||||
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
|
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
|
|
||||||
#define max_scale 3
|
#define max_scale 1
|
||||||
uint8_t changeScale = 0;
|
uint8_t changeScale = 0;
|
||||||
#define ALLOW_DISABLE_WAF_FROM_BLUE_BUTTON 1
|
#define ALLOW_DISABLE_WAF_FROM_BLUE_BUTTON 1
|
||||||
#define theVL6180Dev 0x52 // what we use as "API device
|
#define theVL6180Dev 0x52 // what we use as "API device
|
||||||
@@ -228,15 +228,31 @@ void RangeState(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
uint32_t resetPressedMs = 0;
|
uint32_t resetPressedMs = 0;
|
||||||
|
uint8_t motionDetected = 0;
|
||||||
|
__weak void proximityMessureCompleted (void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t getRange (VL6180_RangeData_t* range)
|
||||||
|
{
|
||||||
|
if (Range.errorStatus == 0)
|
||||||
|
{
|
||||||
|
*range = Range;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
range->range_mm = -1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
|
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
|
||||||
{
|
{
|
||||||
if (GPIO_Pin == GPIO_PIN_0 && allowIT == 1)
|
if (GPIO_Pin == GPIO_PIN_0 && allowIT == 1)
|
||||||
{
|
{
|
||||||
RangeState();
|
RangeState();
|
||||||
if (Range.errorStatus == 0)
|
proximityMessureCompleted();
|
||||||
{
|
|
||||||
__NOP();
|
|
||||||
}
|
|
||||||
VL6180_ClearAllInterrupt(theVL6180Dev);
|
VL6180_ClearAllInterrupt(theVL6180Dev);
|
||||||
}
|
}
|
||||||
else if (GPIO_Pin == GPIO_PIN_1)
|
else if (GPIO_Pin == GPIO_PIN_1)
|
||||||
|
|||||||
@@ -2,8 +2,12 @@
|
|||||||
// Created by Professional on 7/31/2023.
|
// Created by Professional on 7/31/2023.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include "vl6180_def.h"
|
||||||
|
|
||||||
#ifndef MYPROJECT_VL6180_APP_H
|
#ifndef MYPROJECT_VL6180_APP_H
|
||||||
#define MYPROJECT_VL6180_APP_H
|
#define MYPROJECT_VL6180_APP_H
|
||||||
|
|
||||||
#endif //MYPROJECT_VL6180_APP_H
|
#endif //MYPROJECT_VL6180_APP_H
|
||||||
void vl6180_init (void);
|
void vl6180_init (void);
|
||||||
|
__weak void proximityMessureCompleted (void);
|
||||||
|
uint8_t getRange (VL6180_RangeData_t* range);
|
||||||
Reference in New Issue
Block a user