From fcafb4d3740e21d68970608379e86afb63e0793c Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 20 Feb 2015 18:59:53 +0100 Subject: [PATCH] LCD, Power Button, Rotary Encoder now OK --- radio/src/targets/taranis/board_taranis.h | 2 +- radio/src/targets/taranis/hal.h | 23 +++++++++++---- radio/src/targets/taranis/lcd_driver.cpp | 32 ++++++++++++++++----- radio/src/targets/taranis/rotenc_driver.cpp | 10 +++---- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 963a92357..b2ae84fa6 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -244,7 +244,7 @@ void turnBacklightOff(void); #define setBacklight(xx) turnBacklightOn(xx, g_eeGeneral.backlightColor) #define __BACKLIGHT_ON turnBacklightOn(g_eeGeneral.backlightBright, g_eeGeneral.backlightColor) #define __BACKLIGHT_OFF turnBacklightOff() - #define IS_BACKLIGHT_ON() (TIM4->CCR4 != 0) || (TIM4->CCR2 != 0) + #define IS_BACKLIGHT_ON() (TIM_BL->CCR4 != 0) || (TIM_BL->CCR2 != 0) #else #define setBacklight(xx) TIM10->CCR1 = 100-xx #define __BACKLIGHT_ON TIM10->CCR1 = 100-g_eeGeneral.backlightBright diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 3468acb97..3009d57e1 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -324,14 +324,25 @@ #define PIN_FS_DP GPIO_Pin_12 // PA.12 // BackLight -#if defined (REVPLUS) - #define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOD - #define GPIO_Pin_BL GPIO_Pin_15 // PD.15 - #define Pin_BL_AF GPIO_AF_TIM4 +#if defined(REV9E) + #define TIM_BL TIM9 + #define GPIOBL GPIOE + #define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOE + #define Pin_BL_AF GPIO_AF_TIM9 + #define GPIO_Pin_BL GPIO_Pin_6 // PE.06 + #define GPIO_PinSource_BL GPIO_PinSource6 + #define Pin_BLW_AF GPIO_AF_TIM9 + #define GPIO_Pin_BLW GPIO_Pin_5 // PE.05 + #define GPIO_PinSource_BLW GPIO_PinSource5 +#elif defined (REVPLUS) + #define TIM_BL TIM4 #define GPIOBL GPIOD + #define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOD + #define Pin_BL_AF GPIO_AF_TIM4 + #define GPIO_Pin_BL GPIO_Pin_15 // PD.15 #define GPIO_PinSource_BL GPIO_PinSource15 - #define GPIO_Pin_BLW GPIO_Pin_13 // PD.13 #define Pin_BLW_AF GPIO_AF_TIM4 + #define GPIO_Pin_BLW GPIO_Pin_13 // PD.13 #define GPIO_PinSource_BLW GPIO_PinSource13 #else #define RCC_AHB1Periph_GPIOBL RCC_AHB1Periph_GPIOB @@ -353,7 +364,7 @@ #define PIN_LCD_CLK GPIO_Pin_10 // PC.10 #define PIN_LCD_NCS GPIO_Pin_15 // PA.15 #define PIN_LCD_A0 GPIO_Pin_11 // PC.11 - #define PIN_LCD_RST GPIO_Pin_12 // PD.12 + #define PIN_LCD_RST GPIO_Pin_15 // TOTO PD.12 #else #define RCC_AHB1Periph_LCD RCC_AHB1Periph_GPIOD #define GPIO_LCD_SPI GPIOD diff --git a/radio/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp index 4518662b0..9e26be336 100644 --- a/radio/src/targets/taranis/lcd_driver.cpp +++ b/radio/src/targets/taranis/lcd_driver.cpp @@ -271,8 +271,26 @@ static void LCD_BL_Config() RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOBL, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; -#if defined(REVPLUS) -// RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); +#if defined(REV9E) + GPIO_InitStructure.GPIO_Pin = GPIO_Pin_BL|GPIO_Pin_BLW; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; + GPIO_Init(GPIOBL, &GPIO_InitStructure); + GPIO_PinAFConfig(GPIOBL, GPIO_PinSource_BL, Pin_BL_AF); + GPIO_PinAFConfig(GPIOBL, GPIO_PinSource_BLW, Pin_BL_AF); + RCC->APB2ENR |= RCC_APB2ENR_TIM9EN ; // Enable clock + TIM9->ARR = 100 ; + TIM9->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 50000 - 1; // 20us * 100 = 2ms => 500Hz + TIM9->CCMR1 = TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 ; // PWM + TIM9->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 ; // PWM + TIM9->CCER = TIM_CCER_CC4E | TIM_CCER_CC2E ; + TIM9->CCR2 = 0 ; + TIM9->CCR4 = 80 ; + TIM9->EGR = 0 ; + TIM9->CR1 = TIM_CR1_CEN ; // Counter enable +#elif defined(REVPLUS) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_BL|GPIO_Pin_BLW; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; @@ -430,16 +448,16 @@ void lcdSetRefVolt(uint8_t val) AspiCmd(val+CONTRAST_OFS); //0--255 } -#if defined(REVPLUS) +#if defined(REV9E) || defined(REVPLUS) void turnBacklightOn(uint8_t level, uint8_t color) { - TIM4->CCR4 = ((100-level)*(20-color))/20; - TIM4->CCR2 = ((100-level)*color)/20; + TIM_BL->CCR4 = ((100-level)*(20-color))/20; + TIM_BL->CCR2 = ((100-level)*color)/20; } void turnBacklightOff(void) { - TIM4->CCR4 = 0; - TIM4->CCR2 = 0; + TIM_BL->CCR4 = 0; + TIM_BL->CCR2 = 0; } #endif diff --git a/radio/src/targets/taranis/rotenc_driver.cpp b/radio/src/targets/taranis/rotenc_driver.cpp index 125986906..419dbe37f 100644 --- a/radio/src/targets/taranis/rotenc_driver.cpp +++ b/radio/src/targets/taranis/rotenc_driver.cpp @@ -38,7 +38,7 @@ void rotencInit() { - configure_pins( 0x0060, PIN_INPUT | PIN_PULLUP | PIN_PORTE ) ; + configure_pins( GPIO_Pin_12|GPIO_Pin_13, PIN_INPUT | PIN_PULLUP | PIN_PORTD ) ; } void rotencEnd() @@ -51,18 +51,18 @@ void checkRotaryEncoder() { register uint32_t dummy ; - dummy = GPIOE->IDR ; // Read Rotary encoder ( PE6, PE5 ) - dummy >>= 5 ; + dummy = GPIOD->IDR ; // Read Rotary encoder ( PE6, PE5 ) + dummy >>= 12 ; dummy &= 0x03 ; // pick out the two bits if ( dummy != ( Rotary_position & 0x03 ) ) { if ( ( Rotary_position & 0x01 ) ^ ( ( dummy & 0x02) >> 1 ) ) { - ++x9de_rotenc; + --x9de_rotenc; } else { - --x9de_rotenc; + ++x9de_rotenc; } Rotary_position &= ~0x03 ; Rotary_position |= dummy ;