1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 21:05:35 +03:00
This commit is contained in:
KiteAnton 2016-07-15 19:18:45 +02:00
commit 1d9d6f6bf0
36 changed files with 569 additions and 583 deletions

View file

@ -546,10 +546,17 @@ VPATH := $(VPATH):$(STDPERIPH_DIR)/src
# Things that might need changing to use different tools # Things that might need changing to use different tools
# #
# Find out if ccache is installed on the system
CCACHE := ccache
RESULT = $(shell (which $(CCACHE) > /dev/null 2>&1; echo $$?) )
ifneq ($(RESULT),0)
CCACHE :=
endif
# Tool names # Tool names
CC = arm-none-eabi-gcc CC := $(CCACHE) arm-none-eabi-gcc
OBJCOPY = arm-none-eabi-objcopy OBJCOPY := arm-none-eabi-objcopy
SIZE = arm-none-eabi-size SIZE := arm-none-eabi-size
# #
# Tool options. # Tool options.

View file

@ -24,9 +24,6 @@
#include "build_config.h" #include "build_config.h"
#include "system.h" #include "system.h"
#include "sensors/sensors.h" // FIXME dependency into the main code
#include "sensor.h" #include "sensor.h"
#include "accgyro.h" #include "accgyro.h"
#include "adc.h" #include "adc.h"
@ -84,7 +81,6 @@ void adcInit(drv_adc_config_t *init)
UNUSED(init); UNUSED(init);
#endif #endif
uint8_t i;
uint8_t configuredAdcChannels = 0; uint8_t configuredAdcChannels = 0;
memset(&adcConfig, 0, sizeof(adcConfig)); memset(&adcConfig, 0, sizeof(adcConfig));
@ -117,9 +113,9 @@ void adcInit(drv_adc_config_t *init)
if (device == ADCINVALID) if (device == ADCINVALID)
return; return;
adcDevice_t adc = adcHardware[device]; const adcDevice_t adc = adcHardware[device];
for (uint8_t i = 0; i < ADC_CHANNEL_COUNT; i++) { for (int i = 0; i < ADC_CHANNEL_COUNT; i++) {
if (!adcConfig[i].tag) if (!adcConfig[i].tag)
continue; continue;
@ -163,7 +159,7 @@ void adcInit(drv_adc_config_t *init)
ADC_Init(adc.ADCx, &ADC_InitStructure); ADC_Init(adc.ADCx, &ADC_InitStructure);
uint8_t rank = 1; uint8_t rank = 1;
for (i = 0; i < ADC_CHANNEL_COUNT; i++) { for (int i = 0; i < ADC_CHANNEL_COUNT; i++) {
if (!adcConfig[i].enabled) { if (!adcConfig[i].enabled) {
continue; continue;
} }

View file

@ -21,7 +21,6 @@
#include "platform.h" #include "platform.h"
#include "system.h" #include "system.h"
#include "common/utils.h"
#include "gpio.h" #include "gpio.h"
#include "sensor.h" #include "sensor.h"
@ -32,6 +31,8 @@
#include "io.h" #include "io.h"
#include "rcc.h" #include "rcc.h"
#include "common/utils.h"
#ifndef ADC_INSTANCE #ifndef ADC_INSTANCE
#define ADC_INSTANCE ADC1 #define ADC_INSTANCE ADC1
#endif #endif
@ -100,7 +101,6 @@ void adcInit(drv_adc_config_t *init)
ADC_InitTypeDef ADC_InitStructure; ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure; DMA_InitTypeDef DMA_InitStructure;
uint8_t i;
uint8_t adcChannelCount = 0; uint8_t adcChannelCount = 0;
memset(&adcConfig, 0, sizeof(adcConfig)); memset(&adcConfig, 0, sizeof(adcConfig));
@ -135,7 +135,7 @@ void adcInit(drv_adc_config_t *init)
adcDevice_t adc = adcHardware[device]; adcDevice_t adc = adcHardware[device];
for (uint8_t i = 0; i < ADC_CHANNEL_COUNT; i++) { for (int i = 0; i < ADC_CHANNEL_COUNT; i++) {
if (!adcConfig[i].tag) if (!adcConfig[i].tag)
continue; continue;
@ -203,7 +203,7 @@ void adcInit(drv_adc_config_t *init)
ADC_Init(adc.ADCx, &ADC_InitStructure); ADC_Init(adc.ADCx, &ADC_InitStructure);
uint8_t rank = 1; uint8_t rank = 1;
for (i = 0; i < ADC_CHANNEL_COUNT; i++) { for (int i = 0; i < ADC_CHANNEL_COUNT; i++) {
if (!adcConfig[i].enabled) { if (!adcConfig[i].enabled) {
continue; continue;
} }

View file

@ -26,8 +26,6 @@
#include "io_impl.h" #include "io_impl.h"
#include "rcc.h" #include "rcc.h"
#include "sensors/sensors.h" // FIXME dependency into the main code
#include "sensor.h" #include "sensor.h"
#include "accgyro.h" #include "accgyro.h"

View file

@ -31,8 +31,6 @@
#define SPI_IO_AF_MOSI_CFG IO_CONFIG(GPIO_Mode_AF_PP, GPIO_Speed_50MHz) #define SPI_IO_AF_MOSI_CFG IO_CONFIG(GPIO_Mode_AF_PP, GPIO_Speed_50MHz)
#define SPI_IO_AF_MISO_CFG IO_CONFIG(GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz) #define SPI_IO_AF_MISO_CFG IO_CONFIG(GPIO_Mode_IN_FLOATING, GPIO_Speed_50MHz)
#define SPI_IO_CS_CFG IO_CONFIG(GPIO_Mode_Out_PP, GPIO_Speed_50MHz) #define SPI_IO_CS_CFG IO_CONFIG(GPIO_Mode_Out_PP, GPIO_Speed_50MHz)
#else
#error "Unknown processor"
#endif #endif
/* /*

View file

@ -78,15 +78,14 @@ uint8_t ledPolarity = 0
#endif #endif
; ;
uint8_t ledOffset = 0; static uint8_t ledOffset = 0;
void ledInit(bool alternative_led) void ledInit(bool alternative_led)
{ {
uint32_t i;
#if defined(LED0_A) || defined(LED1_A) || defined(LED2_A) #if defined(LED0_A) || defined(LED1_A) || defined(LED2_A)
if (alternative_led) if (alternative_led) {
ledOffset = LED_NUMBER; ledOffset = LED_NUMBER;
}
#else #else
UNUSED(alternative_led); UNUSED(alternative_led);
#endif #endif
@ -95,7 +94,7 @@ void ledInit(bool alternative_led)
LED1_OFF; LED1_OFF;
LED2_OFF; LED2_OFF;
for (i = 0; i < LED_NUMBER; i++) { for (int i = 0; i < LED_NUMBER; i++) {
if (leds[i + ledOffset]) { if (leds[i + ledOffset]) {
IOInit(leds[i + ledOffset], OWNER_LED, RESOURCE_OUTPUT, RESOURCE_INDEX(i)); IOInit(leds[i + ledOffset], OWNER_LED, RESOURCE_OUTPUT, RESOURCE_INDEX(i));
IOConfigGPIO(leds[i + ledOffset], IOCFG_OUT_PP); IOConfigGPIO(leds[i + ledOffset], IOCFG_OUT_PP);
@ -114,6 +113,6 @@ void ledToggle(int led)
void ledSet(int led, bool on) void ledSet(int led, bool on)
{ {
bool inverted = (1 << (led + ledOffset)) & ledPolarity; const bool inverted = (1 << (led + ledOffset)) & ledPolarity;
IOWrite(leds[led + ledOffset], on ? inverted : !inverted); IOWrite(leds[led + ledOffset], on ? inverted : !inverted);
} }

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
#define RESOURCE_INDEX(x) x + 1 #define RESOURCE_INDEX(x) (x + 1)
typedef enum { typedef enum {
OWNER_FREE = 0, OWNER_FREE = 0,

View file

@ -192,6 +192,11 @@ static void sdcard_deselect(void)
*/ */
static void sdcard_reset(void) static void sdcard_reset(void)
{ {
if (!sdcard_isInserted()) {
sdcard.state = SDCARD_STATE_NOT_PRESENT;
return;
}
if (sdcard.state >= SDCARD_STATE_READY) { if (sdcard.state >= SDCARD_STATE_READY) {
spiSetDivisor(SDCARD_SPI_INSTANCE, SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER); spiSetDivisor(SDCARD_SPI_INSTANCE, SDCARD_SPI_INITIALIZATION_CLOCK_DIVIDER);
} }

View file

@ -2926,6 +2926,10 @@ static void cliStatus(char *cmdline)
#endif #endif
cliPrintf("Cycle Time: %d, I2C Errors: %d, config size: %d\r\n", cycleTime, i2cErrorCounter, sizeof(master_t)); cliPrintf("Cycle Time: %d, I2C Errors: %d, config size: %d\r\n", cycleTime, i2cErrorCounter, sizeof(master_t));
#ifdef USE_SDCARD
cliSdInfo(NULL);
#endif
} }
#ifndef SKIP_TASK_STATISTICS #ifndef SKIP_TASK_STATISTICS

View file

@ -28,11 +28,12 @@
#include "drivers/sensor.h" #include "drivers/sensor.h"
#include "drivers/accgyro.h" #include "drivers/accgyro.h"
#include "sensors/sensors.h"
#include "io/beeper.h" #include "io/beeper.h"
#include "io/statusindicator.h" #include "io/statusindicator.h"
#include "sensors/boardalignment.h"
#include "sensors/sensors.h"
#include "sensors/boardalignment.h"
#include "sensors/gyro.h" #include "sensors/gyro.h"
gyro_t gyro; // gyro access functions gyro_t gyro; // gyro access functions

View file

@ -118,9 +118,15 @@ static bool fakeGyroReadTemp(int16_t *tempData)
return true; return true;
} }
static bool fakeGyroInitStatus(void) {
return true;
}
bool fakeGyroDetect(gyro_t *gyro) bool fakeGyroDetect(gyro_t *gyro)
{ {
gyro->init = fakeGyroInit; gyro->init = fakeGyroInit;
gyro->intStatus = fakeGyroInitStatus;
gyro->read = fakeGyroRead; gyro->read = fakeGyroRead;
gyro->temperature = fakeGyroReadTemp; gyro->temperature = fakeGyroReadTemp;
gyro->scale = 1.0f / 16.4f; gyro->scale = 1.0f / 16.4f;
@ -143,6 +149,7 @@ bool fakeAccDetect(acc_t *acc)
{ {
acc->init = fakeAccInit; acc->init = fakeAccInit;
acc->read = fakeAccRead; acc->read = fakeAccRead;
acc->acc_1G = 512*8;
acc->revisionCode = 0; acc->revisionCode = 0;
return true; return true;
} }
@ -584,10 +591,14 @@ void reconfigureAlignment(sensorAlignmentConfig_t *sensorAlignmentConfig)
} }
} }
bool sensorsAutodetect(sensorAlignmentConfig_t *sensorAlignmentConfig, uint8_t accHardwareToUse, uint8_t magHardwareToUse, uint8_t baroHardwareToUse, int16_t magDeclinationFromConfig, uint8_t gyroLpf, uint8_t gyroSyncDenominator) bool sensorsAutodetect(sensorAlignmentConfig_t *sensorAlignmentConfig,
uint8_t accHardwareToUse,
uint8_t magHardwareToUse,
uint8_t baroHardwareToUse,
int16_t magDeclinationFromConfig,
uint8_t gyroLpf,
uint8_t gyroSyncDenominator)
{ {
int16_t deg, min;
memset(&acc, 0, sizeof(acc)); memset(&acc, 0, sizeof(acc));
memset(&gyro, 0, sizeof(gyro)); memset(&gyro, 0, sizeof(gyro));
@ -605,7 +616,6 @@ bool sensorsAutodetect(sensorAlignmentConfig_t *sensorAlignmentConfig, uint8_t a
detectAcc(accHardwareToUse); detectAcc(accHardwareToUse);
detectBaro(baroHardwareToUse); detectBaro(baroHardwareToUse);
// Now time to init things, acc first // Now time to init things, acc first
if (sensors(SENSOR_ACC)) { if (sensors(SENSOR_ACC)) {
acc.acc_1G = 256; // set default acc.acc_1G = 256; // set default
@ -623,9 +633,8 @@ bool sensorsAutodetect(sensorAlignmentConfig_t *sensorAlignmentConfig, uint8_t a
// FIXME extract to a method to reduce dependencies, maybe move to sensors_compass.c // FIXME extract to a method to reduce dependencies, maybe move to sensors_compass.c
if (sensors(SENSOR_MAG)) { if (sensors(SENSOR_MAG)) {
// calculate magnetic declination // calculate magnetic declination
deg = magDeclinationFromConfig / 100; const int16_t deg = magDeclinationFromConfig / 100;
min = magDeclinationFromConfig % 100; const int16_t min = magDeclinationFromConfig % 100;
magneticDeclination = (deg + ((float)min * (1.0f / 60.0f))) * 10; // heading is in 0.1deg units magneticDeclination = (deg + ((float)min * (1.0f / 60.0f))) * 10; // heading is in 0.1deg units
} else { } else {
magneticDeclination = 0.0f; // TODO investigate if this is actually needed if there is no mag sensor or if the value stored in the config should be used. magneticDeclination = 0.0f; // TODO investigate if this is actually needed if there is no mag sensor or if the value stored in the config should be used.

View file

@ -24,10 +24,8 @@
#define LED0 PB5 // Blue LED - PB5 #define LED0 PB5 // Blue LED - PB5
#define BEEPER PA0 #define BEEPER PA0
#define USABLE_TIMER_CHANNEL_COUNT 9 #define USABLE_TIMER_CHANNEL_COUNT 9
// MPU6050 interrupts // MPU6050 interrupts
@ -44,7 +42,6 @@
#define GYRO_MPU6050_ALIGN CW180_DEG #define GYRO_MPU6050_ALIGN CW180_DEG
#define USE_ACC_MPU6050 #define USE_ACC_MPU6050
#define ACC_MPU6050_ALIGN CW180_DEG #define ACC_MPU6050_ALIGN CW180_DEG
#define USE_GYRO_SPI_MPU6000 #define USE_GYRO_SPI_MPU6000
@ -52,7 +49,6 @@
#define USE_ACC_SPI_MPU6000 #define USE_ACC_SPI_MPU6000
#define ACC_MPU6000_ALIGN CW180_DEG #define ACC_MPU6000_ALIGN CW180_DEG
#define MPU6000_CS_GPIO GPIOB
#define MPU6000_CS_PIN PB12 #define MPU6000_CS_PIN PB12
#define MPU6000_SPI_INSTANCE SPI2 #define MPU6000_SPI_INSTANCE SPI2
@ -74,7 +70,6 @@
#define UART2_TX_PIN PB3 #define UART2_TX_PIN PB3
#define UART2_RX_PIN PB4 #define UART2_RX_PIN PB4
#define UART3_TX_PIN PB10 //(AF7) #define UART3_TX_PIN PB10 //(AF7)
#define UART3_RX_PIN PB11 //(AF7) #define UART3_RX_PIN PB11 //(AF7)

View file

@ -26,14 +26,14 @@
#define HW_PIN PB2 #define HW_PIN PB2
// LED's V1 // LED's V1
#define LED0 PB4 // LED - PB4 #define LED0 PB4
#define LED1 PB5 // LED - PB5 #define LED1 PB5
// LED's V2 // LED's V2
#define LED0_A PB8 // LED - PB8 #define LED0_A PB8
#define LED1_A PB9 // LED - PB9 #define LED1_A PB9
#define BEEPER PA5 // LED - PA5 #define BEEPER PA5
#define USABLE_TIMER_CHANNEL_COUNT 11 #define USABLE_TIMER_CHANNEL_COUNT 11
@ -65,7 +65,6 @@
// option to use MPU9150 or MPU9250 integrated AK89xx Mag // option to use MPU9150 or MPU9250 integrated AK89xx Mag
#define MAG #define MAG
#define USE_MAG_AK8963 #define USE_MAG_AK8963
#define MAG_AK8963_ALIGN CW0_DEG_FLIP #define MAG_AK8963_ALIGN CW0_DEG_FLIP
#define USE_VCP #define USE_VCP
@ -74,14 +73,14 @@
#define USE_UART3 // Not connected - 10/RX (PB11) 11/TX (PB10) #define USE_UART3 // Not connected - 10/RX (PB11) 11/TX (PB10)
#define SERIAL_PORT_COUNT 4 #define SERIAL_PORT_COUNT 4
#define UART1_TX_PIN PB6 // PB6 #define UART1_TX_PIN PB6
#define UART1_RX_PIN PB7 // PB7 #define UART1_RX_PIN PB7
#define UART2_TX_PIN PA2 // PA2 #define UART2_TX_PIN PA2
#define UART2_RX_PIN PA3 // PA3 #define UART2_RX_PIN PA3
#define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_TX_PIN PB10
#define UART3_RX_PIN PB11 // PB11 (AF7) #define UART3_RX_PIN PB11
#define USE_I2C #define USE_I2C
#define I2C_DEVICE (I2CDEV_2) // SDA (PA10/AF4), SCL (PA9/AF4) #define I2C_DEVICE (I2CDEV_2) // SDA (PA10/AF4), SCL (PA9/AF4)
@ -130,6 +129,5 @@
#define TARGET_IO_PORTD (BIT(2)) #define TARGET_IO_PORTD (BIT(2))
#define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4)) #define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4))
#define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(15) | TIM_N(17) ) #define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(15) | TIM_N(17) )

View file

@ -121,9 +121,7 @@
#define SERIAL_PORT_COUNT 4 #define SERIAL_PORT_COUNT 4
#define USE_SPI #define USE_SPI
#define USE_SPI_DEVICE_1 #define USE_SPI_DEVICE_1
#define USE_SPI_DEVICE_2 #define USE_SPI_DEVICE_2
#define SPI2_NSS_PIN PB12 #define SPI2_NSS_PIN PB12
#define SPI2_SCK_PIN PB13 #define SPI2_SCK_PIN PB13

View file

@ -25,15 +25,15 @@
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define USE_EXTI #define USE_EXTI
#define INVERTER PB15 #define LED0 PB6
#define INVERTER_USART USART6 #define LED1 PB5
#define LED2 PB4
#define BEEPER PB7 #define BEEPER PB7
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define LED0 PB6 #define INVERTER PB15
#define LED1 PB5 #define INVERTER_USART USART6
#define LED2 PB4
#define MPU6500_CS_PIN PC4 #define MPU6500_CS_PIN PC4
#define MPU6500_SPI_INSTANCE SPI1 #define MPU6500_SPI_INSTANCE SPI1

View file

@ -17,13 +17,13 @@
#define TARGET_BOARD_IDENTIFIER "CC3D" // CopterControl 3D #define TARGET_BOARD_IDENTIFIER "CC3D" // CopterControl 3D
#define LED0 PB3 // PB3 (LED) #define LED0 PB3
#define INVERTER PB2 // PB2 (BOOT1) used as inverter select GPIO #define INVERTER PB2 // PB2 (BOOT1) used as inverter select GPIO
#define INVERTER_USART USART1 #define INVERTER_USART USART1
#define BEEPER PB15 // PB15 (Beeper) #define BEEPER PB15
#define BEEPER_OPT PB2 // PB15 (Beeper) #define BEEPER_OPT PB2
#define USE_EXTI #define USE_EXTI
#define USE_MPU_DATA_READY_SIGNAL #define USE_MPU_DATA_READY_SIGNAL

View file

@ -20,9 +20,9 @@
#define TARGET_BOARD_IDENTIFIER "CJM1" // CJMCU #define TARGET_BOARD_IDENTIFIER "CJM1" // CJMCU
#define USE_HARDWARE_REVISION_DETECTION #define USE_HARDWARE_REVISION_DETECTION
#define LED0 PC14 // PC14 (LED) #define LED0 PC14
#define LED1 PC13 // PC13 (LED) #define LED1 PC13
#define LED2 PC15 // PC15 (LED) #define LED2 PC15
#define ACC #define ACC
#define USE_ACC_MPU6050 #define USE_ACC_MPU6050

View file

@ -96,8 +96,8 @@
#define USE_FLASHFS #define USE_FLASHFS
#define USE_FLASH_M25P16 #define USE_FLASH_M25P16
#define USE_ADC
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define USE_ADC
#define ADC_INSTANCE ADC2 #define ADC_INSTANCE ADC2
#define VBAT_ADC_PIN PA5 #define VBAT_ADC_PIN PA5
//#define CURRENT_METER_ADC_PIN PA5 //#define CURRENT_METER_ADC_PIN PA5

View file

@ -22,10 +22,10 @@
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define LED0 PB3 // PB3 (LED) #define LED0 PB3
#define LED1 PB4 // PB4 (LED) #define LED1 PB4
#define BEEPER PA12 // PA12 (Beeper) #define BEEPER PA12
#ifdef AFROMINI #ifdef AFROMINI
#define BEEPER_INVERTED #define BEEPER_INVERTED
#endif #endif
@ -62,9 +62,7 @@
#define MPU6500_CS_PIN NAZE_SPI_CS_PIN #define MPU6500_CS_PIN NAZE_SPI_CS_PIN
#define MPU6500_SPI_INSTANCE NAZE_SPI_INSTANCE #define MPU6500_SPI_INSTANCE NAZE_SPI_INSTANCE
#define USE_FLASHFS #define USE_FLASHFS
#define USE_FLASH_M25P16 #define USE_FLASH_M25P16
#define EXTI_CALLBACK_HANDLER_COUNT 3 // MPU data ready, MAG data ready, BMP085 EOC #define EXTI_CALLBACK_HANDLER_COUNT 3 // MPU data ready, MAG data ready, BMP085 EOC
@ -82,7 +80,6 @@
#define USE_GYRO_MPU6500 #define USE_GYRO_MPU6500
#define USE_GYRO_SPI_MPU6500 #define USE_GYRO_SPI_MPU6500
#define GYRO_MPU3050_ALIGN CW0_DEG #define GYRO_MPU3050_ALIGN CW0_DEG
#define GYRO_MPU6050_ALIGN CW0_DEG #define GYRO_MPU6050_ALIGN CW0_DEG
#define GYRO_MPU6500_ALIGN CW0_DEG #define GYRO_MPU6500_ALIGN CW0_DEG
@ -108,7 +105,6 @@
#define MAG #define MAG
#define USE_MAG_HMC5883 #define USE_MAG_HMC5883
#define MAG_HMC5883_ALIGN CW180_DEG #define MAG_HMC5883_ALIGN CW180_DEG
#define SONAR #define SONAR

View file

@ -85,20 +85,18 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
{ TIM3, IO_TAG(PB4), TIM_Channel_1, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_2 }, // PPM - PB4 { TIM3, IO_TAG(PB4), TIM_Channel_1, TIM3_IRQn, 0, IOCFG_AF_PP, GPIO_AF_2 }, // PPM - PB4
// PB5 / TIM3 CH2 is connected to USBPresent // PB5 / TIM3 CH2 is connected to USBPresent
// Used by SPI1, MAX7456 { TIM4, IO_TAG(PB8), TIM_Channel_3, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM1 - PB8
//{ TIM16, IO_TAG(PA6), TIM_Channel_1, TIM1_UP_TIM16_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM1 - PA6 { TIM4, IO_TAG(PB9), TIM_Channel_4, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM2 - PB9
//{ TIM17, IO_TAG(PA7), TIM_Channel_1, TIM1_TRG_COM_TIM17_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM2 - PA7 { TIM15, IO_TAG(PA2), TIM_Channel_1, TIM1_BRK_TIM15_IRQn, 1, IOCFG_AF_PP, GPIO_AF_9 }, // PWM3 - PA2
{ TIM15, IO_TAG(PA3), TIM_Channel_2, TIM1_BRK_TIM15_IRQn, 1, IOCFG_AF_PP, GPIO_AF_9 }, // PWM4 - PA3
{ TIM4, IO_TAG(PB8), TIM_Channel_3, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM3 - PB8
{ TIM4, IO_TAG(PB9), TIM_Channel_4, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM4 - PB9
{ TIM15, IO_TAG(PA2), TIM_Channel_1, TIM1_BRK_TIM15_IRQn, 1, IOCFG_AF_PP, GPIO_AF_9 }, // PWM5 - PA2
{ TIM15, IO_TAG(PA3), TIM_Channel_2, TIM1_BRK_TIM15_IRQn, 1, IOCFG_AF_PP, GPIO_AF_9 }, // PWM6 - PA3
{ TIM2, IO_TAG(PA0), TIM_Channel_1, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM7 - PA0
{ TIM2, IO_TAG(PA1), TIM_Channel_2, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM8 - PA1
// UART3 RX/TX // UART3 RX/TX
{ TIM2, IO_TAG(PB10), TIM_Channel_3, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM9 - PB10 - TIM2_CH3 / UART3_TX (AF7) { TIM2, IO_TAG(PB10), TIM_Channel_3, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM5 - PB10 - TIM2_CH3 / UART3_TX (AF7)
{ TIM2, IO_TAG(PB11), TIM_Channel_4, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM10 - PB11 - TIM2_CH4 / UART3_RX (AF7) { TIM2, IO_TAG(PB11), TIM_Channel_4, TIM2_IRQn, 1, IOCFG_AF_PP, GPIO_AF_1 }, // PWM6 - PB11 - TIM2_CH4 / UART3_RX (AF7)
// SDA / SCL
{ TIM4, IO_TAG(PB7), TIM_Channel_2, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM7 - PB7
{ TIM4, IO_TAG(PB6), TIM_Channel_1, TIM4_IRQn, 1, IOCFG_AF_PP, GPIO_AF_2 }, // PWM8 - PB6
// LED Strip Pad // LED Strip Pad
{ TIM1, IO_TAG(PA8), TIM_Channel_1, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_6 }, // GPIO_TIMER / LED_STRIP { TIM1, IO_TAG(PA8), TIM_Channel_1, TIM1_CC_IRQn, 1, IOCFG_AF_PP, GPIO_AF_6 }, // GPIO_TIMER / LED_STRIP

View file

@ -30,39 +30,38 @@
#define EXTI15_10_CALLBACK_HANDLER_COUNT 2 // MPU_INT, SDCardDetect #define EXTI15_10_CALLBACK_HANDLER_COUNT 2 // MPU_INT, SDCardDetect
#define USE_EXTI
#define MPU_INT_EXTI PC13
#define USE_MPU_DATA_READY_SIGNAL #define USE_MPU_DATA_READY_SIGNAL
#define ENSURE_MPU_DATA_READY_IS_LOW #define EXTI_CALLBACK_HANDLER_COUNT 2 // MPU data ready (mag disabled)
#define MPU_INT_EXTI PC13
#define USE_MAG_DATA_READY_SIGNAL #define USE_EXTI
#define ENSURE_MAG_DATA_READY_IS_HIGH
#define MPU6000_SPI_INSTANCE SPI1
#define MPU6000_CS_PIN PA4
#define GYRO #define GYRO
//#define USE_FAKE_GYRO #define USE_GYRO_SPI_MPU6000
#define USE_GYRO_MPU6500 #define GYRO_MPU6000_ALIGN CW90_DEG
#define ACC #define ACC
//#define USE_FAKE_ACC #define USE_ACC_SPI_MPU6000
#define USE_ACC_MPU6500 #define ACC_MPU6000_ALIGN CW90_DEG
#define ACC_MPU6500_ALIGN CW180_DEG #define BMP280_SPI_INSTANCE SPI1
#define GYRO_MPU6500_ALIGN CW180_DEG #define BMP280_CS_PIN PA13
#define BARO #define BARO
#define USE_BARO_BMP280 #define USE_BARO_BMP280
#define USE_BARO_SPI_BMP280
#define MAG //#define MAG
#define USE_MPU9250_MAG // Enables bypass configuration //#define USE_MAG_AK8975
#define USE_MAG_AK8975 //#define USE_MAG_HMC5883 // External
#define USE_MAG_HMC5883 // External //
//#define MAG_AK8975_ALIGN CW90_DEG_FLIP
#define MAG_AK8975_ALIGN CW90_DEG_FLIP //#define SONAR
//#define SONAR_ECHO_PIN PB1
#define SONAR //#define SONAR_TRIGGER_PIN PB0
#define SONAR_ECHO_PIN PB1
#define SONAR_TRIGGER_PIN PB0
#define USB_IO #define USB_IO
#define USB_CABLE_DETECTION #define USB_CABLE_DETECTION
@ -73,8 +72,7 @@
#define USE_UART1 #define USE_UART1
#define USE_UART2 #define USE_UART2
#define USE_UART3 #define USE_UART3
#define USE_SOFTSERIAL1 #define SERIAL_PORT_COUNT 4
#define SERIAL_PORT_COUNT 5
#define UART1_TX_PIN PA9 // PA9 #define UART1_TX_PIN PA9 // PA9
#define UART1_RX_PIN PA10 // PA10 #define UART1_RX_PIN PA10 // PA10
@ -85,13 +83,8 @@
#define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_TX_PIN PB10 // PB10 (AF7)
#define UART3_RX_PIN PB11 // PB11 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7)
#define SOFTSERIAL_1_TIMER TIM2 //#define USE_I2C
#define SOFTSERIAL_1_TIMER_RX_HARDWARE 9 // PA0 / PAD3 //#define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA
#define SOFTSERIAL_1_TIMER_TX_HARDWARE 10 // PA1 / PAD4
#define USE_I2C
#define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA
#define USE_SPI #define USE_SPI
#define USE_SPI_DEVICE_1 #define USE_SPI_DEVICE_1
@ -108,14 +101,13 @@
// include the max7456 driver // include the max7456 driver
#define USE_MAX7456 #define USE_MAX7456
#define MAX7456_SPI_INSTANCE SPI1 #define MAX7456_SPI_INSTANCE SPI1
#define MAX7456_SPI_CS_PIN SPI1_NSS_PIN #define MAX7456_SPI_CS_PIN PB1
#define MAX7456_DMA_CHANNEL_TX DMA1_Channel3 //#define MAX7456_DMA_CHANNEL_TX DMA1_Channel3
//#define MAX7456_DMA_CHANNEL_RX DMA1_Channel2 // <- Conflicts with WS2811 DMA //#define MAX7456_DMA_CHANNEL_RX DMA1_Channel2
#define MAX7456_DMA_IRQ_HANDLER_ID DMA1_CH3_HANDLER //#define MAX7456_DMA_IRQ_HANDLER_ID DMA1_CH3_HANDLER
#define USE_SPI #define USE_SPI
#define USE_SPI_DEVICE_2 // PB12,13,14,15 on AF5 #define USE_SPI_DEVICE_2 // PB12,13,14,15 on AF5
#define I2C_DEVICE (I2CDEV_1) // PB6/SCL, PB7/SDA
#define SPI2_NSS_PIN PB12 #define SPI2_NSS_PIN PB12
#define SPI2_SCK_PIN PB13 #define SPI2_SCK_PIN PB13
@ -144,15 +136,16 @@
// #define AFATFS_USE_INTROSPECTIVE_LOGGING // #define AFATFS_USE_INTROSPECTIVE_LOGGING
#define USE_ADC #define USE_ADC
#define BOARD_HAS_VOLTAGE_DIVIDER //#define BOARD_HAS_VOLTAGE_DIVIDER
#define ADC_INSTANCE ADC2 #define VBAT_ADC_PIN PA0
#define VBAT_ADC_PIN PA4 #define CURRENT_METER_ADC_PIN PA1
#define CURRENT_METER_ADC_PIN PA5 #define ADC_INSTANCE ADC1
#define RSSI_ADC_PIN PB2
//#define RSSI_ADC_PIN PB1
//#define ADC_INSTANCE ADC3
#define LED_STRIP #define LED_STRIP
#define WS2811_PIN PA8 #define WS2811_PIN PA8
#define WS2811_TIMER TIM1 #define WS2811_TIMER TIM1
#define WS2811_DMA_CHANNEL DMA1_Channel2 #define WS2811_DMA_CHANNEL DMA1_Channel2
@ -160,25 +153,24 @@
#define WS2811_DMA_TC_FLAG DMA1_FLAG_TC2 #define WS2811_DMA_TC_FLAG DMA1_FLAG_TC2
#define WS2811_DMA_HANDLER_IDENTIFER DMA1_CH2_HANDLER #define WS2811_DMA_HANDLER_IDENTIFER DMA1_CH2_HANDLER
#define TRANSPONDER
#define TRANSPONDER_GPIO GPIOA
#define TRANSPONDER_GPIO_AHB_PERIPHERAL RCC_AHBPeriph_GPIOA
#define TRANSPONDER_GPIO_AF GPIO_AF_6
#define TRANSPONDER_PIN GPIO_Pin_8
#define TRANSPONDER_PIN_SOURCE GPIO_PinSource8
#define TRANSPONDER_TIMER TIM1
#define TRANSPONDER_TIMER_APB2_PERIPHERAL RCC_APB2Periph_TIM1
#define TRANSPONDER_DMA_CHANNEL DMA1_Channel2
#define TRANSPONDER_IRQ DMA1_Channel2_IRQn
#define TRANSPONDER_DMA_TC_FLAG DMA1_FLAG_TC2
#define TRANSPONDER_DMA_HANDLER_IDENTIFER DMA1_CH2_HANDLER
//#define TRANSPONDER #define REDUCE_TRANSPONDER_CURRENT_DRAW_WHEN_USB_CABLE_PRESENT
//#define TRANSPONDER_GPIO GPIOA
//#define TRANSPONDER_GPIO_AHB_PERIPHERAL RCC_AHBPeriph_GPIOA
//#define TRANSPONDER_GPIO_AF GPIO_AF_6
//#define TRANSPONDER_PIN GPIO_Pin_8
//#define TRANSPONDER_PIN_SOURCE GPIO_PinSource8
//#define TRANSPONDER_TIMER TIM1
//#define TRANSPONDER_TIMER_APB2_PERIPHERAL RCC_APB2Periph_TIM1
//#define TRANSPONDER_DMA_CHANNEL DMA1_Channel2
//#define TRANSPONDER_IRQ DMA1_Channel2_IRQn
//#define TRANSPONDER_DMA_TC_FLAG DMA1_FLAG_TC2
//#define TRANSPONDER_DMA_HANDLER_IDENTIFER DMA1_CH2_HANDLER
//#define REDUCE_TRANSPONDER_CURRENT_DRAW_WHEN_USB_CABLE_PRESENT
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT #define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
#define DEFAULT_RX_FEATURE FEATURE_RX_PPM #define DEFAULT_RX_FEATURE FEATURE_RX_PPM
#define DEFAULT_FEATURES FEATURE_BLACKBOX #define DEFAULT_FEATURES (FEATURE_VBAT | FEATURE_CURRENT_METER | FEATURE_BLACKBOX | FEATURE_ONESHOT125)
#define BUTTONS #define BUTTONS
#define BUTTON_A_PORT GPIOB #define BUTTON_A_PORT GPIOB
@ -201,7 +193,3 @@
#define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4)) #define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4))
#define USED_TIMERS (TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(15)) #define USED_TIMERS (TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(15))
#define TIMER_APB1_PERIPHERALS (RCC_APB1Periph_TIM2 | RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4)
#define TIMER_APB2_PERIPHERALS (RCC_APB2Periph_TIM1 | RCC_APB2Periph_TIM15)
#define TIMER_AHB_PERIPHERALS (RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB)

View file

@ -3,15 +3,14 @@ FEATURES = VCP SDCARD
TARGET_SRC = \ TARGET_SRC = \
drivers/accgyro_mpu.c \ drivers/accgyro_mpu.c \
drivers/accgyro_mpu6500.c \ drivers/accgyro_spi_mpu6000.c \
drivers/barometer_bmp280.c \ drivers/barometer_bmp280.c \
drivers/compass_ak8975.c \ drivers/barometer_spi_bmp280.c \
drivers/compass_hmc5883l.c \
drivers/flash_m25p16.c \
drivers/light_ws2811strip.c \ drivers/light_ws2811strip.c \
drivers/light_ws2811strip_stm32f30x.c \ drivers/light_ws2811strip_stm32f30x.c \
drivers/serial_softserial.c \
drivers/serial_usb_vcp.c \ drivers/serial_usb_vcp.c \
drivers/sonar_hcsr04.c \ drivers/transponder_ir.c \
drivers/transponder_ir_stm32f30x.c \
io/transponder_ir.c \
drivers/max7456.c \ drivers/max7456.c \
io/osd.c io/osd.c

View file

@ -27,7 +27,9 @@
#define LED0 PC14 #define LED0 PC14
#define LED1 PC13 #define LED1 PC13
#define BEEPER PC13 #define BEEPER PC13
#define INVERTER PC15 #define INVERTER PC15
#define INVERTER_USART USART2 //Sbus on USART 2 of nano. #define INVERTER_USART USART2 //Sbus on USART 2 of nano.
@ -96,6 +98,5 @@
#define TARGET_IO_PORTB 0xffff #define TARGET_IO_PORTB 0xffff
#define TARGET_IO_PORTC 0xffff #define TARGET_IO_PORTC 0xffff
#define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(5) ) #define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(5) )

View file

@ -88,8 +88,8 @@
#define M25P16_CS_PIN PB12 #define M25P16_CS_PIN PB12
#define M25P16_SPI_INSTANCE SPI2 #define M25P16_SPI_INSTANCE SPI2
#define USE_ADC
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define USE_ADC
#define ADC_INSTANCE ADC2 #define ADC_INSTANCE ADC2
#define VBAT_ADC_PIN PA4 #define VBAT_ADC_PIN PA4
#define CURRENT_METER_ADC_PIN PA5 #define CURRENT_METER_ADC_PIN PA5

View file

@ -38,12 +38,10 @@
// MPU 9150 INT connected to PA15, pulled up to VCC by 10K Resistor, contains MPU6050 and AK8975 in single component. // MPU 9150 INT connected to PA15, pulled up to VCC by 10K Resistor, contains MPU6050 and AK8975 in single component.
#define GYRO #define GYRO
#define USE_GYRO_MPU6050 #define USE_GYRO_MPU6050
#define GYRO_MPU6050_ALIGN CW270_DEG #define GYRO_MPU6050_ALIGN CW270_DEG
#define ACC #define ACC
#define USE_ACC_MPU6050 #define USE_ACC_MPU6050
#define ACC_MPU6050_ALIGN CW270_DEG #define ACC_MPU6050_ALIGN CW270_DEG
#define BARO #define BARO
@ -61,11 +59,11 @@
#define USE_UART3 // Servo out - 10/RX (PB11) 11/TX (PB10) #define USE_UART3 // Servo out - 10/RX (PB11) 11/TX (PB10)
#define SERIAL_PORT_COUNT 4 #define SERIAL_PORT_COUNT 4
#define UART1_TX_PIN PB6 // PB6 #define UART1_TX_PIN PB6
#define UART1_RX_PIN PB7 // PB7 #define UART1_RX_PIN PB7
#define UART2_TX_PIN PA2 // PA2 - Clashes with PWM6 input. #define UART2_TX_PIN PA2 // PA2 - Clashes with PWM6 input.
#define UART2_RX_PIN PA3 // PA3 #define UART2_RX_PIN PA3
#define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_TX_PIN PB10 // PB10 (AF7)
#define UART3_RX_PIN PB11 // PB11 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7)
@ -129,7 +127,5 @@
#define TARGET_IO_PORTB (BIT(0)|BIT(1)|BIT(6)|BIT(10)|BIT(11)|BIT(14)|BIT(15)|BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7)|BIT(8)|BIT(9)|BIT(12)|BIT(13)) #define TARGET_IO_PORTB (BIT(0)|BIT(1)|BIT(6)|BIT(10)|BIT(11)|BIT(14)|BIT(15)|BIT(3)|BIT(4)|BIT(5)|BIT(6)|BIT(7)|BIT(8)|BIT(9)|BIT(12)|BIT(13))
#define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4)) #define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4))
#define USED_TIMERS (TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(15) | TIM_N(17)) #define USED_TIMERS (TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(15) | TIM_N(17))

View file

@ -72,11 +72,11 @@
#define USE_SOFTSERIAL2 #define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT 5 #define SERIAL_PORT_COUNT 5
#define UART1_TX_PIN PA9 // PA9 #define UART1_TX_PIN PA9
#define UART1_RX_PIN PA10 // PA10 #define UART1_RX_PIN PA10
#define UART2_TX_PIN PA14 // PA14 / SWCLK #define UART2_TX_PIN PA14 // PA14 / SWCLK
#define UART2_RX_PIN PA15 // PA15 #define UART2_RX_PIN PA15
#define UART3_TX_PIN PB10 // PB10 (AF7) #define UART3_TX_PIN PB10 // PB10 (AF7)
#define UART3_RX_PIN PB11 // PB11 (AF7) #define UART3_RX_PIN PB11 // PB11 (AF7)
@ -97,8 +97,8 @@
#define M25P16_CS_PIN PB12 #define M25P16_CS_PIN PB12
#define M25P16_SPI_INSTANCE SPI2 #define M25P16_SPI_INSTANCE SPI2
#define USE_ADC
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define USE_ADC
#define ADC_INSTANCE ADC2 #define ADC_INSTANCE ADC2
#define VBAT_ADC_PIN PA4 #define VBAT_ADC_PIN PA4
#define CURRENT_METER_ADC_PIN PA5 #define CURRENT_METER_ADC_PIN PA5
@ -133,4 +133,3 @@
#define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(15) | TIM_N(16) | TIM_N(17) ) #define USED_TIMERS ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) | TIM_N(15) | TIM_N(16) | TIM_N(17) )

View file

@ -117,9 +117,8 @@
#define MPU6500_CS_PIN PB9 #define MPU6500_CS_PIN PB9
#define MPU6500_SPI_INSTANCE SPI1 #define MPU6500_SPI_INSTANCE SPI1
#define USE_ADC
#define BOARD_HAS_VOLTAGE_DIVIDER #define BOARD_HAS_VOLTAGE_DIVIDER
#define USE_ADC
#define ADC_INSTANCE ADC2 #define ADC_INSTANCE ADC2
#define VBAT_ADC_PIN PA4 #define VBAT_ADC_PIN PA4
#define CURRENT_METER_ADC_PIN PA5 #define CURRENT_METER_ADC_PIN PA5

View file

@ -153,7 +153,6 @@
#define WS2811_DMA_TC_FLAG DMA1_FLAG_TC3 #define WS2811_DMA_TC_FLAG DMA1_FLAG_TC3
#define WS2811_DMA_HANDLER_IDENTIFER DMA1_CH3_HANDLER #define WS2811_DMA_HANDLER_IDENTIFER DMA1_CH3_HANDLER
#define LED_STRIP
#define LED_STRIP_TIMER TIM16 #define LED_STRIP_TIMER TIM16
#define USE_SERIAL_4WAY_BLHELI_INTERFACE #define USE_SERIAL_4WAY_BLHELI_INTERFACE

View file

@ -223,6 +223,8 @@ static uint32_t rxPackets = 0;
static uint16_t VCP_DataRx(uint8_t* Buf, uint32_t Len) static uint16_t VCP_DataRx(uint8_t* Buf, uint32_t Len)
{ {
__disable_irq();
rxPackets++; rxPackets++;
for (uint32_t i = 0; i < Len; i++) { for (uint32_t i = 0; i < Len; i++) {
@ -232,6 +234,7 @@ static uint16_t VCP_DataRx(uint8_t* Buf, uint32_t Len)
rxTotalBytes++; rxTotalBytes++;
} }
__enable_irq();
if(receiveLength > (USB_RX_BUFSIZE-1)) if(receiveLength > (USB_RX_BUFSIZE-1))
return USBD_FAIL; return USBD_FAIL;