diff --git a/BUILD.md b/BUILD.md index a1af057..9e3087d 100644 --- a/BUILD.md +++ b/BUILD.md @@ -548,6 +548,8 @@ modified RF7021SE and Blue Pill STM32F103). - #define NANO_HOTSPOT: enable this option if you have a Nano hotSPOT (BI7JTA). +- #define NANO_DV_REV10: enable this option if you have a Nano DV (BG4TGO & BG5HHP). + - #define ENABLE_ADF7021: add support for ADF7021 (all boards, enabled by default). - #define DUPLEX: enable duplex mode with dual ADF7021. It is still under development. diff --git a/Config.h b/Config.h index c42ddaf..d055d9e 100644 --- a/Config.h +++ b/Config.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/IOArduino.cpp b/IOArduino.cpp index f63a34b..0d0d80a 100644 --- a/IOArduino.cpp +++ b/IOArduino.cpp @@ -51,7 +51,7 @@ #define PIN_PTT_LED PB14 #define PIN_COS_LED PB15 -#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) #define PIN_SCLK PB5 #define PIN_SREAD PB7 @@ -75,7 +75,7 @@ #define PIN_COS_LED PB15 #else -#error "Either ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10 or NANO_HOTSPOT need to be defined" +#error "Either ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT or NANO_DV_REV10 need to be defined" #endif #elif defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) @@ -148,7 +148,7 @@ void CIO::Init() { #if defined (__STM32F1__) -#if defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#if defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY); #endif diff --git a/IOSTM.cpp b/IOSTM.cpp index 17e4c73..79821a6 100644 --- a/IOSTM.cpp +++ b/IOSTM.cpp @@ -152,7 +152,7 @@ #define PIN_COS_LED GPIO_Pin_15 #define PORT_COS_LED GPIOB -#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) #define PIN_SCLK GPIO_Pin_5 #define PORT_SCLK GPIOB @@ -225,7 +225,7 @@ #define PORT_COS_LED GPIOB #else -#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10 or NANO_HOTSPOT need to be defined" +#error "Either PI_HAT_7021_REV_02, ZUMSPOT_ADF7021, LIBRE_KIT_ADF7021, MMDVM_HS_HAT_REV12, MMDVM_HS_DUAL_HAT_REV10, NANO_HOTSPOT or NANO_DV_REV10 need to be defined" #endif extern "C" { @@ -247,7 +247,7 @@ extern "C" { } #endif -#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) #if defined(BIDIR_DATA_PIN) void EXTI3_IRQHandler(void) { @@ -284,7 +284,7 @@ void CIO::Init() #if defined(PI_HAT_7021_REV_02) GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE); -#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); #endif @@ -454,7 +454,7 @@ void CIO::Init() EXTI_InitStructure.EXTI_Line = EXTI_Line14; #endif -#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) #if defined(BIDIR_DATA_PIN) // Connect EXTI3 Line @@ -502,7 +502,7 @@ void CIO::startInt() NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; -#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) +#elif defined(ZUMSPOT_ADF7021) || defined(LIBRE_KIT_ADF7021) || defined(MMDVM_HS_HAT_REV12) || defined(MMDVM_HS_DUAL_HAT_REV10) || defined(NANO_HOTSPOT) || defined(NANO_DV_REV10) #if defined(BIDIR_DATA_PIN) // Enable and set EXTI3 Interrupt diff --git a/Makefile b/Makefile index 0fca467..0e7200f 100644 --- a/Makefile +++ b/Makefile @@ -400,6 +400,15 @@ ifneq ($(wildcard /usr/bin/stm32flash),) /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 200,-3,3:-200,3 /dev/ttyAMA0 endif +nano-dv: +ifneq ($(wildcard /usr/local/bin/stm32flash),) + /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 10,-14,14:-10,14 /dev/ttyAMA0 +endif + +ifneq ($(wildcard /usr/bin/stm32flash),) + /usr/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 10,-14,14:-10,14 /dev/ttyAMA0 +endif + zumspot-pi: ifneq ($(wildcard /usr/local/bin/stm32flash),) /usr/local/bin/stm32flash -v -w bin/$(BINBIN_F1) -g 0x0 -R -i 20,-21,21:-20,21 /dev/ttyAMA0 diff --git a/README.md b/README.md index 2fa6b53..7a9821e 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ Download the script (*.sh) that matches with your ZUMspot/MMDVM_HS board: - install_fw_rpi.sh: only for ZUMspot RPi board (KI6ZUM & VE2GZI) - install_fw_hshat.sh: only for MMDVM_HS_Hat board (DB9MAT & DF2ET) - install_fw_nanohs.sh: only for Nano hotSPOT board (BI7JTA) +- install_fw_nanodv.sh: only for Nano DV board (BG4TGO & BG5HHP) - install_fw_hsdualhat.sh: only for MMDVM_HS_Dual_Hat board (DB9MAT & DF2ET & DO7EN) - install_fw_librekit.sh: only for ZUMspot Libre Kit board (KI6ZUM & VE2GZI) or generic MMDVM_HS board - install_fw_usb.sh: only for ZUMspot USB dongle (KI6ZUM & VE2GZI) diff --git a/configs/MMDVM_HS_Dual_Hat.h b/configs/MMDVM_HS_Dual_Hat.h index 2895e04..a17c8bb 100644 --- a/configs/MMDVM_HS_Dual_Hat.h +++ b/configs/MMDVM_HS_Dual_Hat.h @@ -30,6 +30,8 @@ #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/MMDVM_HS_Hat.h b/configs/MMDVM_HS_Hat.h index 10edb6c..968c6a2 100644 --- a/configs/MMDVM_HS_Hat.h +++ b/configs/MMDVM_HS_Hat.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/NanoDV.h b/configs/NanoDV.h new file mode 100644 index 0000000..effc6a8 --- /dev/null +++ b/configs/NanoDV.h @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2018 by Andy Uribe CA6JAU + * + * 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 2 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, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#if !defined(CONFIG_H) +#define CONFIG_H + +// Select one board (STM32F103 based boards) +// 1) ZUMspot RPi or ZUMspot USB: +// #define ZUMSPOT_ADF7021 +// 2) Libre Kit board or any homebrew hotspot with modified RF7021SE and Blue Pill STM32F103: +// #define LIBRE_KIT_ADF7021 +// 3) MMDVM_HS_Hat revisions 1.1, 1.2 and 1.4 (DB9MAT & DF2ET) +// #define MMDVM_HS_HAT_REV12 +// 4) MMDVM_HS_Dual_Hat revisions 1.0 (DB9MAT & DF2ET & DO7EN) +// #define MMDVM_HS_DUAL_HAT_REV10 +// 5) Nano hotSPOT (BI7JTA) +// #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +#define NANO_DV_REV10 + +// Enable ADF7021 support: +#define ENABLE_ADF7021 + +// Enable full duplex support with dual ADF7021 (valid for homebrew hotspots only): +// #define DUPLEX + +// TCXO of the ADF7021 +// For 14.7456 MHz: +#define ADF7021_14_7456 +// For 12.2880 MHz: +// #define ADF7021_12_2880 + +// Host communication selection: +#define STM32_USART1_HOST +// #define STM32_USB_HOST + +// Enable mode detection: +#define ENABLE_SCAN_MODE + +// Send RSSI value: +#define SEND_RSSI_DATA + +// Enable Nextion LCD serial port repeater on USART2 (ZUMspot Libre Kit and ZUMspot RPi): +#define SERIAL_REPEATER + +// Enable Nextion LCD serial port repeater on USART1 (Do not use with STM32_USART1_HOST enabled): +// #define SERIAL_REPEATER_USART1 + +// Enable P25 Wide modulation: +// #define ENABLE_P25_WIDE + +// Disable mode LEDs blink during scan mode: +// #define QUIET_MODE_LEDS + +// Enable modem debug messages +// #define ENABLE_DEBUG + +#endif diff --git a/configs/Nano_hotSPOT.h b/configs/Nano_hotSPOT.h index 189ca82..2dd46e9 100644 --- a/configs/Nano_hotSPOT.h +++ b/configs/Nano_hotSPOT.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_Libre.h b/configs/ZUMspot_Libre.h index c42ddaf..d055d9e 100644 --- a/configs/ZUMspot_Libre.h +++ b/configs/ZUMspot_Libre.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_RPi.h b/configs/ZUMspot_RPi.h index 544b980..b27b144 100644 --- a/configs/ZUMspot_RPi.h +++ b/configs/ZUMspot_RPi.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_USB.h b/configs/ZUMspot_USB.h index a769074..5b5b837 100644 --- a/configs/ZUMspot_USB.h +++ b/configs/ZUMspot_USB.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/configs/ZUMspot_duplex.h b/configs/ZUMspot_duplex.h index a97ae71..9f36eac 100644 --- a/configs/ZUMspot_duplex.h +++ b/configs/ZUMspot_duplex.h @@ -30,6 +30,8 @@ // #define MMDVM_HS_DUAL_HAT_REV10 // 5) Nano hotSPOT (BI7JTA) // #define NANO_HOTSPOT +// 6) Nano DV revisions 1.0 (BG4TGO & BG5HHP) +// #define NANO_DV_REV10 // Enable ADF7021 support: #define ENABLE_ADF7021 diff --git a/scripts/build_fw.sh b/scripts/build_fw.sh index 6a7206c..30a9050 100755 --- a/scripts/build_fw.sh +++ b/scripts/build_fw.sh @@ -62,4 +62,10 @@ make mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nano_hotspot_fw.bin make clean +# Building Nano DV +cp ~/MMDVM_HS/configs/NanoDV.h ~/MMDVM_HS/Config.h +make +mv ~/MMDVM_HS/bin/mmdvm_f1.bin ~/MMDVM_HS/bin/nano_dv_fw.bin +make clean + cp ~/MMDVM_HS/configs/ZUMspot_Libre.h ~/MMDVM_HS/Config.h diff --git a/scripts/install_fw_nanodv.sh b/scripts/install_fw_nanodv.sh new file mode 100755 index 0000000..3503c7a --- /dev/null +++ b/scripts/install_fw_nanodv.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +# Copyright (C) 2018 by Andy Uribe CA6JAU + +# 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 2 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, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Configure latest version +FW_VERSION="v1.3.3" + +# Change USB-serial port name ONLY in macOS +MAC_DEV_USB_SER="/dev/cu.usbmodem1441" + +# Download latest firmware for Nano DV +curl -OL https://github.com/juribeparada/MMDVM_HS/releases/download/$FW_VERSION/nano_dv_fw.bin + +# Download STM32F10X_Lib (only for binary tools) +if [ ! -d "./STM32F10X_Lib/utils" ]; then + git clone https://github.com/juribeparada/STM32F10X_Lib +fi + +# Configure vars depending on OS +if [ $(uname -s) == "Linux" ]; then + DEV_USB_SER="/dev/ttyACM0" + if [ $(uname -m) == "x86_64" ]; then + echo "Linux 64-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux64/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux64/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux64/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux64/stm32flash" + elif [ $(uname -m) == "armv7l" ]; then + echo "Raspberry Pi 3 detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + elif [ $(uname -m) == "armv6l" ]; then + echo "Raspberry Pi 2 or Pi Zero W detected" + DFU_RST="./STM32F10X_Lib/utils/rpi32/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/rpi32/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/rpi32/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/rpi32/stm32flash" + else + echo "Linux 32-bit detected" + DFU_RST="./STM32F10X_Lib/utils/linux/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/linux/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/linux/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/linux/stm32flash" + fi +fi + +if [ $(uname -s) == "Darwin" ]; then + echo "macOS detected" + DEV_USB_SER=$MAC_DEV_USB_SER + DFU_RST="./STM32F10X_Lib/utils/macosx/upload-reset" + DFU_UTIL="./STM32F10X_Lib/utils/macosx/dfu-util" + ST_FLASH="./STM32F10X_Lib/utils/macosx/st-flash" + STM32FLASH="./STM32F10X_Lib/utils/macosx/stm32flash" +fi + +# Stop MMDVMHost process to free serial port +sudo killall MMDVMHost >/dev/null 2>&1 + +# Upload the firmware +eval sudo $STM32FLASH -v -w nano_hotspot_fw.bin -g 0x0 -R -i 10,-14,14:-10,14 /dev/ttyAMA0 + diff --git a/version.h b/version.h index 9d9aa6c..d52b141 100644 --- a/version.h +++ b/version.h @@ -24,8 +24,8 @@ #define VER_MAJOR "1" #define VER_MINOR "3" -#define VER_REV "3" -#define VERSION_DATE "20180224" +#define VER_REV "4" +#define VERSION_DATE "20180404" #if defined(ZUMSPOT_ADF7021) #define BOARD_INFO "ZUMspot" @@ -35,6 +35,8 @@ #define BOARD_INFO "MMDVM_HS_Dual_Hat" #elif defined(NANO_HOTSPOT) #define BOARD_INFO "Nano_hotSPOT" +#elif defined(NANO_DV_REV10) +#define BOARD_INFO "Nano_DV" #else #define BOARD_INFO "MMDVM_HS" #endif