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)
{
if (hardwareRevision == FORTINIF4_REV_2) {
if (hardwareRevision >= FORTINIF4_REV_2) {
featureSet(FEATURE_OSD);
}

View file

@ -33,22 +33,34 @@
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)
{
HWDetectPin = IOGetByTag(IO_TAG(HW_PIN));
IOInit(HWDetectPin, OWNER_SYSTEM, 0);
IOConfigGPIO(HWDetectPin, IOCFG_IPU);
HWDetectPinA = IOGetByTag(IO_TAG(HW_PIN_A));
IOInit(HWDetectPinA, OWNER_SYSTEM, 0);
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
// Check hardware revision
if (IORead(HWDetectPin)) {
if (IORead(HWDetectPinB)) {
if (IORead(HWDetectPinA)) {
hardwareRevision = FORTINIF4_REV_1;
} else {
hardwareRevision = FORTINIF4_REV_2;
}
} else {
if (IORead(HWDetectPinA)) {
hardwareRevision = FORTINIF4_REV_4;
} else {
hardwareRevision = FORTINIF4_REV_3;
}
}
}
void updateHardwareRevision(void)

View file

@ -23,7 +23,9 @@
typedef enum ftf4HardwareRevision_t {
FORTINIF4_UNKNOWN = 0,
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;
extern uint8_t hardwareRevision;

View file

@ -30,8 +30,17 @@
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, 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, CH3, PA2, TIM_USE_MOTOR, 0, 0 ), // S4_OUT - DMA1_ST1
#endif
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
#endif
};

View file

@ -19,19 +19,33 @@
*/
#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 USBD_PRODUCT_STRING "FortiniF4"
#endif
#define USE_TARGET_CONFIG
#define USE_HARDWARE_REVISION_DETECTION
#define HW_PIN PC14
#define HW_PIN_A PC14
#define HW_PIN_B PC8
/*--------------LED----------------*/
#define LED0_PIN PB5
#if defined(FF_FORTINIF4_REV03)
#define LED1_PIN PB4
#else
#define LED1_PIN PB6
#endif
/*---------------------------------*/
/*------------BEEPER---------------*/
#define USE_BEEPER
#if defined(FF_FORTINIF4_REV03)
#define BEEPER_PIN PB3
#else
#define BEEPER_PIN PB4
#endif
#define BEEPER_INVERTED
/*---------------------------------*/
@ -47,40 +61,42 @@
#define USE_MPU_DATA_READY_SIGNAL
#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_SPI_ICM20689
#define GYRO_ICM20689_ALIGN CW180_DEG
#define USE_ACC
#if !defined(FF_FORTINIF4_REV03)
#define MPU6000_CS_PIN SPI1_NSS_PIN
#define MPU6000_SPI_INSTANCE SPI1
#define USE_GYRO_SPI_MPU6000
#define GYRO_MPU6000_ALIGN CW180_DEG
#define USE_ACC_SPI_MPU6000
#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_SPI_MPU6500
#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_SPI_MPU6500
#define ACC_MPU6500_ALIGN CW180_DEG
/*---------------------------------*/
#if !defined(FF_FORTINIF4_REV03)
/*------------FLASH----------------*/
#define FLASH_CS_PIN PB3
#define FLASH_SPI_INSTANCE SPI3
@ -88,60 +104,102 @@
#define USE_FLASHFS
#define USE_FLASH_M25P16
/*---------------------------------*/
#endif
/*-------------OSD-----------------*/
#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_CS_PIN PB3
#define MAX7456_SPI_CS_PIN SPI3_NSS_PIN
#endif
#define MAX7456_SPI_CLK (SPI_CLOCK_STANDARD) // 10MHz
#define MAX7456_RESTORE_CLK (SPI_CLOCK_FAST)
/*---------------------------------*/
/*-----------USB-UARTs-------------*/
#define USE_VCP
//#define USB_DETECT_PIN PA8
//#define USB_DETECT_PIN NONE
//#define USE_USB_DETECT
#define USE_UART1
#define UART1_RX_PIN PA10
#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 UART4_TX_PIN PA0
#define UART4_RX_PIN PA1
#define USE_UART5
#define UART5_RX_PIN PD2
#define UART5_TX_PIN NONE
#define UART5_TX_PIN PC12
#define USE_UART6
#define UART6_RX_PIN PC7
#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
#endif
/*---------------------------------*/
/*-------------SPIs----------------*/
#define USE_SPI
#define USE_SPI_DEVICE_1
#if defined(FF_FORTINIF4_REV03)
#define SPI1_NSS_PIN PA4
#else
#define SPI1_NSS_PIN PA8
#endif
#define SPI1_SCK_PIN PA5
#define SPI1_MISO_PIN PA6
#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 SPI3_NSS_PIN PB3
#define SPI3_SCK_PIN PC10
#define SPI3_MISO_PIN PC11
#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----------------*/
#define USE_ADC
#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC