1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-18 05:45:31 +03:00

Added support for multiple serial inverters.

This commit is contained in:
Michael Keller 2017-01-13 14:11:25 +13:00 committed by mikeller
parent 71d3963fdb
commit 19c1709250
20 changed files with 112 additions and 64 deletions

View file

@ -20,31 +20,98 @@
#include "platform.h" #include "platform.h"
#ifdef INVERTER
#include "io.h" #include "io.h"
#include "io_impl.h" #include "io_impl.h"
#include "inverter.h" #include "inverter.h"
/* #ifdef USE_INVERTER
TODO: move this to support multiple inverters on different UARTs etc static void inverterSet(IO_t pin, bool on)
possibly move to put it in the UART driver itself.
*/
static IO_t pin = IO_NONE;
void initInverter(void)
{
pin = IOGetByTag(IO_TAG(INVERTER));
IOInit(pin, OWNER_INVERTER, 1);
IOConfigGPIO(pin, IOCFG_OUT_PP);
inverterSet(false);
}
void inverterSet(bool on)
{ {
IOWrite(pin, on); IOWrite(pin, on);
} }
static void initInverter(ioTag_t ioTag)
{
IO_t pin = IOGetByTag(ioTag);
IOInit(pin, OWNER_INVERTER, 1);
IOConfigGPIO(pin, IOCFG_OUT_PP);
inverterSet(pin, false);
}
#endif #endif
void initInverters(void)
{
#ifdef INVERTER_PIN_USART1
initInverter(IO_TAG(INVERTER_PIN_USART1));
#endif
#ifdef INVERTER_PIN_USART2
initInverter(IO_TAG(INVERTER_PIN_USART2));
#endif
#ifdef INVERTER_PIN_USART3
initInverter(IO_TAG(INVERTER_PIN_USART3));
#endif
#ifdef INVERTER_PIN_USART4
initInverter(IO_TAG(INVERTER_PIN_USART4));
#endif
#ifdef INVERTER_PIN_USART5
initInverter(IO_TAG(INVERTER_PIN_USART5));
#endif
#ifdef INVERTER_PIN_USART6
initInverter(IO_TAG(INVERTER_PIN_USART6));
#endif
}
void enableInverter(USART_TypeDef *USARTx, bool on)
{
#ifdef USE_INVERTER
IO_t pin = IO_NONE;
#ifdef INVERTER_PIN_USART1
if (USARTx == USART1) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART1));
}
#endif
#ifdef INVERTER_PIN_USART2
if (USARTx == USART2) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART2));
}
#endif
#ifdef INVERTER_PIN_USART3
if (USARTx == USART3) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART3));
}
#endif
#ifdef INVERTER_PIN_USART4
if (USARTx == USART4) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART4));
}
#endif
#ifdef INVERTER_PIN_USART5
if (USARTx == USART5) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART5));
}
#endif
#ifdef INVERTER_PIN_USART6
if (USARTx == USART6) {
pin = IOGetByTag(IO_TAG(INVERTER_PIN_USART6));
}
#endif
inverterSet(pin, on);
#else
UNUSED(USARTx);
UNUSED(on);
#endif
}

View file

@ -17,14 +17,10 @@
#pragma once #pragma once
#ifdef INVERTER #if defined(INVERTER_PIN_USART1) || defined(INVERTER_PIN_USART2) || defined(INVERTER_PIN_USART3) || defined(INVERTER_PIN_USART4) || defined(INVERTER_PIN_USART5) || defined(INVERTER_PIN_USART6)
void inverterSet(bool on); #define USE_INVERTER
#define INVERTER_OFF inverterSet(false)
#define INVERTER_ON inverterSet(true)
#else
#define INVERTER_OFF do {} while(0)
#define INVERTER_ON do {} while(0)
#endif #endif
void initInverter(void); void initInverters(void);
void enableInverter(USART_TypeDef *USARTx, bool on);

