From 5f5c993f9ac999b9292ed99349ec16f6917e7dad Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Sun, 3 Jan 2021 08:25:37 +0100 Subject: [PATCH] Remove separate MD-UV380G platform files. From now on they will be shared with MD-UV380, with only a GPS define set in meson.build. --- meson.build | 20 +-- platform/targets/MD-UV380G/hwconfig.h | 120 ------------- platform/targets/MD-UV380G/platform.c | 236 -------------------------- 3 files changed, 3 insertions(+), 373 deletions(-) delete mode 100644 platform/targets/MD-UV380G/hwconfig.h delete mode 100644 platform/targets/MD-UV380G/platform.c diff --git a/meson.build b/meson.build index 2ecbb2fb..6c8b1432 100644 --- a/meson.build +++ b/meson.build @@ -228,20 +228,6 @@ mduv380_inc = inc + stm32f405_inc + ['platform/targets/MD-UV380'] mduv380_def = def + stm32f405_def + {'PLATFORM_MDUV380': ''} -## TYT MD-UV380G -mduv380g_src = src + stm32f405_src + ['platform/drivers/display/HX83XX_MDx.c', - 'platform/drivers/keyboard/keyboard_MDx.c', - 'platform/drivers/NVM/W25Qx.c', - 'platform/drivers/NVM/spiFlash_MDx.c', - 'platform/drivers/NVM/nvmem_MDUV3x0G.c', - 'platform/drivers/ADC/ADC1_MDx.c', - 'platform/drivers/baseband/rtx_UV3x0.c', - 'platform/targets/MD-UV380G/platform.c'] - -mduv380g_inc = inc + stm32f405_inc + ['platform/targets/MD-UV380G'] -mduv380g_def = def + stm32f405_def + {'PLATFORM_MDUV380G': ''} - - ## Radioddity GD77 gd77_src = src + mk22fn512_src + ['platform/targets/GD77/platform.c', 'platform/drivers/display/UC1701_GD77.c', @@ -327,7 +313,7 @@ foreach k, v : mduv380_def endforeach mduv380g_args = [] -foreach k, v : mduv380g_def +foreach k, v : mduv380_def if v == '' mduv380g_args += '-D@0@'.format(k) else @@ -386,11 +372,11 @@ mduv380_opts = {'sources': mduv380_src, '-Wl,--print-memory-usage'], 'include_directories': mduv380_inc} -mduv380g_opts = {'sources': mduv380g_src, +mduv380g_opts = {'sources': mduv380_src, 'c_args': mduv380g_args, 'link_args' : ['-Wl,-T../platform/mcu/STM32F4xx/linker_script.ld', '-Wl,--print-memory-usage'], - 'include_directories': mduv380g_inc} + 'include_directories': mduv380_inc} gd77_opts = {'sources': gd77_src, 'c_args': gd77_args, diff --git a/platform/targets/MD-UV380G/hwconfig.h b/platform/targets/MD-UV380G/hwconfig.h deleted file mode 100644 index e2230c42..00000000 --- a/platform/targets/MD-UV380G/hwconfig.h +++ /dev/null @@ -1,120 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2020 by Federico Amedeo Izzo IU2NUO, * - * Niccolò Izzo IU2KIN, * - * Silvano Seva IU2KWO * - * * - * This program 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 * - ***************************************************************************/ - -#ifndef HWCONFIG_H -#define HWCONFIG_H - -#include - -/* Device has a working real time clock */ -#define HAS_RTC - -/* Supported radio bands */ -#define BAND_VHF -#define BAND_UHF - -/* Band limits in Hz */ -#define FREQ_LIMIT_VHF_LO 136000000 -#define FREQ_LIMIT_VHF_HI 174000000 -#define FREQ_LIMIT_UHF_LO 400000000 -#define FREQ_LIMIT_UHF_HI 480000000 - -/* Screen dimensions */ -#define SCREEN_WIDTH 160 -#define SCREEN_HEIGHT 128 - -/* Screen pixel format */ -#define PIX_FMT_RGB565 - -/* Battery type */ -#define BAT_LIPO_2S - -/* Display */ -#define LCD_D0 GPIOD,14 -#define LCD_D1 GPIOD,15 -#define LCD_D2 GPIOD,0 -#define LCD_D3 GPIOD,1 -#define LCD_D4 GPIOE,7 -#define LCD_D5 GPIOE,8 -#define LCD_D6 GPIOE,9 -#define LCD_D7 GPIOE,10 -#define LCD_WR GPIOD,5 -#define LCD_RD GPIOD,4 -#define LCD_CS GPIOD,6 -#define LCD_RS GPIOD,12 -#define LCD_RST GPIOD,13 -#define LCD_BKLIGHT GPIOD,8 - -/* Signalling LEDs */ -#define GREEN_LED GPIOE,0 -#define RED_LED GPIOE,1 - -/* Analog inputs */ -#define AIN_VBAT GPIOA,1 - -/* Channel selection rotary encoder */ -#define CH_SELECTOR_0 GPIOE,14 -#define CH_SELECTOR_1 GPIOB,11 - -/* Push-to-talk switch */ -#define PTT_SW GPIOE,11 - -/* - * Keyboard. Here we define only rows, since coloumn lines are the same as - * LCD_Dx. See also: https://www.qsl.net/dl4yhf/RT3/md380_hw.html#keyboard - * - * "Monitor" and "Function" buttons, on the other hand, are connected to - * keyboard row 3 and on LCD_D6 and LCD_D7. They are SWAPPED with respect to - * connections made on MD-380. - */ -#define KB_ROW1 GPIOA,6 /* K1 */ -#define KB_ROW2 GPIOD,2 /* K2 */ -#define KB_ROW3 GPIOD,3 /* K3 */ -#define MONI_SW LCD_D6 -#define FUNC_SW LCD_D7 - -/* External flash */ -#define FLASH_CS GPIOD,7 -#define FLASH_CLK GPIOB,3 -#define FLASH_SDO GPIOB,4 -#define FLASH_SDI GPIOB,5 - -/* - * To enable pwm for display backlight dimming uncomment this directive. - * - * WARNING: backlight pwm is disabled by default because it generates a - * continuous tone in the speaker and headphones. - * - * This issue cannot be solved in any way because it derives from how the - * MD-UV380 mcu pins are used: to have a noiseless backlight pwm, the control - * pin has to be connected to a mcu pin having between its alternate functions - * an output compare channel of one of the timers. With this configuration, the - * pwm signal can completely generated in hardware and its frequency can be well - * above 22kHz, which is the upper limit for human ears. - * - * In the MD-UV380 radio, display backlight is connected to PD8, which is not - * connected to any of the available output compare channels. Thus, the pwm - * signal generation is managed inside the TIM11 ISR by toggling the backlight - * pin and its frequency has to be low (~250Hz) to not put too much overehad on - * the processor due to timer ISR triggering at an high rate. - * - * #define ENABLE_BKLIGHT_DIMMING - */ - -#endif diff --git a/platform/targets/MD-UV380G/platform.c b/platform/targets/MD-UV380G/platform.c deleted file mode 100644 index 10ddfc49..00000000 --- a/platform/targets/MD-UV380G/platform.c +++ /dev/null @@ -1,236 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2020 by Federico Amedeo Izzo IU2NUO, * - * Niccolò Izzo IU2KIN, * - * Silvano Seva IU2KWO * - * * - * This program 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 -#include -#include -#include -#include -#include -#include -#include - -mduv3x0Calib_t calibration; - -#ifdef ENABLE_BKLIGHT_DIMMING -void TIM1_TRG_COM_TIM11_IRQHandler() -{ - OSIntEnter(); - - if(TIM11->SR & TIM_SR_CC1IF) - { - gpio_clearPin(LCD_BKLIGHT); /* Clear pin on compare match */ - } - - if(TIM11->SR & TIM_SR_UIF) - { - gpio_setPin(LCD_BKLIGHT); /* Set pin on counter reload */ - } - - TIM11->SR = 0; - - OSIntExit(); -} -#endif - -void platform_init() -{ - /* Configure GPIOs */ - gpio_setMode(GREEN_LED, OUTPUT); - gpio_setMode(RED_LED, OUTPUT); - - gpio_setMode(LCD_BKLIGHT, OUTPUT); - gpio_clearPin(LCD_BKLIGHT); - - gpio_setMode(CH_SELECTOR_0, INPUT); - gpio_setMode(CH_SELECTOR_1, INPUT); - - gpio_setMode(PTT_SW, INPUT); - - /* - * Initialise ADC1, for vbat, RSSI, ... - * Configuration of corresponding GPIOs in analog input mode is done inside - * the driver. - */ - adc1_init(); - - nvm_init(); /* Initialise non volatile memory manager */ - nvm_readCalibData(&calibration); /* Load calibration data */ - rtc_init(); /* Initialise RTC */ - - #ifdef ENABLE_BKLIGHT_DIMMING - /* - * Configure TIM11 for backlight PWM: Fpwm = 256Hz, 8 bit of resolution. - * APB2 freq. is 84MHz but timer runs at twice this frequency, then: - * PSC = 2564 to have Ftick = 65.52kHz - * With ARR = 256, Fpwm is 256Hz; - */ - RCC->APB2ENR |= RCC_APB2ENR_TIM11EN; - __DSB(); - - TIM11->ARR = 255; - TIM11->PSC = 2563; - TIM11->CNT = 0; - TIM11->CR1 |= TIM_CR1_ARPE; - TIM11->CCMR1 |= TIM_CCMR1_OC1M_2 - | TIM_CCMR1_OC1M_1 - | TIM_CCMR1_OC1PE; - TIM11->CCER |= TIM_CCER_CC1E; - TIM11->CCR1 = 0; - TIM11->EGR = TIM_EGR_UG; /* Update registers */ - TIM11->SR = 0; /* Clear interrupt flags */ - TIM11->DIER = TIM_DIER_CC1IE /* Interrupt on compare match */ - | TIM_DIER_UIE; /* Interrupt on counter reload */ - TIM11->CR1 |= TIM_CR1_CEN; /* Start timer */ - - NVIC_ClearPendingIRQ(TIM1_TRG_COM_TIM11_IRQn); - NVIC_SetPriority(TIM1_TRG_COM_TIM11_IRQn,15); - NVIC_EnableIRQ(TIM1_TRG_COM_TIM11_IRQn); - #endif -} - -void platform_terminate() -{ - /* Shut down backlight */ - gpio_clearPin(LCD_BKLIGHT); - - #ifdef ENABLE_BKLIGHT_DIMMING - RCC->APB2ENR &= ~RCC_APB2ENR_TIM11EN; - __DSB(); - #endif - - /* Shut down LEDs */ - gpio_clearPin(GREEN_LED); - gpio_clearPin(RED_LED); - - /* Shut down all the modules */ - adc1_terminate(); - nvm_terminate(); - rtc_terminate(); -} - -float platform_getVbat() -{ - /* - * Battery voltage is measured through an 1:3 voltage divider and - * adc1_getMeasurement returns a value in mV. Thus, to have effective - * battery voltage multiply by three and divide by 1000 - */ - return adc1_getMeasurement(0)*3.0f/1000.0f; -} - -float platform_getMicLevel() -{ - return 0.0f; -} - -float platform_getVolumeLevel() -{ - return 0.0f; -} - -uint8_t platform_getChSelector() -{ - static const uint8_t rsPositions[] = { 1, 4, 2, 3}; - int pos = gpio_readPin(CH_SELECTOR_0) - | (gpio_readPin(CH_SELECTOR_1) << 1); - - return rsPositions[pos]; -} - -bool platform_getPttStatus() -{ - /* PTT line has a pullup resistor with PTT switch closing to ground */ - return (gpio_readPin(PTT_SW) == 0) ? true : false; -} - -void platform_ledOn(led_t led) -{ - switch(led) - { - case GREEN: - gpio_setPin(GREEN_LED); - break; - - case RED: - gpio_setPin(RED_LED); - break; - - default: - break; - } -} - -void platform_ledOff(led_t led) -{ - switch(led) - { - case GREEN: - gpio_clearPin(GREEN_LED); - break; - - case RED: - gpio_clearPin(RED_LED); - break; - - default: - break; - } -} - -void platform_beepStart(uint16_t freq) -{ - /* TODO */ - (void) freq; -} - -void platform_beepStop() -{ - /* TODO */ -} - -void platform_setBacklightLevel(uint8_t level) -{ - /* - * Little workaround for the following nasty behaviour: if CCR1 value is - * zero, a waveform with 99% duty cycle is generated. This is because we are - * emulating pwm with interrupts. - */ - if(level > 1) - { - #ifdef ENABLE_BKLIGHT_DIMMING - TIM11->CCR1 = level; - TIM11->CR1 |= TIM_CR1_CEN; - #else - gpio_setPin(LCD_BKLIGHT); - #endif - } - else - { - #ifdef ENABLE_BKLIGHT_DIMMING - TIM11->CR1 &= ~TIM_CR1_CEN; - #endif - gpio_clearPin(LCD_BKLIGHT); - } -} - -const void *platform_getCalibrationData() -{ - return ((const void *) &calibration); -}