---vl6180dr

This commit is contained in:
Mysteo91
2023-08-01 17:38:46 +03:00
parent c3fcc98b2e
commit 6aa7f836d3
3 changed files with 25 additions and 95 deletions

View File

@@ -111,7 +111,7 @@ void proximityMessureCompleted (void)
VL6180_RangeData_t VL6180_Range; VL6180_RangeData_t VL6180_Range;
uint32_t waitAnswerFromReaderMs = 0; uint32_t waitAnswerFromReaderMs = 0;
#define MAX_WAIT_ANSWER_FROM_GM60 10000 #define MAX_WAIT_ANSWER_FROM_GM60 30000
#define DATA_TIMEOUT 500 #define DATA_TIMEOUT 500
uint32_t lightStartMs = 0; 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(); waitAnswerFromReaderMs = HAL_GetTick();
std::string_view stringView{bridge.uart1Buf->dequeue()}; std::string_view stringView{bridge.uart1Buf->dequeue()};
uint32_t size = stringView.size(); 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<char *>(uart1Buf), size, 0); stringView.copy(reinterpret_cast<char *>(uart1Buf), size, 0);
if (stringView.find("FIRMWARE_UPDATE") != std::string::npos) if (stringView.find("FIRMWARE_UPDATE") != std::string::npos)
{ {
HAL_UART_DeInit(&huart1); HAL_UART_DeInit(bridge.getHuart1());
BootComInit(); BootComInit();
zummerOff(); zummerOff();
lightingOff(); lightingOff();
@@ -154,12 +156,14 @@ uint8_t uartTask (void) // return 0 if data received , otherwise return 1
zummerOff(); zummerOff();
} }
else else
{
HAL_UART_Transmit_IT(bridge.getHuart2(), (const uint8_t*) uart1Buf, size); HAL_UART_Transmit_IT(bridge.getHuart2(), (const uint8_t*) uart1Buf, size);
} }
}
return 0; 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; waitAnswerFromReaderMs = 0;
std::string_view stringView{bridge.uart2Buf->dequeue()}; std::string_view stringView{bridge.uart2Buf->dequeue()};
uint32_t size = stringView.size(); uint32_t size = stringView.size();

View File

@@ -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}; std::string_view stringView{(const char *) bridgePnt->dataFromUart1, Size};
bridgePnt->uart1Buf->enqueue(stringView); 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()) else if (huart == bridgePnt->getHuart2())
{ {
@@ -97,8 +94,25 @@ UART_HandleTypeDef* UartBridge::getHuart2() {
void UartBridge::init(void) { void UartBridge::init(void) {
uartInit(&uart1Handle); uartInit(&uart1Handle);
uartInit(&uart2Handle); uartInit(&uart2Handle);
HAL_UARTEx_ReceiveToIdle_IT(&uart1Handle,(uint8_t*)dataFromUart1, BUF_SIZE ); HAL_UARTEx_ReceiveToIdle_IT(&uart1Handle,(uint8_t*)dataFromUart1, BUF_SIZE );
HAL_UARTEx_ReceiveToIdle_IT(&uart2Handle,(uint8_t*)dataFromUart2, 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);
} }

View File

@@ -29,94 +29,6 @@ UART_HandleTypeDef huart2;
/* USART1 init function */ /* 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) void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{ {