Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIX: Multi gyro and SDIO hard fault #12446

Merged
merged 2 commits into from
Mar 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 7 additions & 9 deletions src/config/MATEKH743/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
* If not, see <http://www.gnu.org/licenses/>.
*/

/*
This file has been auto generated from unified-targets repo.

The auto generation is transitional only, please remove this comment once the file is edited.
*/

#define FC_TARGET_MCU STM32H743

#define BOARD_NAME MATEKH743
Expand Down Expand Up @@ -142,16 +136,20 @@
//TODO #define BARO_BUSTYPE I2C
#define BARO_I2C_INSTANCE (I2CDEV_2)
//TODO #define SERIALRX_PROVIDER SBUS
//TODO #define BLACKBOX_DEVICE SDCARD
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
//TODO #define CURRENT_METER ADC
//TODO #define BATTERY_METER ADC
//TODO #define IBATA_SCALE 250
#define BEEPER_INVERTED
//TODO #define BEEPER_OD OFF
#define BEEPER_PWM_HZ 2500
//TODO #define SDIO_USE_4BIT_WIDTH ON
//TODO #define SDIO_DEVICE 1

#define SDIO_USE_4BIT 1
#define SDIO_DEVICE SDIODEV_1
#define USE_SDCARD_SDIO

#define MAX7456_SPI_INSTANCE SPI2

//TODO #define PINIO_BOX 40,41,255,255
#define USE_SPI_GYRO
#define GYRO_1_SPI_INSTANCE SPI1
Expand Down
15 changes: 6 additions & 9 deletions src/config/NBD_GALAXYAIO255/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
* If not, see <http://www.gnu.org/licenses/>.
*/

/*
This file has been auto generated from unified-targets repo.

The auto generation is transitional only, please remove this comment once the file is edited.
*/

#define FC_TARGET_MCU STM32H743

#define BOARD_NAME NBD_GALAXYAIO255
Expand Down Expand Up @@ -108,15 +102,18 @@
//TODO #define BARO_BUSTYPE I2C
#define BARO_I2C_INSTANCE (I2CDEV_2)
//TODO #define SERIALRX_PROVIDER CRSF
//TODO #define BLACKBOX_DEVICE SDCARD
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
//TODO #define DSHOT_BIDIR ON
//TODO #define MOTOR_PWM_PROTOCOL DSHOT600
//TODO #define CURRENT_METER ADC
//TODO #define BATTERY_METER ADC
#define BEEPER_INVERTED
//TODO #define BEEPER_OD OFF
//TODO #define SDIO_USE_4BIT_WIDTH ON
//TODO #define SDIO_DEVICE 1

#define SDIO_USE_4BIT 1
#define SDIO_DEVICE SDIODEV_1
#define USE_SDCARD_SDIO

#define MAX7456_SPI_INSTANCE SPI2
#define USE_SPI_GYRO
#define GYRO_1_SPI_INSTANCE SPI1
Expand Down
15 changes: 6 additions & 9 deletions src/config/NEUTRONRCH743AIO/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
* If not, see <http://www.gnu.org/licenses/>.
*/

/*
This file has been auto generated from unified-targets repo.

The auto generation is transitional only, please remove this comment once the file is edited.
*/

#define FC_TARGET_MCU STM32H743

#define BOARD_NAME NEUTRONRCH743AIO
Expand Down Expand Up @@ -129,16 +123,19 @@
//TODO #define BARO_BUSTYPE I2C
#define BARO_I2C_INSTANCE (I2CDEV_2)
//TODO #define SERIALRX_PROVIDER CRSF
//TODO #define BLACKBOX_DEVICE SDCARD
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
//TODO #define DSHOT_BIDIR ON
//TODO #define MOTOR_PWM_PROTOCOL DSHOT600
//TODO #define CURRENT_METER ADC
//TODO #define BATTERY_METER ADC
//TODO #define IBATA_SCALE 100
#define BEEPER_INVERTED
//TODO #define BEEPER_OD OFF
//TODO #define SDIO_USE_4BIT_WIDTH ON
//TODO #define SDIO_DEVICE 1

#define SDIO_USE_4BIT 1
#define SDIO_DEVICE SDIODEV_1
#define USE_SDCARD_SDIO

#define MAX7456_SPI_INSTANCE SPI2
//TODO #define PINIO_CONFIG 129,1,1,1
//TODO #define PINIO_BOX 0,40,41,42
Expand Down
15 changes: 6 additions & 9 deletions src/config/NEUTRONRCH7BT/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
* If not, see <http://www.gnu.org/licenses/>.
*/

/*
This file has been auto generated from unified-targets repo.

The auto generation is transitional only, please remove this comment once the file is edited.
*/

#define FC_TARGET_MCU STM32H743

#define BOARD_NAME NEUTRONRCH7BT
Expand Down Expand Up @@ -132,13 +126,16 @@
#define MAG_I2C_INSTANCE (I2CDEV_1)
//TODO #define BARO_BUSTYPE I2C
#define BARO_I2C_INSTANCE (I2CDEV_2)
//TODO #define BLACKBOX_DEVICE SDCARD
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT
//TODO #define CURRENT_METER ADC
//TODO #define BATTERY_METER ADC
#define BEEPER_INVERTED
//TODO #define BEEPER_OD OFF
//TODO #define SDIO_USE_4BIT_WIDTH ON
//TODO #define SDIO_DEVICE 1

#define SDIO_USE_4BIT 1
#define SDIO_DEVICE SDIODEV_1
#define USE_SDCARD_SDIO

#define MAX7456_SPI_INSTANCE SPI2
//TODO #define PINIO_CONFIG 129,1,1,1
//TODO #define PINIO_BOX 0,40,41,42
Expand Down
13 changes: 1 addition & 12 deletions src/config/SPRACINGH7RF/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@
* If not, see <http://www.gnu.org/licenses/>.
*/

/*
This file has been auto generated from unified-targets repo.

The auto generation is transitional only, please remove this comment once the file is edited.
*/

#define FC_TARGET_MCU STM32H730

#define BOARD_NAME SPRACINGH7RF
Expand Down Expand Up @@ -273,16 +267,11 @@
//TODO #define PINIO_CONFIG 1,1,1,1
//TODO #define PINIO_BOX 40,255,255,255

//TODO #define BLACKBOX_DEVICE SDCARD
#define ENABLE_BLACKBOX_LOGGING_ON_SDCARD_BY_DEFAULT

//TODO #define CURRENT_METER ADC
//TODO #define BATTERY_METER ADC

//TODO #define SDCARD_DETECT_INVERTED ON
//TODO #define SDCARD_MODE SDIO
//TODO #define SDIO_USE_4BIT_WIDTH ON
//TODO #define SDIO_DEVICE 1

#define USE_SPI_GYRO
#define GYRO_1_SPI_INSTANCE SPI6
#define GYRO_1_ALIGN CW270_DEG_FLIP
44 changes: 17 additions & 27 deletions src/main/pg/gyrodev.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@
#include "drivers/sensor.h"
#include "sensors/gyro.h"

#ifndef GYRO_1_SPI_INSTANCE
#define GYRO_1_SPI_INSTANCE NULL
#endif

#ifndef GYRO_1_CS_PIN
#define GYRO_1_CS_PIN NONE
#endif
Expand All @@ -46,10 +42,6 @@
#define GYRO_1_EXTI_PIN NONE
#endif

#ifndef GYRO_2_SPI_INSTANCE
#define GYRO_2_SPI_INSTANCE NULL
#endif

#ifndef GYRO_2_CS_PIN
#define GYRO_2_CS_PIN NONE
#endif
Expand All @@ -75,24 +67,15 @@
#define GYRO_2_ALIGN CW0_DEG
#endif

ioTag_t selectMPUIntExtiConfigByHardwareRevision(void); // XXX Should be gone

