1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-19 22:35:23 +03:00

Merge pull request #6072 from AlienWiiBF/FortiniOSD_Rev3

Adding FortiniF4 Rev3 target
This commit is contained in:
Michael Keller 2018-06-10 00:05:16 +12:00 committed by GitHub
commit 26a4f762a1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 118 additions and 36 deletions

View file

@ -0,0 +1 @@
# FortiniF4 Rev3 (modified pinout)

View file

@ -34,7 +34,7 @@
void targetConfiguration(void) void targetConfiguration(void)
{ {
if (hardwareRevision == FORTINIF4_REV_2) { if (hardwareRevision >= FORTINIF4_REV_2) {
featureSet(FEATURE_OSD); featureSet(FEATURE_OSD);
} }

View file

@ -33,21 +33,33 @@
uint8_t hardwareRevision = FORTINIF4_UNKNOWN; uint8_t hardwareRevision = FORTINIF4_UNKNOWN;
static IO_t HWDetectPin = IO_NONE; static IO_t HWDetectPinA = IO_NONE;
static IO_t HWDetectPinB = IO_NONE;
void detectHardwareRevision(void) void detectHardwareRevision(void)
{ {
HWDetectPin = IOGetByTag(IO_TAG(HW_PIN)); HWDetectPinA = IOGetByTag(IO_TAG(HW_PIN_A));
IOInit(HWDetectPin, OWNER_SYSTEM, 0); IOInit(HWDetectPinA, OWNER_SYSTEM, 0);
IOConfigGPIO(HWDetectPin, IOCFG_IPU); IOConfigGPIO(HWDetectPinA, IOCFG_IPU);
HWDetectPinB = IOGetByTag(IO_TAG(HW_PIN_B));
IOInit(HWDetectPinB, OWNER_SYSTEM, 0);
IOConfigGPIO(HWDetectPinB, IOCFG_IPU);
delayMicroseconds(10); // allow configuration to settle delayMicroseconds(10); // allow configuration to settle
// Check hardware revision // Check hardware revision
if (IORead(HWDetectPin)) { if (IORead(HWDetectPinB)) {
hardwareRevision = FORTINIF4_REV_1; if (IORead(HWDetectPinA)) {
hardwareRevision = FORTINIF4_REV_1;
} else {
hardwareRevision = FORTINIF4_REV_2;
}
} else { } else {
hardwareRevision = FORTINIF4_REV_2; if (IORead(HWDetectPinA)) {
hardwareRevision = FORTINIF4_REV_4;
} else {
hardwareRevision = FORTINIF4_REV_3;
}
} }
} }

View file

@ -23,7 +23,9 @@
typedef enum ftf4HardwareRevision_t { typedef enum ftf4HardwareRevision_t {
FORTINIF4_UNKNOWN = 0, FORTINIF4_UNKNOWN = 0,
FORTINIF4_REV_1, // SPI Flash FORTINIF4_REV_1, // SPI Flash
FORTINIF4_REV_2 // OSD FORTINIF4_REV_2, // OSD
FORTINIF4_REV_3, // OSD Rev3
FORTINIF4_REV_4 // actually not used
} ftf4HardwareRevision_e; } ftf4HardwareRevision_e;
extern uint8_t hardwareRevision; extern uint8_t hardwareRevision;

View file

@ -30,8 +30,17 @@
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = { const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0, 0 ), // S1_OUT - DMA1_ST7 DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0, 0 ), // S1_OUT - DMA1_ST7
DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0, 0 ), // S2_OUT - DMA1_ST2 DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0, 0 ), // S2_OUT - DMA1_ST2
#if defined(FF_FORTINIF4_REV03)
DEF_TIM(TIM2, CH4, PB11, TIM_USE_MOTOR, 0, 1 ), // S3_OUT - DMA1_ST6
DEF_TIM(TIM2, CH3, PB10, TIM_USE_MOTOR, 0, 0 ), // S4_OUT - DMA1_ST1
#else
DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1 ), // S3_OUT - DMA1_ST6 DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1 ), // S3_OUT - DMA1_ST6
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0, 0 ), // S4_OUT - DMA1_ST1 DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0, 0 ), // S4_OUT - DMA1_ST1
#endif
DEF_TIM(TIM4, CH4, PB9, TIM_USE_PPM, 0, 0 ), // PPM IN DEF_TIM(TIM4, CH4, PB9, TIM_USE_PPM, 0, 0 ), // PPM IN
#if defined(FF_FORTINIF4_REV03)
DEF_TIM(TIM4, CH1, PB6, TIM_USE_LED, 0, 0 ), // LED - DMA1_ST0
#else
DEF_TIM(TIM4, CH2, PB7, TIM_USE_LED, 0, 0 ), // LED - DMA1_ST3 DEF_TIM(TIM4, CH2, PB7, TIM_USE_LED, 0, 0 ), // LED - DMA1_ST3
#endif
}; };

View file

@ -19,19 +19,33 @@
*/ */
#pragma once #pragma once
#if defined(FF_FORTINIF4_REV03)
#define TARGET_BOARD_IDENTIFIER "FOR3"
#define USBD_PRODUCT_STRING "FortiniF4_Rev03"
#else
#define TARGET_BOARD_IDENTIFIER "FORT" #define TARGET_BOARD_IDENTIFIER "FORT"
#define USBD_PRODUCT_STRING "FortiniF4" #define USBD_PRODUCT_STRING "FortiniF4"
#endif
#define USE_TARGET_CONFIG #define USE_TARGET_CONFIG
#define USE_HARDWARE_REVISION_DETECTION #define USE_HARDWARE_REVISION_DETECTION
#define HW_PIN PC14 #define HW_PIN_A PC14
#define HW_PIN_B PC8
/*--------------LED----------------*/ /*--------------LED----------------*/
#define LED0_PIN PB5 #define LED0_PIN PB5
#if defined(FF_FORTINIF4_REV03)
#define LED1_PIN PB4
#else
#define LED1_PIN PB6 #define LED1_PIN PB6
#endif
/*---------------------------------*/ /*---------------------------------*/
/*------------BEEPER---------------*/ /*------------BEEPER---------------*/
#define USE_BEEPER #define USE_BEEPER
#if defined(FF_FORTINIF4_REV03)
#define BEEPER_PIN PB3
#else
#define BEEPER_PIN PB4 #define BEEPER_PIN PB4
#endif
#define BEEPER_INVERTED #define BEEPER_INVERTED
/*---------------------------------*/ /*---------------------------------*/
@ -47,40 +61,42 @@
#define USE_MPU_DATA_READY_SIGNAL #define USE_MPU_DATA_READY_SIGNAL
#define ENSURE_MPU_DATA_READY_IS_LOW #define ENSURE_MPU_DATA_READY_IS_LOW
#define MPU6000_CS_PIN PA8
#define MPU6000_SPI_INSTANCE SPI1
#define MPU6500_CS_PIN PA8
#define MPU6500_SPI_INSTANCE SPI1
#define ICM20689_CS_PIN PA8
#define ICM20689_SPI_INSTANCE SPI1
#define USE_GYRO #define USE_GYRO
#define USE_GYRO_SPI_ICM20689 #define USE_ACC
#define GYRO_ICM20689_ALIGN CW180_DEG
#if !defined(FF_FORTINIF4_REV03)
#define MPU6000_CS_PIN SPI1_NSS_PIN
#define MPU6000_SPI_INSTANCE SPI1
#define USE_GYRO_SPI_MPU6000 #define USE_GYRO_SPI_MPU6000
#define GYRO_MPU6000_ALIGN CW180_DEG #define GYRO_MPU6000_ALIGN CW180_DEG
#define USE_ACC_SPI_MPU6000 #define USE_ACC_SPI_MPU6000
#define ACC_MPU6000_ALIGN CW180_DEG #define ACC_MPU6000_ALIGN CW180_DEG
#define ICM20689_CS_PIN SPI1_NSS_PIN
#define ICM20689_SPI_INSTANCE SPI1
#define USE_GYRO_SPI_ICM20689
#define GYRO_ICM20689_ALIGN CW180_DEG
#define USE_ACC_SPI_ICM20689
#define ACC_ICM20689_ALIGN CW180_DEG
#endif
#define MPU6500_CS_PIN SPI1_NSS_PIN
#define MPU6500_SPI_INSTANCE SPI1
#define USE_GYRO_MPU6500 #define USE_GYRO_MPU6500
#define USE_GYRO_SPI_MPU6500 #define USE_GYRO_SPI_MPU6500
#define GYRO_MPU6500_ALIGN CW180_DEG #define GYRO_MPU6500_ALIGN CW180_DEG
#define USE_ACC
#define USE_ACC_SPI_ICM20689
#define ACC_ICM20689_ALIGN CW180_DEG
#define USE_ACC_SPI_MPU6000
#define ACC_MPU6000_ALIGN CW180_DEG
#define USE_ACC_MPU6500 #define USE_ACC_MPU6500
#define USE_ACC_SPI_MPU6500 #define USE_ACC_SPI_MPU6500
#define ACC_MPU6500_ALIGN CW180_DEG #define ACC_MPU6500_ALIGN CW180_DEG
/*---------------------------------*/ /*---------------------------------*/
#if !defined(FF_FORTINIF4_REV03)
/*------------FLASH----------------*/ /*------------FLASH----------------*/
#define FLASH_CS_PIN PB3 #define FLASH_CS_PIN PB3
#define FLASH_SPI_INSTANCE SPI3 #define FLASH_SPI_INSTANCE SPI3
@ -88,60 +104,102 @@
#define USE_FLASHFS #define USE_FLASHFS
#define USE_FLASH_M25P16 #define USE_FLASH_M25P16
/*---------------------------------*/ /*---------------------------------*/
#endif
/*-------------OSD-----------------*/ /*-------------OSD-----------------*/
#define USE_MAX7456 #define USE_MAX7456
#if defined(FF_FORTINIF4_REV03)
#define MAX7456_SPI_INSTANCE SPI2
#define MAX7456_SPI_CS_PIN SPI2_NSS_PIN
#else
#define MAX7456_SPI_INSTANCE SPI3 #define MAX7456_SPI_INSTANCE SPI3
#define MAX7456_SPI_CS_PIN PB3 #define MAX7456_SPI_CS_PIN SPI3_NSS_PIN
#endif
#define MAX7456_SPI_CLK (SPI_CLOCK_STANDARD) // 10MHz #define MAX7456_SPI_CLK (SPI_CLOCK_STANDARD) // 10MHz
#define MAX7456_RESTORE_CLK (SPI_CLOCK_FAST) #define MAX7456_RESTORE_CLK (SPI_CLOCK_FAST)
/*---------------------------------*/ /*---------------------------------*/
/*-----------USB-UARTs-------------*/ /*-----------USB-UARTs-------------*/
#define USE_VCP #define USE_VCP
//#define USB_DETECT_PIN PA8 //#define USB_DETECT_PIN NONE
//#define USE_USB_DETECT //#define USE_USB_DETECT
#define USE_UART1 #define USE_UART1
#define UART1_RX_PIN PA10 #define UART1_RX_PIN PA10
#define UART1_TX_PIN PA9 #define UART1_TX_PIN PA9
#define USE_UART3
#define UART3_RX_PIN PB11
#define UART3_TX_PIN PB10
#define INVERTER_PIN_UART3 PC15
#define USE_UART4 #define USE_UART4
#define UART4_TX_PIN PA0 #define UART4_TX_PIN PA0
#define UART4_RX_PIN PA1 #define UART4_RX_PIN PA1
#define USE_UART5 #define USE_UART5
#define UART5_RX_PIN PD2 #define UART5_RX_PIN PD2
#define UART5_TX_PIN NONE #define UART5_TX_PIN PC12
#define USE_UART6 #define USE_UART6
#define UART6_RX_PIN PC7 #define UART6_RX_PIN PC7
#define UART6_TX_PIN PC6 #define UART6_TX_PIN PC6
#if defined(FF_FORTINIF4_REV03)
#define USE_UART2
#define UART2_RX_PIN PA3
#define UART2_TX_PIN PA2
#define USE_UART3
#define UART3_RX_PIN PC11
#define UART3_TX_PIN PC10
#define INVERTER_PIN_UART3 PC15
#define SERIAL_PORT_COUNT 7
#else
#define USE_UART3
#define UART3_RX_PIN PB11
#define UART3_TX_PIN PB10
#define INVERTER_PIN_UART3 PC15
#define SERIAL_PORT_COUNT 6 #define SERIAL_PORT_COUNT 6
#endif
/*---------------------------------*/ /*---------------------------------*/
/*-------------SPIs----------------*/ /*-------------SPIs----------------*/
#define USE_SPI #define USE_SPI
#define USE_SPI_DEVICE_1 #define USE_SPI_DEVICE_1
#if defined(FF_FORTINIF4_REV03)
#define SPI1_NSS_PIN PA4
#else
#define SPI1_NSS_PIN PA8 #define SPI1_NSS_PIN PA8
#endif
#define SPI1_SCK_PIN PA5 #define SPI1_SCK_PIN PA5
#define SPI1_MISO_PIN PA6 #define SPI1_MISO_PIN PA6
#define SPI1_MOSI_PIN PA7 #define SPI1_MOSI_PIN PA7
#if defined(FF_FORTINIF4_REV03)
#define USE_SPI_DEVICE_2
#define SPI2_NSS_PIN PB12
#define SPI2_SCK_PIN PB13
#define SPI2_MISO_PIN PB14
#define SPI2_MOSI_PIN PB15
#else
#define USE_SPI_DEVICE_3 #define USE_SPI_DEVICE_3
#define SPI3_NSS_PIN PB3 #define SPI3_NSS_PIN PB3
#define SPI3_SCK_PIN PC10 #define SPI3_SCK_PIN PC10
#define SPI3_MISO_PIN PC11 #define SPI3_MISO_PIN PC11
#define SPI3_MOSI_PIN PC12 #define SPI3_MOSI_PIN PC12
#endif
/*---------------------------------*/ /*---------------------------------*/
#if defined(FF_FORTINIF4_REV03)
/*-------------I2C-----------------*/
#define USE_I2C
#define USE_I2C_PULLUP
#define USE_I2C_DEVICE_3
#define I2C_DEVICE (I2CDEV_3)
#define I2C1_SCL PA8
#define I2C1_SDA PC9
/*---------------------------------*/
#endif
/*-------------ADCs----------------*/ /*-------------ADCs----------------*/
#define USE_ADC #define USE_ADC
#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC #define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC