From bcd603edfe9159dbafe4b1cf5daf62478dcfe9df Mon Sep 17 00:00:00 2001 From: Peter Antypas Date: Tue, 13 Oct 2020 15:48:18 -0700 Subject: [PATCH] TX_OFF switch works now --- latest/Firmware/Src/bsp/bsp_6_0_bad.cpp | 618 ------------------------ latest/Firmware/Src/bsp/bsp_6_1.cpp | 13 +- 2 files changed, 2 insertions(+), 629 deletions(-) delete mode 100644 latest/Firmware/Src/bsp/bsp_6_0_bad.cpp diff --git a/latest/Firmware/Src/bsp/bsp_6_0_bad.cpp b/latest/Firmware/Src/bsp/bsp_6_0_bad.cpp deleted file mode 100644 index f50b1bd..0000000 --- a/latest/Firmware/Src/bsp/bsp_6_0_bad.cpp +++ /dev/null @@ -1,618 +0,0 @@ -/* - Copyright (c) 2016-2020 Peter Antypas - - This file is part of the MAIANAâ„¢ transponder firmware. - - The firmware is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see -*/ - - - -#include "bsp.hpp" -#include -#include "printf_serial.h" -#include - - -#if BOARD_REV==60 - -I2C_HandleTypeDef hi2c1; -SPI_HandleTypeDef hspi1; -IWDG_HandleTypeDef hiwdg; -UART_HandleTypeDef huart2; -UART_HandleTypeDef huart1; -TIM_HandleTypeDef htim2; - -void SystemClock_Config(); - -char_input_cb gnssInputCallback = nullptr; -char_input_cb terminalInputCallback = nullptr; -irq_callback ppsCallback = nullptr; -irq_callback sotdmaCallback = nullptr; -irq_callback trxClockCallback = nullptr; -irq_callback rxClockCallback = nullptr; - -#define EEPROM_ADDRESS 0x50 << 1 - -typedef struct -{ - GPIO_TypeDef *port; - GPIO_InitTypeDef gpio; - GPIO_PinState init; -} GPIO; - -static const GPIO __gpios[] = { - {GNSS_EN_PORT, {GNSS_EN_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {EEPROM_WREN_PORT, {EEPROM_WREN_PIN, GPIO_MODE_OUTPUT_OD, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, - {CS2_PORT, {CS2_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, 0}, GPIO_PIN_SET}, - {TRX_IC_CLK_PORT, {TRX_IC_CLK_PIN, GPIO_MODE_IT_RISING, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {GNSS_1PPS_PORT, {GNSS_1PPS_PIN, GPIO_MODE_IT_FALLING, GPIO_PULLUP, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {GNSS_NMEA_RX_PORT, {GNSS_NMEA_RX_PIN, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_LOW, GPIO_AF7_USART2}, GPIO_PIN_RESET}, - {CS1_PORT, {CS1_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, 0}, GPIO_PIN_SET}, - {SCK_PORT, {SCK_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, GPIO_AF5_SPI1}, GPIO_PIN_SET}, - {MISO_PORT, {MISO_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, GPIO_AF5_SPI1}, GPIO_PIN_SET}, - {MOSI_PORT, {MOSI_PIN, GPIO_MODE_AF_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, GPIO_AF5_SPI1}, GPIO_PIN_SET}, - {SDN1_PORT, {SDN1_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, - {TRX_IC_DATA_PORT, {TRX_IC_DATA_PIN, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {DFU_EN_PORT, {DFU_EN_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {UART_TX_PORT, {UART_TX_PIN, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_LOW, GPIO_AF7_USART1}, GPIO_PIN_RESET}, - {UART_RX_PORT, {UART_RX_PIN, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_LOW, GPIO_AF7_USART1}, GPIO_PIN_RESET}, - {TX_DISABLE_PORT, {TX_DISABLE_PIN, GPIO_MODE_INPUT, GPIO_PULLUP, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {SDN2_PORT, {SDN2_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, - {RX_IC_CLK_PORT, {RX_IC_CLK_PIN, GPIO_MODE_IT_RISING, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {RX_IC_DATA_PORT, {RX_IC_DATA_PIN, GPIO_MODE_INPUT, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {TX_CTRL_PORT, {TX_CTRL_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, - {I2C_SCL_PORT, {I2C_SCL_PIN, GPIO_MODE_AF_OD, GPIO_PULLUP, GPIO_SPEED_HIGH, GPIO_AF4_I2C1}, GPIO_PIN_SET}, - {I2C_SDA_PORT, {I2C_SDA_PIN, GPIO_MODE_AF_OD, GPIO_PULLUP, GPIO_SPEED_HIGH, GPIO_AF4_I2C1}, GPIO_PIN_SET}, -}; - -extern "C" -{ - void Error_Handler(void) - { - asm("BKPT 0"); - //printf_serial_now("[ERROR]\r\n"); - //printf_serial_now("[ERROR] ***** System error handler resetting *****\r\n"); - //NVIC_SystemReset(); - } -} - - -void gpio_pin_init(); - -void bsp_hw_init() -{ - HAL_Init(); - SystemClock_Config(); - - __HAL_RCC_GPIOA_CLK_ENABLE(); - __HAL_RCC_GPIOB_CLK_ENABLE(); - __HAL_RCC_GPIOC_CLK_ENABLE(); - - __HAL_RCC_USART2_CLK_ENABLE(); - __HAL_RCC_USART1_CLK_ENABLE(); - __HAL_RCC_SPI1_CLK_ENABLE(); - __HAL_RCC_TIM2_CLK_ENABLE(); - __HAL_RCC_I2C1_CLK_ENABLE(); - - gpio_pin_init(); - - // 1PPS signal - HAL_NVIC_SetPriority(EXTI2_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(EXTI2_IRQn); - - - // RF IC clock interrupts - HAL_NVIC_SetPriority(EXTI1_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(EXTI1_IRQn); - - - HAL_NVIC_SetPriority(EXTI3_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(EXTI3_IRQn); - - - // USART1 (main UART) - huart1.Instance = USART1; - huart1.Init.BaudRate = 38400; - 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.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - HAL_UART_Init(&huart1); - - HAL_NVIC_SetPriority(USART1_IRQn, 6, 0); - HAL_NVIC_EnableIRQ(USART1_IRQn); - __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE); - - - // SPI - - hspi1.Instance = SPI1; - hspi1.Init.Mode = SPI_MODE_MASTER; - hspi1.Init.Direction = SPI_DIRECTION_2LINES; - hspi1.Init.DataSize = SPI_DATASIZE_8BIT; - hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; - hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; - hspi1.Init.NSS = SPI_NSS_SOFT; - hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; - hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; - hspi1.Init.TIMode = SPI_TIMODE_DISABLE; - hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; - hspi1.Init.CRCPolynomial = 7; - hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; - hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; - - if (HAL_SPI_Init(&hspi1) != HAL_OK) - { - Error_Handler(); - } - - __HAL_SPI_ENABLE(&hspi1); - - - // USART2 (GNSS, RX only) - 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.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; - HAL_UART_Init(&huart2); - - HAL_NVIC_SetPriority(USART2_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(USART2_IRQn); - __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); - - // TIM2 for SOTDMA (37.5Hz) - uint32_t period = (SystemCoreClock / 37.5) - 1; - - __HAL_RCC_TIM2_CLK_ENABLE(); - htim2.Instance = TIM2; - htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; - htim2.Init.Prescaler = 0; - htim2.Init.CounterMode = TIM_COUNTERMODE_UP; - htim2.Init.Period = period; - htim2.Init.RepetitionCounter = 0; - - HAL_TIM_Base_Init(&htim2); - - HAL_NVIC_SetPriority(TIM2_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(TIM2_IRQn); - - // I2C - hi2c1.Instance = I2C1; - hi2c1.Init.Timing = 0x00702991; - hi2c1.Init.OwnAddress1 = 0; - hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; - hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; - hi2c1.Init.OwnAddress2 = 0; - hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK; - hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; - hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; - if (HAL_I2C_Init(&hi2c1) != HAL_OK) - { - Error_Handler(); - } - /** Configure Analogue filter - */ - if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK) - { - Error_Handler(); - } - /** Configure Digital filter - */ - if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK) - { - Error_Handler(); - } -} - - - -void SystemClock_Config() -{ - RCC_OscInitTypeDef RCC_OscInitStruct; - RCC_ClkInitTypeDef RCC_ClkInitStruct; - RCC_PeriphCLKInitTypeDef PeriphClkInit; - - /**Initializes the CPU, AHB and APB bus clocks - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; - RCC_OscInitStruct.HSIState = RCC_HSI_ON; - RCC_OscInitStruct.HSICalibrationValue = 16; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; - RCC_OscInitStruct.PLL.PLLM = 1; - RCC_OscInitStruct.PLL.PLLN = 10; // 80 MHz - //RCC_OscInitStruct.PLL.PLLN = 8; // 64 MHz - //RCC_OscInitStruct.PLL.PLLN = 6; // 48 MHz - -#ifdef STM32L432xx - RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7; -#endif - RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2; - RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - Error_Handler(); - } - - /**Initializes the CPU, AHB and APB bus clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK - |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; - - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK) - { - Error_Handler(); - } - - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; - PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_HSI; - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) - { - Error_Handler(); - } - - /**Configure the main internal regulator output voltage - */ - if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1) != HAL_OK) - { - Error_Handler(); - } - - /**Configure the Systick interrupt time - */ - HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); - - /**Configure the Systick - */ - HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); - - /* SysTick_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); -} - -void gpio_pin_init() -{ - for ( unsigned i = 0; i < sizeof __gpios / sizeof(GPIO); ++i ) - { - const GPIO* io = &__gpios[i]; - HAL_GPIO_Init(io->port, (GPIO_InitTypeDef*)&io->gpio); - if ( io->gpio.Mode == GPIO_MODE_OUTPUT_PP || io->gpio.Mode == GPIO_MODE_OUTPUT_OD ) - { - HAL_GPIO_WritePin(io->port, io->gpio.Pin, io->init); - } - - } -} - -void HAL_MspInit(void) -{ - /* USER CODE BEGIN MspInit 0 */ - - /* USER CODE END MspInit 0 */ - - __HAL_RCC_SYSCFG_CLK_ENABLE(); - __HAL_RCC_PWR_CLK_ENABLE(); - - HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); - - /* System interrupt init*/ - /* MemoryManagement_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(MemoryManagement_IRQn, 0, 0); - /* BusFault_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(BusFault_IRQn, 0, 0); - /* UsageFault_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(UsageFault_IRQn, 0, 0); - /* SVCall_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(SVCall_IRQn, 0, 0); - /* DebugMonitor_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DebugMonitor_IRQn, 0, 0); - /* PendSV_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(PendSV_IRQn, 0, 0); - /* SysTick_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); - - /* USER CODE BEGIN MspInit 1 */ - - /* USER CODE END MspInit 1 */ -} - -void bsp_set_rx_mode() -{ - HAL_GPIO_WritePin(TX_CTRL_PORT, TX_CTRL_PIN, GPIO_PIN_RESET); - - GPIO_InitTypeDef gpio; - gpio.Pin = TRX_IC_DATA_PIN; - gpio.Mode = GPIO_MODE_INPUT; - gpio.Speed = GPIO_SPEED_FREQ_LOW; - gpio.Pull = GPIO_NOPULL; - HAL_GPIO_Init(TRX_IC_DATA_PORT, &gpio); -} - -void bsp_set_tx_mode() -{ - GPIO_InitTypeDef gpio; - gpio.Pin = TRX_IC_DATA_PIN; - gpio.Mode = GPIO_MODE_OUTPUT_PP; - gpio.Speed = GPIO_SPEED_FREQ_LOW; - gpio.Pull = GPIO_NOPULL; - HAL_GPIO_Init(TRX_IC_DATA_PORT, &gpio); - - HAL_GPIO_WritePin(TX_CTRL_PORT, TX_CTRL_PIN, GPIO_PIN_SET); -} - -bool bsp_is_tx_disabled() -{ - return HAL_GPIO_ReadPin(TX_DISABLE_PORT, TX_DISABLE_PIN) == GPIO_PIN_RESET; -} - -void bsp_gnss_on() -{ - HAL_GPIO_WritePin(GNSS_EN_PORT, GNSS_EN_PIN, GPIO_PIN_SET); -} - -void bsp_gnss_off() -{ - HAL_GPIO_WritePin(GNSS_EN_PORT, GNSS_EN_PIN, GPIO_PIN_RESET); - HAL_Delay(100); -} - -void USART_putc(USART_TypeDef* USARTx, char c) -{ - while ( !(USARTx->ISR & USART_ISR_TXE) ) - ; - - USARTx->TDR = c; -} - -void bsp_write_char(char c) -{ - USART_putc(USART1, c); -} - -void bsp_write_string(const char *s) -{ - for ( int i = 0; s[i] != 0; ++i ) - USART_putc(USART1, s[i]); -} - -void bsp_start_wdt() -{ - IWDG_InitTypeDef iwdg; - iwdg.Prescaler = IWDG_PRESCALER_64; - iwdg.Reload = 0x0fff; - iwdg.Window = 0x0fff; - - hiwdg.Instance = IWDG; - hiwdg.Init = iwdg; - - HAL_IWDG_Init(&hiwdg); -} - -void bsp_refresh_wdt() -{ - HAL_IWDG_Refresh(&hiwdg); -} - -void bsp_set_gnss_input_callback(char_input_cb cb) -{ - gnssInputCallback = cb; -} - -void bsp_set_terminal_input_callback(char_input_cb cb) -{ - terminalInputCallback = cb; -} - -void bsp_start_sotdma_timer() -{ - HAL_TIM_Base_Start_IT(&htim2); -} - -void bsp_stop_sotdma_timer() -{ - HAL_TIM_Base_Stop_IT(&htim2); -} - -void bsp_set_gnss_1pps_callback(irq_callback cb) -{ - ppsCallback = cb; -} - -void bsp_set_trx_clk_callback(irq_callback cb) -{ - trxClockCallback = cb; -} - -void bsp_set_rx_clk_callback(irq_callback cb) -{ - rxClockCallback = cb; -} - -void bsp_set_gnss_sotdma_timer_callback(irq_callback cb) -{ - sotdmaCallback = cb; -} - -uint32_t bsp_get_sotdma_timer_value() -{ - return TIM2->CNT; -} - -void bsp_set_sotdma_timer_value(uint32_t v) -{ - TIM2->CNT = v; -} - -uint32_t bsp_get_system_clock() -{ - return SystemCoreClock; -} - -uint8_t bsp_tx_spi_byte(uint8_t data) -{ - uint8_t result = 0; - HAL_SPI_TransmitReceive(&hspi1, &data, &result, 1, 10); - return result; -} - -bool bsp_erase_station_data() -{ - uint8_t b = 0xff; - HAL_GPIO_WritePin(EEPROM_WREN_PORT, EEPROM_WREN_PIN, GPIO_PIN_RESET); - HAL_Delay(1); - - for ( unsigned i = 0; i < sizeof(StationData); ++i ) - { - HAL_I2C_Mem_Write(&hi2c1, EEPROM_ADDRESS, i, 1, &b, 1, 100); - HAL_Delay(6); - } - HAL_GPIO_WritePin(EEPROM_WREN_PORT, EEPROM_WREN_PIN, GPIO_PIN_SET); - - return true; -} - -bool bsp_save_station_data(const StationData &data) -{ - HAL_GPIO_WritePin(EEPROM_WREN_PORT, EEPROM_WREN_PIN, GPIO_PIN_RESET); - HAL_Delay(1); - - uint8_t *b = (uint8_t*)&data; - for ( unsigned i = 0; i < sizeof(StationData); ++i, ++b ) - { - HAL_I2C_Mem_Write(&hi2c1, EEPROM_ADDRESS, i, 1, b, 1, 100); - HAL_Delay(6); - } - - HAL_GPIO_WritePin(EEPROM_WREN_PORT, EEPROM_WREN_PIN, GPIO_PIN_SET); - - return true; -} - -void bsp_reboot() -{ - NVIC_SystemReset(); -} - -bool bsp_read_station_data(StationData &data) -{ - uint8_t *b = (uint8_t*)&data; - for ( unsigned i = 0; i < sizeof(StationData); ++i, ++b ) - { - HAL_I2C_Mem_Read(&hi2c1, EEPROM_ADDRESS, i, 1, b, 1, 100); - } - - return true; -} - -void bsp_enter_dfu() -{ - /** - * The RC delay circuit feeding BOOT0 from this GPIO will latch the voltage high - * long enough for the next reset to invoke the ROM bootloader. This is the cleanest - * way to go about it. The alternative requires that we shut down all peripherals and - * disable every interrupt including Systick. - */ - - HAL_GPIO_WritePin(DFU_EN_PORT, DFU_EN_PIN, GPIO_PIN_SET); - HAL_Delay(500); - bsp_reboot(); -} - -extern "C" -{ - - void USART1_IRQHandler(void) - { - if ( __HAL_UART_GET_IT(&huart1, UART_IT_RXNE) ) - { - __HAL_UART_CLEAR_IT(&huart1, UART_IT_RXNE); - char c = USART1->RDR; - if ( terminalInputCallback ) - terminalInputCallback(c); - } - } - - void EXTI2_IRQHandler(void) - { - if ( __HAL_GPIO_EXTI_GET_IT(GPIO_PIN_2) != RESET ) - { - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_2); - if ( ppsCallback ) - ppsCallback(); - } - } - - void USART2_IRQHandler() - { - if ( __HAL_UART_GET_IT(&huart2, UART_IT_RXNE) ) - { - __HAL_UART_CLEAR_IT(&huart2, UART_IT_RXNE); - char c = (char)USART2->RDR; - if ( gnssInputCallback ) - gnssInputCallback(c); - } - } - - - void TIM2_IRQHandler(void) - { - if(__HAL_TIM_GET_FLAG(&htim2, TIM_FLAG_UPDATE) != RESET) - { - if(__HAL_TIM_GET_IT_SOURCE(&htim2, TIM_IT_UPDATE) !=RESET) - { - __HAL_TIM_CLEAR_IT(&htim2, TIM_IT_UPDATE); - if ( sotdmaCallback ) - sotdmaCallback(); - } - } - } - - void EXTI3_IRQHandler(void) - { - if ( __HAL_GPIO_EXTI_GET_IT(GPIO_PIN_3) != RESET ) - { - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3); - if ( rxClockCallback ) - rxClockCallback(); - } - } - - void EXTI1_IRQHandler(void) - { - if ( __HAL_GPIO_EXTI_GET_IT(GPIO_PIN_1) != RESET ) - { - __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_1); - if ( trxClockCallback ) - trxClockCallback(); - } - } - -} - -#endif diff --git a/latest/Firmware/Src/bsp/bsp_6_1.cpp b/latest/Firmware/Src/bsp/bsp_6_1.cpp index 8cbf033..d9cae4f 100644 --- a/latest/Firmware/Src/bsp/bsp_6_1.cpp +++ b/latest/Firmware/Src/bsp/bsp_6_1.cpp @@ -1,13 +1,3 @@ -/* - * bsp_6_0.cpp - * - * Created on: Oct 13, 2020 - * Author: peter - */ - - - - /* Copyright (c) 2016-2020 Peter Antypas @@ -64,6 +54,7 @@ typedef struct static const GPIO __gpios[] = { {GNSS_EN_PORT, {GNSS_EN_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, + {TX_DISABLE_PORT, {TX_DISABLE_PIN, GPIO_MODE_INPUT, GPIO_PULLUP, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, {EEPROM_WREN_PORT, {EEPROM_WREN_PIN, GPIO_MODE_OUTPUT_OD, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_SET}, {CS2_PORT, {CS2_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_HIGH, 0}, GPIO_PIN_SET}, {TRX_IC_CLK_PORT, {TRX_IC_CLK_PIN, GPIO_MODE_IT_RISING, GPIO_NOPULL, GPIO_SPEED_LOW, 0}, GPIO_PIN_RESET}, @@ -549,7 +540,7 @@ bool bsp_read_station_data(StationData &data) bool bsp_is_tx_disabled() { - return false; + return HAL_GPIO_ReadPin(TX_DISABLE_PORT, TX_DISABLE_PIN) == GPIO_PIN_RESET; } void bsp_enter_dfu()