From 6aa7f836d309f559bf8c357b6fe5d13699fe539b Mon Sep 17 00:00:00 2001 From: Mysteo91 Date: Tue, 1 Aug 2023 17:38:46 +0300 Subject: [PATCH] ---vl6180dr --- App/app.cpp | 12 ++-- main_prog/Core/Src/uart_bridge.cpp | 20 ++++++- main_prog/Core/Src/usart.c | 88 ------------------------------ 3 files changed, 25 insertions(+), 95 deletions(-) diff --git a/App/app.cpp b/App/app.cpp index b8d590b..4f26726 100644 --- a/App/app.cpp +++ b/App/app.cpp @@ -111,7 +111,7 @@ void proximityMessureCompleted (void) VL6180_RangeData_t VL6180_Range; uint32_t waitAnswerFromReaderMs = 0; -#define MAX_WAIT_ANSWER_FROM_GM60 10000 +#define MAX_WAIT_ANSWER_FROM_GM60 30000 #define DATA_TIMEOUT 500 uint32_t lightStartMs = 0; @@ -131,7 +131,9 @@ uint8_t uartTask (void) // return 0 if data received , otherwise return 1 } } - if (!bridge.uart1Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart2(), UART_FLAG_TC))) { + if (!bridge.uart1Buf->is_empty() && bridge.getHuart2()->gState == 0x20) { + HAL_UART_Abort(bridge.getHuart1()); + HAL_UARTEx_ReceiveToIdle_IT(bridge.getHuart1(),(uint8_t*)bridge.dataFromUart1, BUF_SIZE ); waitAnswerFromReaderMs = HAL_GetTick(); std::string_view stringView{bridge.uart1Buf->dequeue()}; uint32_t size = stringView.size(); @@ -140,7 +142,7 @@ uint8_t uartTask (void) // return 0 if data received , otherwise return 1 stringView.copy(reinterpret_cast(uart1Buf), size, 0); if (stringView.find("FIRMWARE_UPDATE") != std::string::npos) { - HAL_UART_DeInit(&huart1); + HAL_UART_DeInit(bridge.getHuart1()); BootComInit(); zummerOff(); lightingOff(); @@ -154,12 +156,14 @@ uint8_t uartTask (void) // return 0 if data received , otherwise return 1 zummerOff(); } else + { HAL_UART_Transmit_IT(bridge.getHuart2(), (const uint8_t*) uart1Buf, size); + } } return 0; } - if (!bridge.uart2Buf->is_empty() && (__HAL_UART_GET_FLAG(bridge.getHuart1(), UART_FLAG_TC))) { + if (!bridge.uart2Buf->is_empty() && bridge.getHuart1()->gState == 0x20) { waitAnswerFromReaderMs = 0; std::string_view stringView{bridge.uart2Buf->dequeue()}; uint32_t size = stringView.size(); diff --git a/main_prog/Core/Src/uart_bridge.cpp b/main_prog/Core/Src/uart_bridge.cpp index e7f42b0..cfd8173 100644 --- a/main_prog/Core/Src/uart_bridge.cpp +++ b/main_prog/Core/Src/uart_bridge.cpp @@ -20,9 +20,6 @@ extern "C" void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t S { std::string_view stringView{(const char *) bridgePnt->dataFromUart1, Size}; bridgePnt->uart1Buf->enqueue(stringView); - HAL_UART_Abort(bridgePnt->getHuart1()); - HAL_UARTEx_ReceiveToIdle_IT(bridgePnt->getHuart1(),(uint8_t*)bridgePnt->dataFromUart1, BUF_SIZE ); - } else if (huart == bridgePnt->getHuart2()) { @@ -97,8 +94,25 @@ UART_HandleTypeDef* UartBridge::getHuart2() { void UartBridge::init(void) { uartInit(&uart1Handle); uartInit(&uart2Handle); + HAL_UARTEx_ReceiveToIdle_IT(&uart1Handle,(uint8_t*)dataFromUart1, BUF_SIZE ); HAL_UARTEx_ReceiveToIdle_IT(&uart2Handle,(uint8_t*)dataFromUart2, BUF_SIZE ); + __HAL_UART_CLEAR_FEFLAG(&uart1Handle); + __HAL_UART_CLEAR_OREFLAG(&uart1Handle); + __HAL_UART_CLEAR_NEFLAG(&uart1Handle); + __HAL_UART_CLEAR_PEFLAG(&uart1Handle); + __HAL_UART_CLEAR_FEFLAG(&uart2Handle); + __HAL_UART_CLEAR_OREFLAG(&uart2Handle); + __HAL_UART_CLEAR_NEFLAG(&uart2Handle); + __HAL_UART_CLEAR_PEFLAG(&uart2Handle); + __HAL_UART_DISABLE_IT(&uart1Handle, UART_IT_ORE); + __HAL_UART_DISABLE_IT(&uart1Handle, UART_IT_PE); + __HAL_UART_DISABLE_IT(&uart1Handle, UART_IT_FE); + __HAL_UART_DISABLE_IT(&uart1Handle, UART_IT_NE); + __HAL_UART_DISABLE_IT(&uart2Handle, UART_IT_ORE); + __HAL_UART_DISABLE_IT(&uart2Handle, UART_IT_PE); + __HAL_UART_DISABLE_IT(&uart2Handle, UART_IT_FE); + __HAL_UART_DISABLE_IT(&uart2Handle, UART_IT_NE); } diff --git a/main_prog/Core/Src/usart.c b/main_prog/Core/Src/usart.c index abb0b0e..70aabbe 100644 --- a/main_prog/Core/Src/usart.c +++ b/main_prog/Core/Src/usart.c @@ -29,94 +29,6 @@ UART_HandleTypeDef huart2; /* USART1 init function */ -void MX_USART1_UART_Init(void) -{ - - /* USER CODE BEGIN USART1_Init 0 */ - - /* USER CODE END USART1_Init 0 */ - - /* USER CODE BEGIN USART1_Init 1 */ - - /* USER CODE END USART1_Init 1 */ - huart1.Instance = USART1; - huart1.Init.BaudRate = 9600; - huart1.Init.WordLength = UART_WORDLENGTH_8B; - huart1.Init.StopBits = UART_STOPBITS_1; - huart1.Init.Parity = UART_PARITY_NONE; - huart1.Init.Mode = UART_MODE_TX_RX; - huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart1.Init.OverSampling = UART_OVERSAMPLING_16; - huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1; - huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_SWAP_INIT; - huart1.AdvancedInit.Swap = UART_ADVFEATURE_SWAP_ENABLE; - if (HAL_UART_Init(&huart1) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART1_Init 2 */ - - /* USER CODE END USART1_Init 2 */ - -} -/* USART2 init function */ - -void MX_USART2_UART_Init(void) -{ - - /* USER CODE BEGIN USART2_Init 0 */ - - /* USER CODE END USART2_Init 0 */ - - /* USER CODE BEGIN USART2_Init 1 */ - - /* USER CODE END USART2_Init 1 */ - huart2.Instance = USART2; - huart2.Init.BaudRate = 9600; - huart2.Init.WordLength = UART_WORDLENGTH_8B; - huart2.Init.StopBits = UART_STOPBITS_1; - huart2.Init.Parity = UART_PARITY_NONE; - huart2.Init.Mode = UART_MODE_TX_RX; - huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; - huart2.Init.OverSampling = UART_OVERSAMPLING_16; - huart2.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; - huart2.Init.ClockPrescaler = UART_PRESCALER_DIV1; - huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - if (HAL_UART_Init(&huart2) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_SetTxFifoThreshold(&huart2, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_SetRxFifoThreshold(&huart2, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) - { - Error_Handler(); - } - if (HAL_UARTEx_DisableFifoMode(&huart2) != HAL_OK) - { - Error_Handler(); - } - /* USER CODE BEGIN USART2_Init 2 */ - - /* USER CODE END USART2_Init 2 */ - -} - void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) {