forked from cleanflight/cleanflight
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request cleanflight#1159 from Swift-Flyer/master
Initial support for F4BY target
- Loading branch information
Showing
3 changed files
with
273 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
|
||
#include <stdbool.h> | ||
#include <platform.h> | ||
#include "drivers/io.h" | ||
#include "drivers/pwm_mapping.h" | ||
#include "drivers/timer.h" | ||
|
||
const uint16_t multiPPM[] = { | ||
PWM1 | (MAP_TO_PPM_INPUT << 8), // input #1 | ||
PWM2 | (MAP_TO_PWM_INPUT << 8), | ||
PWM3 | (MAP_TO_PWM_INPUT << 8), | ||
PWM4 | (MAP_TO_PWM_INPUT << 8), | ||
PWM5 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM6 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM7 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM8 | (MAP_TO_SERVO_OUTPUT << 8), // input #8 | ||
PWM9 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1 | ||
PWM10 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #2 | ||
PWM11 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM12 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
PWM13 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM14 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM15 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
PWM16 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
0xFFFF | ||
}; | ||
|
||
const uint16_t multiPWM[] = { | ||
PWM1 | (MAP_TO_PWM_INPUT << 8), // input #1 | ||
PWM2 | (MAP_TO_PWM_INPUT << 8), | ||
PWM3 | (MAP_TO_PWM_INPUT << 8), | ||
PWM4 | (MAP_TO_PWM_INPUT << 8), | ||
PWM5 | (MAP_TO_PWM_INPUT << 8), | ||
PWM6 | (MAP_TO_PWM_INPUT << 8), | ||
PWM7 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM8 | (MAP_TO_SERVO_OUTPUT << 8), // input #8 | ||
PWM9 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1 | ||
PWM10 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #2 | ||
PWM11 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM12 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
PWM13 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM14 | (MAP_TO_MOTOR_OUTPUT << 8), | ||
PWM15 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
PWM16 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #4 or #6 | ||
0xFFFF | ||
}; | ||
|
||
const uint16_t airPPM[] = { | ||
PWM1 | (MAP_TO_PPM_INPUT << 8), // PPM input | ||
PWM9 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed | ||
PWM10 | (MAP_TO_MOTOR_OUTPUT << 8), // Swap to servo if needed | ||
PWM11 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM12 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM13 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM14 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM15 | (MAP_TO_SERVO_OUTPUT << 8), // Swap to servo if needed | ||
PWM16 | (MAP_TO_SERVO_OUTPUT << 8), // Swap to servo if needed | ||
PWM7 | (MAP_TO_SERVO_OUTPUT << 8), // Swap to servo if needed | ||
PWM6 | (MAP_TO_SERVO_OUTPUT << 8), // Swap to servo if needed | ||
PWM5 | (MAP_TO_SERVO_OUTPUT << 8), // Swap to servo if needed | ||
PWM4 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM3 | (MAP_TO_SERVO_OUTPUT << 8), | ||
PWM2 | (MAP_TO_SERVO_OUTPUT << 8), | ||
0xFFFF | ||
}; | ||
|
||
const uint16_t airPWM[] = { | ||
PWM1 | (MAP_TO_PWM_INPUT << 8), // input #1 | ||
PWM2 | (MAP_TO_PWM_INPUT << 8), | ||
PWM3 | (MAP_TO_PWM_INPUT << 8), | ||
PWM4 | (MAP_TO_PWM_INPUT << 8), | ||
PWM5 | (MAP_TO_PWM_INPUT << 8), | ||
PWM6 | (MAP_TO_PWM_INPUT << 8), | ||
PWM7 | (MAP_TO_PWM_INPUT << 8), | ||
PWM8 | (MAP_TO_PWM_INPUT << 8), // input #8 | ||
PWM9 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #1 | ||
PWM10 | (MAP_TO_MOTOR_OUTPUT << 8), // motor #2 | ||
PWM11 | (MAP_TO_SERVO_OUTPUT << 8), // servo #1 | ||
PWM12 | (MAP_TO_SERVO_OUTPUT << 8), // servo #2 | ||
PWM13 | (MAP_TO_SERVO_OUTPUT << 8), // servo #3 | ||
PWM14 | (MAP_TO_SERVO_OUTPUT << 8), // servo #4 | ||
PWM15 | (MAP_TO_SERVO_OUTPUT << 8), // servo #5 | ||
PWM15 | (MAP_TO_SERVO_OUTPUT << 8), // servo #6 | ||
0xFFFF | ||
}; | ||
|
||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = { | ||
{ TIM3, IO_TAG(PC9), TIM_Channel_4, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM3}, // S1_IN | ||
{ TIM3, IO_TAG(PC8), TIM_Channel_3, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM3}, // S2_IN | ||
{ TIM3, IO_TAG(PC6), TIM_Channel_1, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM3}, // S3_IN | ||
{ TIM3, IO_TAG(PC7), TIM_Channel_2, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM3}, // S4_IN | ||
{ TIM4, IO_TAG(PD15), TIM_Channel_4, TIM4_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM4}, // S5_IN | ||
{ TIM4, IO_TAG(PD14), TIM_Channel_3, TIM4_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM4}, // S6_IN | ||
{ TIM4, IO_TAG(PD13), TIM_Channel_2, TIM4_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM4}, // S7_IN | ||
{ TIM4, IO_TAG(PD12), TIM_Channel_1, TIM4_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM4}, // S8_IN | ||
|
||
{ TIM2, IO_TAG(PA0), TIM_Channel_1, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM2}, // S1_OUT | ||
{ TIM2, IO_TAG(PA1), TIM_Channel_2, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM2}, // S2_OUT | ||
{ TIM5, IO_TAG(PA2), TIM_Channel_3, TIM5_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM5}, // S3_OUT | ||
{ TIM5, IO_TAG(PA3), TIM_Channel_4, TIM5_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM5}, // S4_OUT | ||
{ TIM1, IO_TAG(PE9), TIM_Channel_1, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM1}, // S5_OUT | ||
{ TIM1, IO_TAG(PE11), TIM_Channel_2, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM1}, // S6_OUT | ||
{ TIM1, IO_TAG(PE13), TIM_Channel_3, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM1}, // S7_OUT | ||
{ TIM1, IO_TAG(PE14), TIM_Channel_4, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_TIM1}, // S8_OUT | ||
|
||
{ TIM9, IO_TAG(PE6), TIM_Channel_2, TIM1_BRK_TIM9_IRQn, 0, IOCFG_AF_PP, GPIO_AF_TIM9 }, // sonar echo if needed | ||
}; | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,156 @@ | ||
/* | ||
* This file is part of Cleanflight. | ||
* | ||
* Cleanflight is free software: you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License as published by | ||
* the Free Software Foundation, either version 3 of the License, or | ||
* (at your option) any later version. | ||
* | ||
* Cleanflight is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
* | ||
* You should have received a copy of the GNU General Public License | ||
* along with Cleanflight. If not, see <http://www.gnu.org/licenses/>. | ||
*/ | ||
|
||
#pragma once | ||
#define TARGET_BOARD_IDENTIFIER "F4BY" | ||
|
||
#define USBD_PRODUCT_STRING "Swift-Flyer F4BY" | ||
|
||
#define LED0 PE3 // Blue LED | ||
#define LED1 PE2 // Red LED | ||
#define LED2 PE1 // Green LED | ||
|
||
#define BEEPER PE5 | ||
#define BEEPER_INVERTED | ||
|
||
#define INVERTER PD3 | ||
#define INVERTER_USART USART6 | ||
|
||
|
||
|
||
// MPU6000 interrupts | ||
#define USE_MPU_DATA_READY_SIGNAL | ||
#define EXTI_CALLBACK_HANDLER_COUNT 2 // MPU data ready (mag disabled) | ||
#define MPU_INT_EXTI PB0 | ||
#define USE_EXTI | ||
|
||
#define MPU6000_CS_PIN PA4 | ||
#define MPU6000_SPI_INSTANCE SPI1 | ||
|
||
#define ACC | ||
#define USE_ACC_SPI_MPU6000 | ||
#define ACC_MPU6000_ALIGN CW90_DEG | ||
|
||
#define GYRO | ||
#define USE_GYRO_SPI_MPU6000 | ||
#define GYRO_MPU6000_ALIGN CW90_DEG | ||
|
||
#define MAG | ||
#define USE_MAG_HMC5883 | ||
#define MAG_HMC5883_ALIGN CW90_DEG | ||
|
||
#define BARO | ||
#define USE_BARO_MS5611 | ||
|
||
|
||
#define USE_SDCARD | ||
|
||
#define SDCARD_SPI_INSTANCE SPI2 | ||
#define SDCARD_SPI_CS_PIN PE15 | ||
|
||
// SPI2 is on the APB1 bus whose clock runs at 84MHz. Divide to under 400kHz for init: | ||
#define SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER 256 // 328kHz | ||
// Divide to under 25MHz for normal operation: | ||
#define SDCARD_SPI_FULL_SPEED_CLOCK_DIVIDER 4 // 21MHz | ||
|
||
|
||
#define SDCARD_DMA_CHANNEL_TX DMA1_Stream3 | ||
#define SDCARD_DMA_CHANNEL_TX_COMPLETE_FLAG DMA_FLAG_TCIF3 | ||
#define SDCARD_DMA_CLK RCC_AHB1Periph_DMA1 | ||
#define SDCARD_DMA_CHANNEL DMA_Channel_0 | ||
|
||
#define USABLE_TIMER_CHANNEL_COUNT 17 | ||
|
||
|
||
#define USE_VCP | ||
#define VBUS_SENSING_PIN PA9 | ||
|
||
#define USE_UART1 | ||
#define UART1_RX_PIN PB7 | ||
#define UART1_TX_PIN PB6 | ||
#define UART1_AHB1_PERIPHERALS RCC_AHB1Periph_DMA2 | ||
|
||
#define USE_UART2 | ||
#define UART2_RX_PIN PD6 | ||
#define UART2_TX_PIN PD5 | ||
|
||
#define USE_UART3 | ||
#define UART3_RX_PIN PD9 | ||
#define UART3_TX_PIN PD8 | ||
|
||
#define USE_UART4 | ||
#define UART4_RX_PIN PC11 | ||
#define UART4_TX_PIN PC10 | ||
|
||
|
||
#define USE_UART6 | ||
#define UART6_RX_PIN PC7 | ||
#define UART6_TX_PIN PC6 | ||
|
||
#define SERIAL_PORT_COUNT 6 //VCP, UART1, UART2, UART3, UART4, UART6 | ||
|
||
#define USE_SPI | ||
#define USE_SPI_DEVICE_1 | ||
#define SPI1_SCK_PIN PA5 | ||
#define SPI1_MISO_PIN PA6 | ||
#define SPI1_MOSI_PIN PA7 | ||
#define SPI1_NSS_PIN NONE | ||
|
||
#define USE_SPI_DEVICE_2 | ||
#define SPI2_NSS_PIN NONE | ||
#define SPI2_SCK_PIN PB13 | ||
#define SPI2_MISO_PIN PB14 | ||
#define SPI2_MOSI_PIN PB15 | ||
|
||
#define USE_SPI_DEVICE_3 | ||
#define SPI3_NSS_PIN PA15 | ||
#define SPI3_SCK_PIN PB3 | ||
#define SPI3_MISO_PIN PB4 | ||
#define SPI3_MOSI_PIN PB5 | ||
|
||
|
||
#define USE_I2C | ||
#define I2C_DEVICE (I2CDEV_2) | ||
#define I2C2_SCL PB10 | ||
#define I2C2_SDA PB11 | ||
|
||
#define BOARD_HAS_VOLTAGE_DIVIDER | ||
#define USE_ADC | ||
#define VBAT_ADC_PIN PC3 | ||
#define CURRENT_METER_ADC_PIN PC2 | ||
#define RSSI_ADC_PIN PC1 | ||
|
||
#define SENSORS_SET (SENSOR_ACC|SENSOR_MAG|SENSOR_BARO) | ||
|
||
#define DEFAULT_FEATURES (FEATURE_VBAT | FEATURE_BLACKBOX) | ||
#define DEFAULT_RX_FEATURE FEATURE_RX_PPM | ||
|
||
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT | ||
|
||
// Number of available PWM outputs | ||
#define MAX_PWM_OUTPUT_PORTS 15 | ||
|
||
#define USE_SERIAL_4WAY_BLHELI_INTERFACE | ||
|
||
#define TARGET_IO_PORTA 0xffff | ||
#define TARGET_IO_PORTB 0xffff | ||
#define TARGET_IO_PORTC 0xffff | ||
#define TARGET_IO_PORTD 0xffff | ||
#define TARGET_IO_PORTE 0xffff | ||
|
||
#define USED_TIMERS ( TIM_N(1) |TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(5) | TIM_N(8) | TIM_N(9)) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
F405_TARGETS += $(TARGET) | ||
FEATURES += SDCARD VCP | ||
|
||
TARGET_SRC = \ | ||
drivers/accgyro_spi_mpu6000.c \ | ||
drivers/barometer_ms5611.c \ | ||
drivers/compass_hmc5883l.c \ | ||
drivers/sonar_hcsr04.c \ | ||
drivers/max7456.c |