From dc2c4efde59d185c7a4ee681e73f522a3a48cdee Mon Sep 17 00:00:00 2001 From: "bernet.andre@gmail.com" Date: Sat, 30 Mar 2013 16:17:56 +0000 Subject: [PATCH] [taranis] SD card detection, 2nd PPM initialised as input (temporary), external module powered up (temporary) --- src/taranis/board_taranis.cpp | 10 ++++++++++ src/taranis/board_taranis.h | 4 ++-- src/taranis/diskio.cpp | 12 ++++++++++-- src/taranis/hal.h | 12 +++++++++--- src/taranis/pulses_driver.cpp | 2 ++ 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/taranis/board_taranis.cpp b/src/taranis/board_taranis.cpp index 93446d7ca..5abb4eb7b 100644 --- a/src/taranis/board_taranis.cpp +++ b/src/taranis/board_taranis.cpp @@ -219,6 +219,16 @@ void boardInit() eepromInit(); sportInit(); usbInit(); + + //Temporary: Configure second PPM pin as input (done after USB init in case the lib already initialises USB_ID) + GPIO_InitTypeDef GPIO_InitStructure; + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO_EXTPPM, ENABLE); + GPIO_InitStructure.GPIO_Pin = PIN_EXTPPM_OUT; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(GPIO_EXTPPM, &GPIO_InitStructure); } #endif diff --git a/src/taranis/board_taranis.h b/src/taranis/board_taranis.h index b2bb7cc97..05659db3b 100644 --- a/src/taranis/board_taranis.h +++ b/src/taranis/board_taranis.h @@ -109,7 +109,7 @@ void sdInit(); void sdPoll10ms(); #define sdMountPoll() uint32_t sdMounted(); -#define SD_CARD_PRESENT() (1) +#define SD_CARD_PRESENT() (~SD_PRESENT_GPIO->IDR & SD_PRESENT_GPIO_Pin) #endif // Pulses driver @@ -164,7 +164,7 @@ void pwrOff(); #define setBacklight(xx) #define __BACKLIGHT_ON GPIO_SetBits(GPIOB, GPIO_Pin_BL) #define __BACKLIGHT_OFF GPIO_ResetBits(GPIOB, GPIO_Pin_BL) -#define IS_BACKLIGHT_ON() GPIO_IsSet(GPIOB, GPIO_Pin_BL) +#define IS_BACKLIGHT_ON() GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_BL) // EEPROM driver #if !defined(SIMU) diff --git a/src/taranis/diskio.cpp b/src/taranis/diskio.cpp index 8b59fc3fe..6462367da 100644 --- a/src/taranis/diskio.cpp +++ b/src/taranis/diskio.cpp @@ -156,7 +156,16 @@ static inline DWORD socket_is_write_protected(void) static void socket_cp_init(void) { - return; + GPIO_InitTypeDef GPIO_InitStructure; + + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_SD_PRESENT, ENABLE); + + GPIO_InitStructure.GPIO_Pin = SD_PRESENT_GPIO_Pin; + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; + GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; + GPIO_Init(SD_PRESENT_GPIO, &GPIO_InitStructure); } static inline DWORD socket_is_empty(void) @@ -364,7 +373,6 @@ void power_on (void) /* Enable SPI clock, SPI1: APB2, SPI2: APB1 */ RCC_APBPeriphClockCmd_SPI_SD(RCC_APBPeriph_SPI_SD, ENABLE); - card_power(1); socket_cp_init();//Empty return diff --git a/src/taranis/hal.h b/src/taranis/hal.h index 2ab41c749..73cd1dbdd 100644 --- a/src/taranis/hal.h +++ b/src/taranis/hal.h @@ -156,14 +156,15 @@ #define RCC_AHB1Periph_GPIOPWR RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD #define GPIOPWRLED GPIOC #define GPIOPWR GPIOD -#define GPIOTRNDET GPIOA -#define PIN_TRNDET GPIO_Pin_8 #define PIN_INT_RF_PWR GPIO_Pin_15 #define PIN_EXT_RF_PWR GPIO_Pin_8 // Trainer Port +#define GPIO_TR_INOUT GPIOC #define PIN_TR_PPM_IN GPIO_Pin_8 //PC.08 #define PIN_TR_PPM_OUT GPIO_Pin_9 //PC.09 +#define GPIOTRNDET GPIOA +#define PIN_TRNDET GPIO_Pin_8 // TODO merge these constants #define PIN_PER_1 0x0010 @@ -181,6 +182,10 @@ #define PIN_CPPM_OUT GPIO_Pin_7 //PA.07 #define GPIOCPPM GPIOA #define GPIO_PinSource_CPPM GPIO_PinSource7 +#define RCC_AHB1Periph_GPIO_EXTPPM RCC_AHB1Periph_GPIOA +#define PIN_EXTPPM_OUT GPIO_Pin_10 //PA.10 +#define GPIO_EXTPPM GPIOA +#define GPIO_PinSource_EXTPPM GPIO_PinSource10 // Heart Beat #define PIN_HEART_BEAT GPIO_Pin_7 //PC.07 @@ -274,7 +279,8 @@ #endif // SD - SPI2 -#define SD_PRESENT_GPIO GPIOD->IDR +#define RCC_AHB1Periph_SD_PRESENT RCC_AHB1Periph_GPIOD +#define SD_PRESENT_GPIO GPIOD #define SD_PRESENT_GPIO_Pin GPIO_Pin_9 //PD.09 #define GPIO_Pin_SPI_SD_CS GPIO_Pin_12 //PB.12 #define GPIO_Pin_SPI_SD_SCK GPIO_Pin_13 //PB.13 diff --git a/src/taranis/pulses_driver.cpp b/src/taranis/pulses_driver.cpp index 5deb168cc..36c84d98e 100644 --- a/src/taranis/pulses_driver.cpp +++ b/src/taranis/pulses_driver.cpp @@ -122,6 +122,7 @@ void disable_pxx() // Pin is AF1 function for timer 1 void init_main_ppm() { + EXTERNAL_RF_ON(); // Timer1 setupPulsesPPM() ; ppmStreamPtr = ppmStream ; @@ -163,6 +164,7 @@ void disable_main_ppm() NVIC_DisableIRQ(TIM1_UP_TIM10_IRQn) ; TIM1->DIER &= ~TIM_DIER_CC2IE & ~TIM_DIER_UIE ; TIM1->CR1 &= ~TIM_CR1_CEN ; + EXTERNAL_RF_OFF(); } extern "C" void TIM1_CC_IRQHandler()