From ab75e8117f2a14e7ba7eaacead1cfef04b2423e9 Mon Sep 17 00:00:00 2001 From: peabody124 Date: Sun, 16 Jan 2011 02:45:34 +0000 Subject: [PATCH] OP-265 CC: Getting GPIO lines working git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@2443 ebee16cc-31ac-478f-84a7-5cbb03baadba --- flight/CopterControl/System/pios_board.c | 113 +---------------------- flight/PiOS/Boards/STM32103CB_CC_Rev1.h | 19 +++- 2 files changed, 17 insertions(+), 115 deletions(-) diff --git a/flight/CopterControl/System/pios_board.c b/flight/CopterControl/System/pios_board.c index fb030e38d..dafe014a4 100644 --- a/flight/CopterControl/System/pios_board.c +++ b/flight/CopterControl/System/pios_board.c @@ -83,105 +83,7 @@ void PIOS_Board_Init(void) { PIOS_WDG_Init(); } -/* MicroSD Interface - * - * NOTE: Leave this declared as const data so that it ends up in the - * .rodata section (ie. Flash) rather than in the .bss section (RAM). - */ -void PIOS_SPI_sdcard_irq_handler(void); -void DMA1_Channel2_IRQHandler() __attribute__ ((alias ("PIOS_SPI_sdcard_irq_handler"))); -void DMA1_Channel3_IRQHandler() __attribute__ ((alias ("PIOS_SPI_sdcard_irq_handler"))); -const struct pios_spi_cfg pios_spi_sdcard_cfg = { - .regs = SPI1, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256, /* Maximum divider (ie. slowest clock rate) */ - }, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .handler = PIOS_SPI_sdcard_irq_handler, - .flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2), - .init = { - .NVIC_IRQChannel = DMA1_Channel2_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel2, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel3, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_4, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - .sclk = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_5, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .miso = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .mosi = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -/* AHRS Interface +/* Flash/Accel Interface * * NOTE: Leave this declared as const data so that it ends up in the * .rodata section (ie. Flash) rather than in the .bss section (RAM). @@ -189,7 +91,7 @@ const struct pios_spi_cfg pios_spi_sdcard_cfg = { void PIOS_SPI_ahrs_irq_handler(void); void DMA1_Channel4_IRQHandler() __attribute__ ((alias ("PIOS_SPI_ahrs_irq_handler"))); void DMA1_Channel5_IRQHandler() __attribute__ ((alias ("PIOS_SPI_ahrs_irq_handler"))); -const struct pios_spi_cfg pios_spi_ahrs_cfg = { +const struct pios_spi_cfg pios_spi_flash_accel_cfg = { .regs = SPI2, .init = { .SPI_Mode = SPI_Mode_Master, @@ -285,21 +187,12 @@ const struct pios_spi_cfg pios_spi_ahrs_cfg = { */ struct pios_spi_dev pios_spi_devs[] = { { - .cfg = &pios_spi_sdcard_cfg, - }, - { - .cfg = &pios_spi_ahrs_cfg, + .cfg = &pios_spi_flash_accel_cfg, }, }; uint8_t pios_spi_num_devices = NELEMENTS(pios_spi_devs); -void PIOS_SPI_sdcard_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ -// PIOS_SPI_IRQ_Handler(PIOS_SDCARD_SPI); -} - void PIOS_SPI_ahrs_irq_handler(void) { /* Call into the generic code to handle the IRQ for this specific device */ diff --git a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h index 00547a1b5..7d681f31a 100644 --- a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h +++ b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h @@ -134,7 +134,8 @@ TIM4 | RC In 1 | Servo 3 | Servo 2 | Servo 1 // // See also pios_board.c //------------------------- -#define PIOS_SPI_OP 0 +#define PIOS_SPI_FLASH 0 +#define PIOS_SPI_ACCEL 0 //------------------------- // PIOS_USART @@ -289,10 +290,18 @@ TIM4 | RC In 1 | Servo 3 | Servo 2 | Servo 1 //------------------------- // GPIO //------------------------- -#define PIOS_GPIO_PORTS { } -#define PIOS_GPIO_PINS { } -#define PIOS_GPIO_CLKS { } -#define PIOS_GPIO_NUM 0 +#define PIOS_GPIO_1_PORT GPIOA +#define PIOS_GPIO_1_PIN GPIO_Pin_7 +#define PIOS_GPIO_1_GPIO_CLK RCC_APB2Periph_GPIOA + +#define PIOS_GPIO_PORTS { PIOS_GPIO_1_PORT } +#define PIOS_GPIO_PINS { PIOS_GPIO_1_PIN } +#define PIOS_GPIO_CLKS { PIOS_GPIO_1_GPIO_CLK } +#define PIOS_GPIO_NUM 1 + +#define PIOS_FLASH_ENABLE PIOS_GPIO_Off(0) +#define PIOS_FLASH_DISABLE PIOS_GPIO_On(0) + //------------------------- // USB