View file

@ -36,15 +36,15 @@
#include "serial_uart_impl.h" #include "serial_uart_impl.h"
static void usartConfigurePinInversion(uartPort_t *uartPort) { static void usartConfigurePinInversion(uartPort_t *uartPort) {
#if !defined(INVERTER) && !defined(STM32F303xC) #if !defined(USE_INVERTER) && !defined(STM32F303xC)
UNUSED(uartPort); UNUSED(uartPort);
#else #else
bool inverted = uartPort->port.options & SERIAL_INVERTED; bool inverted = uartPort->port.options & SERIAL_INVERTED;
#ifdef INVERTER #ifdef USE_INVERTER
if (inverted && uartPort->USARTx == INVERTER_USART) { if (inverted) {
// Enable hardware inverter if available. // Enable hardware inverter if available.
INVERTER_ON; enableInverter(uartPort->USARTx, true);
} }
#endif #endif

View file

@ -308,8 +308,8 @@ void init(void)
beeperInit(beeperConfig()); beeperInit(beeperConfig());
#endif #endif
/* temp until PGs are implemented. */ /* temp until PGs are implemented. */
#ifdef INVERTER #ifdef USE_INVERTER
initInverter(); initInverters();
#endif #endif
#ifdef USE_BST #ifdef USE_BST

View file

@ -33,8 +33,7 @@
#define BEEPER PC13 #define BEEPER PC13
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PC15 #define INVERTER_PIN_USART2 PC15
#define INVERTER_USART USART2
// MPU interrupt // MPU interrupt
#define USE_EXTI #define USE_EXTI

View file

@ -38,8 +38,8 @@
#define BEEPER_OPT PB7 #define BEEPER_OPT PB7
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PB15 #define INVERTER_PIN_USART6 PB15
#define INVERTER_USART USART6 //#define INVERTER_PIN_USART1 PC9
#define UART1_INVERTER PC9 #define UART1_INVERTER PC9

View file

@ -19,8 +19,7 @@
#define LED0 PB3 #define LED0 PB3
#define INVERTER PB2 // PB2 (BOOT1) used as inverter select GPIO #define INVERTER_PIN_USART1 PB2 // PB2 (BOOT1) used as inverter select GPIO
#define INVERTER_USART USART1
#define BEEPER PA15 #define BEEPER PA15
#define BEEPER_OPT PA2 #define BEEPER_OPT PA2

View file

@ -33,8 +33,7 @@
#define BEEPER PC5 #define BEEPER PC5
#define INVERTER PB2 // PB2 used as inverter select GPIO #define INVERTER_PIN_USART2 PB2 // PB2 used as inverter select GPIO
#define INVERTER_USART USART2
#define MPU6000_CS_PIN PC4 #define MPU6000_CS_PIN PC4
#define MPU6000_SPI_INSTANCE SPI1 #define MPU6000_SPI_INSTANCE SPI1

View file

@ -28,8 +28,7 @@
#define BEEPER PE5 #define BEEPER PE5
#define INVERTER PD3 #define INVERTER_PIN_USART6 PD3
#define INVERTER_USART USART6

View file

@ -28,8 +28,7 @@
#define BEEPER PC15 #define BEEPER PC15
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PC8 #define INVERTER_PIN_USART6 PC8
#define INVERTER_USART USART6
#define USE_EXTI #define USE_EXTI
#define MPU_INT_EXTI PC4 #define MPU_INT_EXTI PC4

View file

@ -28,8 +28,7 @@
#define BEEPER PA8 #define BEEPER PA8
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PC0 // PC0 used as inverter select GPIO #define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
#define INVERTER_USART USART1
// MPU6000 interrupts // MPU6000 interrupts
#define USE_EXTI #define USE_EXTI

View file

@ -28,8 +28,7 @@
#define BEEPER PA8 #define BEEPER PA8
#define INVERTER PC0 // PC0 used as inverter select GPIO #define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
#define INVERTER_USART USART1
// MPU6000 interrupts // MPU6000 interrupts
#define USE_EXTI #define USE_EXTI

View file

@ -27,8 +27,7 @@
#define BARO_XCLR_PIN PC13 #define BARO_XCLR_PIN PC13
#define BARO_EOC_PIN PC14 #define BARO_EOC_PIN PC14
#define INVERTER PB2 // PB2 (BOOT1) abused as inverter select GPIO #define INVERTER_PIN_USART2 PB2 // PB2 (BOOT1) abused as inverter select GPIO
#define INVERTER_USART USART2
#define USE_EXTI #define USE_EXTI
#define MAG_INT_EXTI PC14 #define MAG_INT_EXTI PC14

View file

@ -44,8 +44,7 @@
//#define BARO_XCLR_PIN PC13 //#define BARO_XCLR_PIN PC13
//#define BARO_EOC_PIN PC14 //#define BARO_EOC_PIN PC14
#define INVERTER PB2 // PB2 (BOOT1) abused as inverter select GPIO #define INVERTER_PIN_USART2 PB2 // PB2 (BOOT1) abused as inverter select GPIO
#define INVERTER_USART USART2
#define USE_EXTI #define USE_EXTI
#define MAG_INT_EXTI PC14 #define MAG_INT_EXTI PC14

View file

@ -35,8 +35,7 @@
#define BEEPER PB4 #define BEEPER PB4
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PC0 // PC0 used as inverter select GPIO #define INVERTER_PIN_USART1 PC0 // PC0 used as inverter select GPIO
#define INVERTER_USART USART1
#define MPU6000_CS_PIN PA4 #define MPU6000_CS_PIN PA4
#define MPU6000_SPI_INSTANCE SPI1 #define MPU6000_SPI_INSTANCE SPI1

View file

@ -69,8 +69,7 @@
#endif #endif
// PC0 used as inverter select GPIO // PC0 used as inverter select GPIO
#define INVERTER PC0 #define INVERTER_PIN_USART1 PC0
#define INVERTER_USART USART1
#define MPU6000_CS_PIN PA4 #define MPU6000_CS_PIN PA4
#define MPU6000_SPI_INSTANCE SPI1 #define MPU6000_SPI_INSTANCE SPI1

View file

@ -30,8 +30,7 @@
#define BEEPER PC13 #define BEEPER PC13
#define INVERTER PC15 #define INVERTER_PIN_USART2 PC15 //Sbus on USART 2 of nano.
#define INVERTER_USART USART2 //Sbus on USART 2 of nano.
#define MPU9250_CS_PIN PB12 #define MPU9250_CS_PIN PB12
#define MPU9250_SPI_INSTANCE SPI2 #define MPU9250_SPI_INSTANCE SPI2

View file

@ -32,8 +32,7 @@
#define BEEPER PC9 #define BEEPER PC9
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PC6 #define INVERTER_PIN_USART6 PC6
#define INVERTER_USART USART6
#define USE_ESC_SENSOR #define USE_ESC_SENSOR

View file

@ -27,8 +27,7 @@
#define BEEPER PA0 #define BEEPER PA0
#define BEEPER_INVERTED #define BEEPER_INVERTED
#define INVERTER PD7 #define INVERTER_PIN_USART6 PD7
#define INVERTER_USART USART6
#define MPU6500_CS_PIN PE10 #define MPU6500_CS_PIN PE10
#define MPU6500_SPI_INSTANCE SPI2 #define MPU6500_SPI_INSTANCE SPI2

View file

@ -29,8 +29,7 @@
#define BEEPER PC9 #define BEEPER PC9
//#define BEEPER_INVERTED //#define BEEPER_INVERTED
#define INVERTER PB15 #define INVERTER_PIN_USART6 PB15
#define INVERTER_USART USART6
// Gyro interrupt // Gyro interrupt