diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 1bb56b1d0..10d2165b3 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -110,16 +110,30 @@ extern "C" { #define PIN_OUTPUT 0x0001 #define PIN_PERIPHERAL 0x0002 #define PIN_ANALOG 0x0003 + #define PIN_PULL_MASK 0x000C #define PIN_PULLUP 0x0004 -#define PIN_NO_PULLUP 0x0000 -#define PIN_PULLDOWN 0x0008 -#define PIN_NO_PULLDOWN 0x0000 -#define PIN_PERI_MASK 0x00F0 -#define PIN_PUSHPULL 0x0000 -#define PIN_ODRAIN 0x8000 + #define PIN_PORT_MASK 0x0700 +#define PIN_PORTA 0x0000 +#define PIN_PORTB 0x0100 +#define PIN_PORTC 0x0200 +#define PIN_PORTD 0x0300 +#define PIN_PORTE 0x0400 +#define PIN_PORTF 0x0500 + +#define PIN_PERI_MASK 0x00F0 +#define PIN_PER_1 0x0010 +#define PIN_PER_2 0x0020 +#define PIN_PER_3 0x0030 +#define PIN_PER_5 0x0050 +#define PIN_PER_6 0x0060 +#define PIN_PER_8 0x0080 + #define PIN_SPEED_MASK 0x6000 +#define PIN_OS25 0x2000 +#define PIN_OS50 0x4000 +#define PIN_OS100 0x6000 void configure_pins( uint32_t pins, uint16_t config ); diff --git a/radio/src/targets/taranis/configure_pins.cpp b/radio/src/targets/taranis/configure_pins.cpp index 9d0824116..422c52a0f 100644 --- a/radio/src/targets/taranis/configure_pins.cpp +++ b/radio/src/targets/taranis/configure_pins.cpp @@ -65,10 +65,6 @@ void configure_pins( uint32_t pins, uint16_t config ) /* Output mode configuration*/ pgpio->OTYPER &= ~((GPIO_OTYPER_OT_0) << ((uint16_t)pos)) ; - if ( config & PIN_ODRAIN ) - { - pgpio->OTYPER |= (GPIO_OTYPER_OT_0) << pos ; - } } /* Pull-up Pull down resistor configuration*/ pgpio->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << ((uint16_t)pos * 2)); diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 977f00eb5..605201d32 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -210,23 +210,6 @@ #define GPIOTRNDET GPIOA #define PIN_TRNDET GPIO_Pin_8 -#define PIN_PORTA 0x0000 -#define PIN_PORTB 0x0100 -#define PIN_PORTC 0x0200 -#define PIN_PORTD 0x0300 -#define PIN_PORTE 0x0400 -#define PIN_PORTF 0x0500 -#define PIN_PER_1 0x0010 -#define PIN_PER_2 0x0020 -#define PIN_PER_3 0x0030 -#define PIN_PER_5 0x0050 -#define PIN_PER_6 0x0060 -#define PIN_PER_8 0x0080 -// #define PIN_OS2 0x0000 -#define PIN_OS25 0x2000 -#define PIN_OS50 0x4000 -#define PIN_OS100 0x6000 - // Cppm #define RCC_AHB1Periph_GPIO_INTPPM RCC_AHB1Periph_GPIOA #define PIN_INTPPM_OUT GPIO_Pin_10 // PA.10 diff --git a/radio/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp index 8aa8da39a..45c755820 100644 --- a/radio/src/targets/taranis/lcd_driver.cpp +++ b/radio/src/targets/taranis/lcd_driver.cpp @@ -55,10 +55,10 @@ void initLcdSpi() SPI3->CR1 |= SPI_CR1_MSTR ; // Make sure in case SSM/SSI needed to be set first SPI3->CR1 |= SPI_CR1_SPE ; - configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_PUSHPULL | PIN_OS25 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP ) ; - configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_PUSHPULL | PIN_OS50 | PIN_NO_PULLUP | PIN_PER_6 | PIN_PERIPHERAL ) ; + configure_pins( PIN_LCD_NCS, PIN_OUTPUT | PIN_PORTA | PIN_OS25) ; + configure_pins( PIN_LCD_RST, PIN_OUTPUT | PIN_PORTD | PIN_OS25) ; + configure_pins( PIN_LCD_A0, PIN_OUTPUT | PIN_PORTC | PIN_OS50) ; + configure_pins( PIN_LCD_MOSI|PIN_LCD_CLK, PIN_PORTC | PIN_OS50 | PIN_PER_6 | PIN_PERIPHERAL ) ; // NVIC_SetPriority( DMA1_Stream7_IRQn, 8 ) ; diff --git a/radio/src/targets/taranis/pulses_driver.cpp b/radio/src/targets/taranis/pulses_driver.cpp index 7a463c0f3..eab5f1a6b 100644 --- a/radio/src/targets/taranis/pulses_driver.cpp +++ b/radio/src/targets/taranis/pulses_driver.cpp @@ -323,7 +323,7 @@ static void init_pa10_ppm() //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_INTPPM, ENABLE); - configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_INTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_1 | PIN_OS25) ; RCC->APB2ENR |= RCC_APB2ENR_TIM1EN ; // Enable clock TIM1->CR1 &= ~TIM_CR1_CEN ; @@ -553,7 +553,7 @@ static void init_pa7_ppm() ppmStreamPtr[EXTERNAL_MODULE] = ppmStream[EXTERNAL_MODULE]; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN ; // Enable portA clock - configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_EXTPPM_OUT, PIN_PERIPHERAL | PIN_PORTA | PIN_PER_3 | PIN_OS25) ; RCC->APB2ENR |= RCC_APB2ENR_TIM8EN ; // Enable clock TIM8->CR1 &= ~TIM_CR1_CEN ; diff --git a/radio/src/targets/taranis/trainer_driver.cpp b/radio/src/targets/taranis/trainer_driver.cpp index 391a9c840..deac22b1f 100644 --- a/radio/src/targets/taranis/trainer_driver.cpp +++ b/radio/src/targets/taranis/trainer_driver.cpp @@ -48,7 +48,7 @@ void init_trainer_ppm() TrainerPulsePtr = ppmStream[TRAINER_MODULE]; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock - configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25 | PIN_PUSHPULL ) ; + configure_pins( PIN_TR_PPM_OUT, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2 | PIN_OS25) ; configure_pins( PIN_TR_PPM_IN, PIN_PORTA | PIN_INPUT ) ; RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock TIM3->CR1 &= ~TIM_CR1_CEN ; @@ -92,10 +92,22 @@ void set_trainer_ppm_parameters(uint32_t idleTime, uint32_t delay, uint32_t posi // Trainer capture, PC8, Timer 3 channel 3 void init_trainer_capture() { - RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN ; // Enable portC clock - configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ; - RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; // Enable clock + GPIO_InitTypeDef GPIO_InitStructure; + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); +#if 0 + configure_pins (PIN_TR_PPM_IN, PIN_PERIPHERAL | PIN_PORTC | PIN_PER_2) ; +#else + GPIO_InitStructure.GPIO_Pin = PIN_TR_PPM_IN; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(GPIO_TR_INOUT, &GPIO_InitStructure); + GPIO_PinAFConfig(GPIO_TR_INOUT, GPIO_PinSource8, GPIO_AF_TIM3); +#endif + + RCC->APB1ENR |= RCC_APB1ENR_TIM3EN ; TIM3->ARR = 0xFFFF ; TIM3->PSC = (PERI1_FREQUENCY * TIMER_MULT_APB1) / 2000000 - 1 ; // 0.5uS TIM3->CR2 = 0 ;