diff --git a/radio/src/targets/nv14/CMakeLists.txt b/radio/src/targets/nv14/CMakeLists.txt index 50aa59734..26c646dfe 100644 --- a/radio/src/targets/nv14/CMakeLists.txt +++ b/radio/src/targets/nv14/CMakeLists.txt @@ -4,6 +4,8 @@ option(FLYSKY_HALL_STICKS "sticks for FlySky hall sticks" ON) option(FLYSKY_HALL_STICKS_REVERSE "Reverse sticks for FlySky hall sticks" OFF) option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON) option(AFHDS2 "Support for AFHDS2" ON) +option(PXX1 "PXX1 protocol support" ON) +option(PXX2 "PXX2 protocol support" OFF) set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") set(CPU_TYPE STM32F4) @@ -14,8 +16,8 @@ set(STORAGE_FORMAT BIN) set(HAPTIC YES) set(GUI_DIR colorlcd) set(BITMAPS_DIR 480x272) -set(HARDWARE_EXTERNAL_MODULE YES) -set(AUX_SERIAL ON) +#set(HARDWARE_EXTERNAL_MODULE YES) +#set(AUX_SERIAL ON) # set(NAVIGATION_TYPE touch) set(TARGET_DIR nv14) add_definitions(-DHARDWARE_TRAINER_JACK) @@ -38,7 +40,8 @@ set(PCB_RF_BAUD 921600 CACHE STRING "INTERNAL_MODULE_BAUDRATE: ${RF_BAUD_RATE}") set_property(CACHE PCB_RF_BAUD PROPERTY STRINGS ${RF_BAUD_RATE}) set(FLAVOUR nv14) -add_definitions(-DPCBNV14 -DPCBFLYSKY -DINTERNAL_MODULE_BAUDRATE=${PCB_RF_BAUD}) +#add_definitions(-DPCBNV14 -DPCBFLYSKY -DINTERNAL_MODULE_BAUDRATE=${PCB_RF_BAUD}) +add_definitions(-DPCBNV14 -DPCBFLYSKY -DINTERNAL_MODULE_SERIAL -DAFHDS2_BAUDRATE=${PCB_RF_BAUD}) add_definitions(-DBATTERY_CHARGE) # -DSOFTWARE_VOLUME set(TARGET_SRC @@ -79,8 +82,9 @@ add_definitions(-DPWR_BUTTON_${PWR_BUTTON}) add_definitions(-DCROSSFIRE_NATIVE) add_definitions(-DFLYSKY_HALL_STICKS_REVERSE) add_definitions(-DFLYSKY_HALL_STICKS) +add_definitions(-DAFHDS2) add_definitions(-DHARDWARE_EXTERNAL_MODULE) -add_definitions(-DAUX_SERIAL) +#add_definitions(-DAUX_SERIAL) #add_definitions(-DFLYSKY_AUTO_POWER_DOWN) if(STICKS_DEAD_ZONE) @@ -105,7 +109,7 @@ if(DISK_CACHE) add_definitions(-DDISK_CACHE) endif() -set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp) +#set(AUX_SERIAL_DRIVER ../common/arm/stm32/aux_serial_driver.cpp) set(SRC ${SRC} @@ -116,7 +120,9 @@ set(GVAR_SCREEN model_gvars.cpp) set(TARGET_SRC ${TARGET_SRC} - extmodule_driver.cpp +# extmodule_driver.cpp + extmodule_helper.cpp + ../horus/extmodule_driver.cpp trainer_driver.cpp ../common/arm/stm32/intmodule_serial_driver.cpp ) diff --git a/radio/src/targets/nv14/hal.h b/radio/src/targets/nv14/hal.h index 4e4a73d73..e610ad797 100644 --- a/radio/src/targets/nv14/hal.h +++ b/radio/src/targets/nv14/hal.h @@ -394,9 +394,10 @@ #define INTMODULE_RCC_AHB1Periph (RCC_AHB1Periph_GPIOF | RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_DMA1) #define INTMODULE_PWR_GPIO GPIOH #define INTMODULE_PWR_GPIO_PIN GPIO_Pin_9 // PH.09 -#define INTMODULE_TX_GPIO GPIOF +#define INTMODULE_GPIO GPIOF +//#define INTMODULE_TX_GPIO GPIOF #define INTMODULE_TX_GPIO_PIN GPIO_Pin_7 // PF.07 -#define INTMODULE_RX_GPIO GPIOF +//#define INTMODULE_RX_GPIO GPIOF #define INTMODULE_RX_GPIO_PIN GPIO_Pin_6 // PF.06 #define INTMODULE_GPIO_PinSource_TX GPIO_PinSource7 #define INTMODULE_GPIO_PinSource_RX GPIO_PinSource6 @@ -404,28 +405,28 @@ #define INTMODULE_GPIO_AF GPIO_AF_UART7 #define INTMODULE_USART_IRQn UART7_IRQn #define INTMODULE_USART_IRQHandler UART7_IRQHandler -#define INTMODULE_RX_DMA_STREAM DMA1_Stream3 +#define INTMODULE_DMA_STREAM DMA1_Stream1 +#define INTMODULE_DMA_STREAM_IRQ DMA1_Stream1_IRQn +#define INTMODULE_DMA_STREAM_IRQHandler DMA2_Stream7_IRQHandler +#define INTMODULE_DMA_FLAG_TC DMA_IT_TCIF1 +#define INTMODULE_DMA_CHANNEL DMA_Channel_5 + +/*#define INTMODULE_RX_DMA_STREAM DMA1_Stream3 #define INTMODULE_RX_DMA_Stream_IRQn DMA1_Stream3_IRQn #define INTMODULE_RX_DMA_Stream_IRQHandler DMA1_Stream3_IRQHandler #define INTMODULE_TX_DMA_STREAM DMA1_Stream1 #define INTMODULE_TX_DMA_Stream_IRQn DMA1_Stream1_IRQn #define INTMODULE_TX_DMA_Stream_IRQHandler DMA1_Stream1_IRQHandler -#define INTMODULE_TX_DMA_FLAG_TC DMA_IT_TCIF1 -//TX new implementation -#define INTMODULE_DMA_STREAM DMA1_Stream1 -#define INTMODULE_DMA_CHANNEL DMA_Channel_5 -#define INTMODULE_GPIO INTMODULE_TX_GPIO -//#define INTMODULE_DMA_STREAM_IRQ INTMODULE_RX_DMA_Stream_IRQHandler -#define INTMODULE_DMA_STREAM_IRQ INTMODULE_TX_DMA_Stream_IRQn - -#define INTMODULE_RCC_APB1Periph (RCC_APB1Periph_UART7 | RCC_APB1Periph_TIM3) +#define INTMODULE_TX_DMA_FLAG_TC DMA_IT_TCIF1*/ +#define INTMODULE_RCC_APB1Periph (RCC_APB1Periph_UART7 | RCC_APB1Periph_TIM3) #define INTMODULE_RCC_APB2Periph 0 #define INTMODULE_TIMER TIM3 #define INTMODULE_TIMER_IRQn TIM3_IRQn #define INTMODULE_TIMER_IRQHandler TIM3_IRQHandler #define INTMODULE_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) + // External Module #define EXTMODULE #define EXTMODULE_PULSES @@ -449,9 +450,14 @@ #define EXTMODULE_RX_GPIO_AF_USART GPIO_AF_USART6 #define EXTMODULE_TIMER TIM8 #define EXTMODULE_TIMER_IRQn TIM8_CC_IRQn +#define EXTMODULE_TIMER_CC_IRQn TIM8_CC_IRQn #define EXTMODULE_TIMER_IRQHandler TIM8_CC_IRQHandler #define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2) +#define EXTMODULE_TIMER_TX_GPIO_AF GPIO_AF_TIM8 //USART +#define EXTMODULE_USART_GPIO GPIOC +#define EXTMODULE_USART_GPIO_AF GPIO_AF_USART6 + #define EXTMODULE_USART_TX_DMA_CHANNEL DMA_Channel_5 #define EXTMODULE_USART_TX_DMA_STREAM DMA2_Stream7 #define EXTMODULE_USART_TX_DMA_IRQn DMA2_Stream7_IRQn @@ -460,26 +466,39 @@ #define EXTMODULE_USART_RX_DMA_CHANNEL DMA_Channel_5 #define EXTMODULE_USART_RX_DMA_STREAM DMA2_Stream2 -#define EXTMODULE_USART_RX_DMA_IRQn DMA2_Stream5_IRQn -#define EXTMODULE_USART_RX_DMA_IRQHandler DMA2_Stream5_IRQHandler -#define EXTMODULE_USART_RX_DMA_FLAG_TC DMA_IT_TCIF5 +#define EXTMODULE_USART_RX_DMA_IRQn DMA2_Stream2_IRQn +#define EXTMODULE_USART_RX_DMA_IRQHandler DMA2_Stream2_IRQHandler +#define EXTMODULE_USART_RX_DMA_FLAG_TC DMA_IT_TCIF2 #define EXTMODULE_USART_IRQHandler USART6_IRQHandler #define EXTMODULE_USART_IRQn USART6_IRQn +#define EXTMODULE_TIMER_DMA_SIZE (DMA_SxCR_PSIZE_0 | DMA_SxCR_MSIZE_0) //TIMER #define EXTMODULE_DMA_CHANNEL DMA_Channel_7 #define EXTMODULE_DMA_STREAM DMA2_Stream1 #define EXTMODULE_DMA_IRQn DMA2_Stream1_IRQn #define EXTMODULE_DMA_IRQHandler DMA2_Stream1_IRQHandler #define EXTMODULE_DMA_FLAG_TC DMA_IT_TCIF1 -#define EXTMODULE_USART USART6 -#define EXTMODULE_TX_INVERT_GPIO GPIOE -#define EXTMODULE_TX_INVERT_GPIO_PIN GPIO_Pin_3 // PE.03 -#define EXTMODULE_RX_INVERT_GPIO GPIOI -#define EXTMODULE_RX_INVERT_GPIO_PIN GPIO_Pin_15 // PI.15 +#define EXTMODULE_TIMER_DMA_CHANNEL DMA_Channel_7 +#define EXTMODULE_TIMER_DMA_STREAM DMA2_Stream1 +#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream1_IRQn +#define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream1_IRQHandler +#define EXTMODULE_TIMER_DMA_FLAG_TC DMA_IT_TCIF1 +//#define EXTMODULE_USART USART6 + +#define EXTMODULE_TX_INVERT_GPIO GPIOE +#define EXTMODULE_TX_INVERT_GPIO_PIN GPIO_Pin_3 // PE.03 +#define EXTMODULE_RX_INVERT_GPIO GPIOI +#define EXTMODULE_RX_INVERT_GPIO_PIN GPIO_Pin_15 // PI.15 + + +#define EXTMODULE_TX_NORMAL() EXTMODULE_TX_INVERT_GPIO->BSRRH = EXTMODULE_TX_INVERT_GPIO_PIN +#define EXTMODULE_TX_INVERTED() EXTMODULE_TX_INVERT_GPIO->BSRRL = EXTMODULE_TX_INVERT_GPIO_PIN +#define EXTMODULE_RX_NORMAL() EXTMODULE_TX_INVERT_GPIO->BSRRH = EXTMODULE_RX_INVERT_GPIO_PIN +#define EXTMODULE_RX_INVERTED() EXTMODULE_TX_INVERT_GPIO->BSRRL = EXTMODULE_RX_INVERT_GPIO_PIN // Heartbeat (not used) #define HEARTBEAT_RCC_AHB1Periph RCC_AHB1Periph_GPIOD