1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-13 03:20:00 +03:00

Merge branch 'master' into RP2350

This commit is contained in:
blckmn 2025-06-05 20:08:16 +10:00
commit 97fe2d25dc
14 changed files with 63 additions and 26 deletions

@ -1 +1 @@
Subproject commit eda6b309994923772eeab82fce3d6d8c3c0812a2 Subproject commit 737c3460fa621696af079367c86ca2be28194631

View file

@ -267,6 +267,7 @@ extiCallbackRec_t bmi160IntCallbackRec;
// Called in ISR context // Called in ISR context
// Gyro read has just completed // Gyro read has just completed
#ifdef USE_DMA
static busStatus_e bmi160Intcallback(uint32_t arg) static busStatus_e bmi160Intcallback(uint32_t arg)
{ {
gyroDev_t *gyro = (gyroDev_t *)arg; gyroDev_t *gyro = (gyroDev_t *)arg;
@ -280,6 +281,7 @@ static busStatus_e bmi160Intcallback(uint32_t arg)
return BUS_READY; return BUS_READY;
} }
#endif
static void bmi160ExtiHandler(extiCallbackRec_t *cb) static void bmi160ExtiHandler(extiCallbackRec_t *cb)
{ {

View file

@ -278,6 +278,7 @@ extiCallbackRec_t bmi270IntCallbackRec;
*/ */
// Called in ISR context // Called in ISR context
// Gyro read has just completed // Gyro read has just completed
#ifdef USE_DMA
static busStatus_e bmi270Intcallback(uint32_t arg) static busStatus_e bmi270Intcallback(uint32_t arg)
{ {
gyroDev_t *gyro = (gyroDev_t *)arg; gyroDev_t *gyro = (gyroDev_t *)arg;
@ -291,6 +292,7 @@ static busStatus_e bmi270Intcallback(uint32_t arg)
return BUS_READY; return BUS_READY;
} }
#endif
static void bmi270ExtiHandler(extiCallbackRec_t *cb) static void bmi270ExtiHandler(extiCallbackRec_t *cb)
{ {

View file

@ -31,20 +31,18 @@
typedef enum I2CDevice { typedef enum I2CDevice {
I2CINVALID = -1, I2CINVALID = -1,
I2CDEV_1 = 0, I2CDEV_FIRST = 0,
#if defined(USE_I2C_DEVICE_0)
I2CDEV_0 = I2CDEV_FIRST,
I2CDEV_1,
#else
I2CDEV_1 = I2CDEV_FIRST,
#endif
I2CDEV_2, I2CDEV_2,
I2CDEV_3, I2CDEV_3,
I2CDEV_4, I2CDEV_4,
} I2CDevice; } I2CDevice;
#if defined(STM32F4) || defined(APM32F4)
#define I2CDEV_COUNT 3
#elif defined(STM32F7)
#define I2CDEV_COUNT 4
#else
#define I2CDEV_COUNT 4
#endif
// Macros to convert between CLI bus number and I2CDevice. // Macros to convert between CLI bus number and I2CDevice.
#define I2C_CFG_TO_DEV(x) ((x) - 1) #define I2C_CFG_TO_DEV(x) ((x) - 1)
#define I2C_DEV_TO_CFG(x) ((x) + 1) #define I2C_DEV_TO_CFG(x) ((x) + 1)

View file

@ -32,12 +32,12 @@
typedef struct i2cPinDef_s { typedef struct i2cPinDef_s {
ioTag_t ioTag; ioTag_t ioTag;
#if defined(STM32F4) || defined(STM32H7) || defined(STM32G4) || defined(AT32F4) || defined(APM32F4) #if I2C_TRAIT_AF_PIN
uint8_t af; uint8_t af;
#endif #endif
} i2cPinDef_t; } i2cPinDef_t;
#if defined(STM32F4) || defined(STM32H7) || defined(STM32G4) || defined(AT32F4) || defined(APM32F4) #if I2C_TRAIT_AF_PIN
#define I2CPINDEF(pin, af) { DEFIO_TAG_E(pin), af } #define I2CPINDEF(pin, af) { DEFIO_TAG_E(pin), af }
#else #else
#define I2CPINDEF(pin) { DEFIO_TAG_E(pin) } #define I2CPINDEF(pin) { DEFIO_TAG_E(pin) }
@ -48,14 +48,16 @@ typedef struct i2cHardware_s {
I2C_TypeDef *reg; I2C_TypeDef *reg;
i2cPinDef_t sclPins[I2C_PIN_SEL_MAX]; i2cPinDef_t sclPins[I2C_PIN_SEL_MAX];
i2cPinDef_t sdaPins[I2C_PIN_SEL_MAX]; i2cPinDef_t sdaPins[I2C_PIN_SEL_MAX];
#if PLATFORM_TRAIT_RCC
rccPeriphTag_t rcc; rccPeriphTag_t rcc;
#endif
uint8_t ev_irq; uint8_t ev_irq;
uint8_t er_irq; uint8_t er_irq;
} i2cHardware_t; } i2cHardware_t;
extern const i2cHardware_t i2cHardware[]; extern const i2cHardware_t i2cHardware[];
#if defined(STM32F4) #if I2C_TRAIT_STATE
typedef struct i2cState_s { typedef struct i2cState_s {
volatile bool error; volatile bool error;
volatile bool busy; volatile bool busy;
@ -74,7 +76,7 @@ typedef struct i2cDevice_s {
I2C_TypeDef *reg; I2C_TypeDef *reg;
IO_t scl; IO_t scl;
IO_t sda; IO_t sda;
#if defined(STM32F4) || defined(STM32H7) || defined(STM32G4) || defined(AT32F4) || defined(APM32F4) #if I2C_TRAIT_AF_PIN
uint8_t sclAF; uint8_t sclAF;
uint8_t sdaAF; uint8_t sdaAF;
#endif #endif
@ -82,10 +84,10 @@ typedef struct i2cDevice_s {
uint16_t clockSpeed; uint16_t clockSpeed;
// MCU/Driver dependent member follows // MCU/Driver dependent member follows
#if defined(STM32F4) #if I2C_TRAIT_STATE
i2cState_t state; i2cState_t state;
#endif #endif
#if defined(USE_HAL_DRIVER) || defined(AT32F4) #if I2C_TRAIT_HANDLE
I2C_HandleTypeDef handle; I2C_HandleTypeDef handle;
#endif #endif
} i2cDevice_t; } i2cDevice_t;

View file

@ -95,6 +95,8 @@ uint16_t prepareDshotPacket(dshotProtocolControl_t *pcb);
extern bool useDshotTelemetry; extern bool useDshotTelemetry;
extern uint8_t dshotMotorCount; extern uint8_t dshotMotorCount;
bool dshotPwmDevInit(motorDevice_t *device, const motorDevConfig_t *motorConfig);
#ifdef USE_DSHOT_TELEMETRY #ifdef USE_DSHOT_TELEMETRY
typedef struct dshotTelemetryMotorState_s { typedef struct dshotTelemetryMotorState_s {
@ -113,7 +115,6 @@ typedef struct dshotTelemetryState_s {
dshotRawValueState_t rawValueState; dshotRawValueState_t rawValueState;
} dshotTelemetryState_t; } dshotTelemetryState_t;
#ifdef USE_DSHOT_TELEMETRY
extern uint32_t readDoneCount; extern uint32_t readDoneCount;
FAST_DATA_ZERO_INIT extern uint32_t inputStampUs; FAST_DATA_ZERO_INIT extern uint32_t inputStampUs;
@ -125,10 +126,6 @@ typedef struct dshotTelemetryCycleCounters_s {
FAST_DATA_ZERO_INIT extern dshotTelemetryCycleCounters_t dshotDMAHandlerCycleCounters; FAST_DATA_ZERO_INIT extern dshotTelemetryCycleCounters_t dshotDMAHandlerCycleCounters;
#endif
bool dshotPwmDevInit(motorDevice_t *device, const motorDevConfig_t *motorConfig);
extern dshotTelemetryState_t dshotTelemetryState; extern dshotTelemetryState_t dshotTelemetryState;
#ifdef USE_DSHOT_TELEMETRY_STATS #ifdef USE_DSHOT_TELEMETRY_STATS

View file

@ -216,9 +216,11 @@ void dshotCommandWrite(uint8_t index, uint8_t motorCount, uint8_t command, dshot
} }
if (commandType == DSHOT_CMD_TYPE_BLOCKING) { if (commandType == DSHOT_CMD_TYPE_BLOCKING) {
#if defined(USE_DSHOT) && defined(USE_DSHOT_TELEMETRY)
bool isBitbangActive = false; bool isBitbangActive = false;
#ifdef USE_DSHOT_BITBANG #ifdef USE_DSHOT_BITBANG
isBitbangActive = isDshotBitbangActive(&motorConfig()->dev); isBitbangActive = isDshotBitbangActive(&motorConfig()->dev);
#endif
#endif #endif
// Fake command in queue. Blocking commands are launched from cli, and no inline commands are running // Fake command in queue. Blocking commands are launched from cli, and no inline commands are running
for (uint8_t i = 0; i < motorDeviceCount(); i++) { for (uint8_t i = 0; i < motorDeviceCount(); i++) {

View file

@ -255,6 +255,7 @@ static void mspEscPassthroughFn(serialPort_t *serialPort)
} }
#endif #endif
#ifdef USE_SERIAL_PASSTHROUGH
static serialPort_t *mspFindPassthroughSerialPort(void) static serialPort_t *mspFindPassthroughSerialPort(void)
{ {
serialPortUsage_t *portUsage = NULL; serialPortUsage_t *portUsage = NULL;
@ -284,6 +285,7 @@ static void mspSerialPassthroughFn(serialPort_t *serialPort)
serialPassthrough(passthroughPort, serialPort, NULL, NULL); serialPassthrough(passthroughPort, serialPort, NULL, NULL);
} }
} }
#endif
static void mspFcSetPassthroughCommand(sbuf_t *dst, sbuf_t *src, mspPostProcessFnPtr *mspPostProcessFn) static void mspFcSetPassthroughCommand(sbuf_t *dst, sbuf_t *src, mspPostProcessFnPtr *mspPostProcessFn)
{ {
@ -297,6 +299,7 @@ static void mspFcSetPassthroughCommand(sbuf_t *dst, sbuf_t *src, mspPostProcessF
} }
switch (mspPassthroughMode) { switch (mspPassthroughMode) {
#ifdef USE_SERIAL_PASSTHROUGH
case MSP_PASSTHROUGH_SERIAL_ID: case MSP_PASSTHROUGH_SERIAL_ID:
case MSP_PASSTHROUGH_SERIAL_FUNCTION_ID: case MSP_PASSTHROUGH_SERIAL_FUNCTION_ID:
if (mspFindPassthroughSerialPort()) { if (mspFindPassthroughSerialPort()) {
@ -308,6 +311,9 @@ static void mspFcSetPassthroughCommand(sbuf_t *dst, sbuf_t *src, mspPostProcessF
sbufWriteU8(dst, 0); sbufWriteU8(dst, 0);
} }
break; break;
#else
UNUSED(mspPostProcessFn);
#endif
#ifdef USE_SERIAL_4WAY_BLHELI_INTERFACE #ifdef USE_SERIAL_4WAY_BLHELI_INTERFACE
case MSP_PASSTHROUGH_ESC_4WAY: case MSP_PASSTHROUGH_ESC_4WAY:
// get channel number // get channel number

View file

@ -33,7 +33,7 @@
#include "target/common_pre.h" #include "target/common_pre.h"
// MCU specific platform from platform/X // MCU specific platform from platform/X
#include "platform_mcu.h" #include "platform/platform.h"
#include "target.h" #include "target.h"
#include "target/common_post.h" #include "target/common_post.h"

View file

@ -193,6 +193,9 @@
#define PLATFORM_TRAIT_RCC 1 #define PLATFORM_TRAIT_RCC 1
#define UART_TRAIT_AF_PORT 1 #define UART_TRAIT_AF_PORT 1
#define SERIAL_TRAIT_PIN_CONFIG 1 #define SERIAL_TRAIT_PIN_CONFIG 1
#define I2C_TRAIT_AF_PIN 1
#define I2CDEV_COUNT 3
#define I2C_TRAIT_HANDLE 1
#define UARTHARDWARE_MAX_PINS 4 #define UARTHARDWARE_MAX_PINS 4

View file

@ -144,12 +144,15 @@ typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
#define UART_TX_BUFFER_ATTRIBUTE // NONE #define UART_TX_BUFFER_ATTRIBUTE // NONE
#define UART_RX_BUFFER_ATTRIBUTE // NONE #define UART_RX_BUFFER_ATTRIBUTE // NONE
#define PLATFORM_TRAIT_RCC 1 #define PLATFORM_TRAIT_RCC 1
#define UART_TRAIT_AF_PIN 1 #define UART_TRAIT_AF_PIN 1
#define UART_TRAIT_PINSWAP 1 #define UART_TRAIT_PINSWAP 1
#define SERIAL_TRAIT_PIN_CONFIG 1 #define SERIAL_TRAIT_PIN_CONFIG 1
#define I2C_TRAIT_AF_PIN 1
#define I2CDEV_COUNT 4
#define I2C_TRAIT_HANDLE 1
#define UARTHARDWARE_MAX_PINS 5 #define UARTHARDWARE_MAX_PINS 5
#define UART_REG_RXD(base) ((base)->dt) #define UART_REG_RXD(base) ((base)->dt)
#define UART_REG_TXD(base) ((base)->dt) #define UART_REG_TXD(base) ((base)->dt)

View file

@ -33,3 +33,5 @@
// no serial pins are defined for the simulator // no serial pins are defined for the simulator
#define SERIAL_TRAIT_PIN_CONFIG 0 #define SERIAL_TRAIT_PIN_CONFIG 0
#define I2CDEV_COUNT 0

View file

@ -419,3 +419,21 @@ extern uint8_t _dmaram_end__;
#define SERIAL_TRAIT_PIN_CONFIG 1 #define SERIAL_TRAIT_PIN_CONFIG 1
#define USB_DP_PIN PA12 #define USB_DP_PIN PA12
#if defined(STM32F4)
#define I2C_TRAIT_STATE 1
#endif
#if defined(STM32F4) || defined(STM32H7) || defined(STM32G4)
#define I2C_TRAIT_AF_PIN 1
#endif
#if defined(USE_HAL_DRIVER)
#define I2C_TRAIT_HANDLE 1
#endif
#if defined(STM32F4)
#define I2CDEV_COUNT 3
#else
#define I2CDEV_COUNT 4
#endif

View file

@ -124,6 +124,8 @@ typedef struct
} ADC_TypeDef; } ADC_TypeDef;
#define SPIDEV_COUNT 0 #define SPIDEV_COUNT 0
#define I2CDEV_COUNT 0
#define WS2811_DMA_TC_FLAG (void *)1 #define WS2811_DMA_TC_FLAG (void *)1
#define WS2811_DMA_HANDLER_IDENTIFER 0 #define WS2811_DMA_HANDLER_IDENTIFER 0
#define NVIC_PriorityGroup_2 0x500 #define NVIC_PriorityGroup_2 0x500