diff --git a/flight/targets/boards/gpsplatinum/board_hw_defs.c b/flight/targets/boards/gpsplatinum/board_hw_defs.c index cfd57d9c2..3f9e5d1d5 100644 --- a/flight/targets/boards/gpsplatinum/board_hw_defs.c +++ b/flight/targets/boards/gpsplatinum/board_hw_defs.c @@ -82,38 +82,33 @@ const struct pios_gpio_cfg *PIOS_BOARD_HW_DEFS_GetLedCfg(__attribute__((unused)) #include -/* Gyro 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). - */ -void PIOS_SPI_flash_irq_handler(void); -void DMA1_Channel2_IRQHandler() __attribute__((alias("PIOS_SPI_flash_irq_handler"))); -void DMA1_Channel3_IRQHandler() __attribute__((alias("PIOS_SPI_flash_irq_handler"))); -static const struct pios_spi_cfg pios_spi_flash_cfg_gpsp = { +void PIOS_SPI_mag_flash_irq_handler(void); +void DMA1_Channel2_3_IRQHandler() __attribute__((alias("PIOS_SPI_mag_flash_irq_handler"))); + + +static uint32_t pios_spi_mag_flash_id; +static const struct pios_spi_cfg pios_spi_mag_flash_cfg = { + .remap = GPIO_AF_0, .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_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_8, }, - .use_crc = false, .dma = { .ahb_clk = RCC_AHBPeriph_DMA1, .irq = { - .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), + .flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2), .init = { .NVIC_IRQChannel = DMA1_Channel2_3_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelPriority = PIOS_IRQ_PRIO_MID, .NVIC_IRQChannelCmd = ENABLE, }, }, @@ -128,7 +123,7 @@ static const struct pios_spi_cfg pios_spi_flash_cfg_gpsp = { .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, + .DMA_Priority = DMA_Priority_Medium, .DMA_M2M = DMA_M2M_Disable, }, }, @@ -142,17 +137,19 @@ static const struct pios_spi_cfg pios_spi_flash_cfg_gpsp = { .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, + .DMA_Priority = DMA_Priority_Medium, .DMA_M2M = DMA_M2M_Disable, }, }, }, + .use_crc = false, .sclk = { .gpio = GPIOA, .init = { .GPIO_Pin = GPIO_Pin_5, .GPIO_Speed = GPIO_Speed_10MHz, .GPIO_Mode = GPIO_Mode_AF, + .GPIO_OType = GPIO_OType_PP, }, }, .miso = { @@ -161,6 +158,7 @@ static const struct pios_spi_cfg pios_spi_flash_cfg_gpsp = { .GPIO_Pin = GPIO_Pin_6, .GPIO_Speed = GPIO_Speed_10MHz, .GPIO_Mode = GPIO_Mode_AF, + .GPIO_OType = GPIO_OType_OD, }, }, .mosi = { @@ -169,26 +167,36 @@ static const struct pios_spi_cfg pios_spi_flash_cfg_gpsp = { .GPIO_Pin = GPIO_Pin_7, .GPIO_Speed = GPIO_Speed_10MHz, .GPIO_Mode = GPIO_Mode_AF, + .GPIO_OType = GPIO_OType_PP, }, }, - .slave_count = 1, + .slave_count = 2, .ssel = { { .gpio = GPIOA, .init = { .GPIO_Pin = GPIO_Pin_4, .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, + .GPIO_Mode = GPIO_Mode_OUT, + .GPIO_OType = GPIO_OType_PP, + } + }, + { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_1, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_OUT, + .GPIO_OType = GPIO_OType_PP, } } }, }; -static uint32_t pios_spi_flash_id; -void PIOS_SPI_flash_irq_handler(void) +void PIOS_SPI_mag_flash_irq_handler(void) { /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_flash_id); + PIOS_SPI_IRQ_Handler(pios_spi_mag_flash_id); } #endif /* PIOS_INCLUDE_SPI */ diff --git a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h index 2a6878ebf..27b4fe853 100644 --- a/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h +++ b/flight/targets/boards/gpsplatinum/firmware/inc/pios_config.h @@ -64,7 +64,7 @@ #define PIOS_INCLUDE_USART //#define PIOS_INCLUDE_ADC //#define PIOS_INCLUDE_I2C -//#define PIOS_INCLUDE_SPI +#define PIOS_INCLUDE_SPI #define PIOS_INCLUDE_GPIO #define PIOS_INCLUDE_EXTI //#define PIOS_INCLUDE_WDG diff --git a/flight/targets/boards/gpsplatinum/firmware/pios_board.c b/flight/targets/boards/gpsplatinum/firmware/pios_board.c index f40fc0573..c7128ed2e 100644 --- a/flight/targets/boards/gpsplatinum/firmware/pios_board.c +++ b/flight/targets/boards/gpsplatinum/firmware/pios_board.c @@ -70,31 +70,10 @@ void PIOS_Board_Init(void) #if defined(PIOS_INCLUDE_SPI) /* Set up the SPI interface to the serial flash */ - if (PIOS_SPI_Init(&pios_spi_flash_accel_id, &pios_spi_flash_accel_cfg_cc3d)) { + if (PIOS_SPI_Init(&pios_spi_mag_flash_id, &pios_spi_mag_flash_cfg)) { PIOS_Assert(0); } - uintptr_t flash_id; - switch (bdinfo->board_rev) { - case BOARD_REVISION_CC: - if (PIOS_Flash_Jedec_Init(&flash_id, pios_spi_flash_accel_id, 1)) { - PIOS_DEBUG_Assert(0); - } - if (PIOS_FLASHFS_Logfs_Init(&pios_uavo_settings_fs_id, &flashfs_w25x_cfg, &pios_jedec_flash_driver, flash_id)) { - PIOS_DEBUG_Assert(0); - } - break; - case BOARD_REVISION_CC3D: - if (PIOS_Flash_Jedec_Init(&flash_id, pios_spi_flash_accel_id, 0)) { - PIOS_DEBUG_Assert(0); - } - if (PIOS_FLASHFS_Logfs_Init(&pios_uavo_settings_fs_id, &flashfs_m25p_cfg, &pios_jedec_flash_driver, flash_id)) { - PIOS_DEBUG_Assert(0); - } - break; - default: - PIOS_DEBUG_Assert(0); - } #endif /* Initialize the task monitor */