#if defined(USE_SPI_GYRO) || defined(USE_I2C_GYRO)
static void gyroResetCommonDeviceConfig(gyroDeviceConfig_t *devconf, ioTag_t extiTag, uint8_t alignment, sensorAlignment_t customAlignment)
{
devconf->extiTag = extiTag;
devconf->alignment = alignment;
devconf->customAlignment = customAlignment;
}
#endif

#ifdef USE_SPI_GYRO
#if defined(USE_SPI_GYRO) && (defined(GYRO_1_SPI_INSTANCE) || defined(GYRO_2_SPI_INSTANCE))
static void gyroResetSpiDeviceConfig(gyroDeviceConfig_t *devconf, SPI_TypeDef *instance, ioTag_t csnTag, ioTag_t extiTag, uint8_t alignment, sensorAlignment_t customAlignment)
{
devconf->busType = BUS_TYPE_SPI;
devconf->spiBus = SPI_DEV_TO_CFG(spiDeviceByInstance(instance));
devconf->csnTag = csnTag;
gyroResetCommonDeviceConfig(devconf, extiTag, alignment, customAlignment);
devconf->extiTag = extiTag;
devconf->alignment = alignment;
devconf->customAlignment = customAlignment;
}
#endif

Expand All @@ -102,7 +85,9 @@ static void gyroResetI2cDeviceConfig(gyroDeviceConfig_t *devconf, I2CDevice i2cb
devconf->busType = BUS_TYPE_I2C;
devconf->i2cBus = I2C_DEV_TO_CFG(i2cbus);
devconf->i2cAddress = GYRO_I2C_ADDRESS;
gyroResetCommonDeviceConfig(devconf, extiTag, alignment, customAlignment);
devconf->extiTag = extiTag;
devconf->alignment = alignment;
devconf->customAlignment = customAlignment;
}
#endif

Expand All @@ -120,7 +105,11 @@ void pgResetFn_gyroDeviceConfig(gyroDeviceConfig_t *devconf)

// All multi-gyro boards use SPI based gyros.
#ifdef USE_SPI_GYRO
#ifdef GYRO_1_SPI_INSTANCE
gyroResetSpiDeviceConfig(&devconf[0], GYRO_1_SPI_INSTANCE, IO_TAG(GYRO_1_CS_PIN), IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, customAlignment1);
#else
devconf[0].busType = BUS_TYPE_NONE;
#endif
#ifdef USE_MULTI_GYRO
devconf[1].index = 1;
sensorAlignment_t customAlignment2 = CUSTOM_ALIGN_CW0_DEG;
Expand All @@ -129,7 +118,13 @@ void pgResetFn_gyroDeviceConfig(gyroDeviceConfig_t *devconf)
#else
buildAlignmentFromStandardAlignment(&customAlignment2, GYRO_2_ALIGN);
#endif // GYRO_2_CUSTOM_ALIGN

#ifdef GYRO_2_SPI_INSTANCE
gyroResetSpiDeviceConfig(&devconf[1], GYRO_2_SPI_INSTANCE, IO_TAG(GYRO_2_CS_PIN), IO_TAG(GYRO_2_EXTI_PIN), GYRO_2_ALIGN, customAlignment2);
#else
devconf[1].busType = BUS_TYPE_NONE;
#endif

#endif // USE_MULTI_GYRO
#endif // USE_SPI_GYRO

Expand All @@ -138,9 +133,4 @@ void pgResetFn_gyroDeviceConfig(gyroDeviceConfig_t *devconf)
devconf[0].i2cBus = I2C_DEV_TO_CFG(I2CINVALID); // XXX Not required?
gyroResetI2cDeviceConfig(&devconf[0], I2C_DEVICE, IO_TAG(GYRO_1_EXTI_PIN), GYRO_1_ALIGN, customAlignment1);
#endif

// Special treatment for very rare F3 targets with variants having either I2C or SPI acc/gyro chip; mark it for run time detection.
#if defined(USE_SPI_GYRO) && defined(USE_I2C_GYRO)
devconf[0].busType = BUS_TYPE_GYRO_AUTO;
#endif
}