This repository was archived by the owner on Oct 1, 2021. It is now read-only.
forked from PX4/PX4-Autopilot
-
Notifications
You must be signed in to change notification settings - Fork 440
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added mavstation board driver and module supporting mavlink pasthrough
- Loading branch information
Showing
20 changed files
with
1,998 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
/**************************************************************************** | ||
* | ||
* Copyright (c) 2012-2014 PX4 Development Team. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
* are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* 2. Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in | ||
* the documentation and/or other materials provided with the | ||
* distribution. | ||
* 3. Neither the name PX4 nor the names of its contributors may be | ||
* used to endorse or promote products derived from this software | ||
* without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS | ||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | ||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
****************************************************************************/ | ||
|
||
/** | ||
* @file board_config.h | ||
* | ||
* PX4IO hardware definitions. | ||
*/ | ||
|
||
#pragma once | ||
|
||
/************************************************************************************ | ||
* Included Files | ||
************************************************************************************/ | ||
|
||
#include <nuttx/config.h> | ||
#include <nuttx/compiler.h> | ||
#include <stdint.h> | ||
|
||
/* these headers are not C++ safe */ | ||
#include <stm32.h> | ||
#include <arch/board/board.h> | ||
|
||
/************************************************************************************ | ||
* Definitions | ||
************************************************************************************/ | ||
|
||
/* PX4IO GPIOs **********************************************************************/ | ||
/* LEDs */ | ||
|
||
#define GPIO_LED1 (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|\ | ||
GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN14) | ||
#define GPIO_LED2 (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|\ | ||
GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN15) | ||
#define GPIO_LED3 (GPIO_OUTPUT|GPIO_CNF_OUTOD|GPIO_MODE_50MHz|\ | ||
GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN10) | ||
|
||
/* Safety switch button *************************************************************/ | ||
|
||
#define GPIO_BTN_SAFETY (GPIO_INPUT|GPIO_CNF_INFLOAT|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN5) | ||
|
||
/* Power switch controls ************************************************************/ | ||
|
||
#define GPIO_ACC1_PWR_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN13) | ||
#define GPIO_ACC2_PWR_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN14) | ||
#define GPIO_SERVO_PWR_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN15) | ||
|
||
#define GPIO_ACC_OC_DETECT (GPIO_INPUT|GPIO_CNF_INPULLUP|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN12) | ||
#define GPIO_SERVO_OC_DETECT (GPIO_INPUT|GPIO_CNF_INPULLUP|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN13) | ||
|
||
#define GPIO_RELAY1_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN12) | ||
#define GPIO_RELAY2_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN11) | ||
|
||
/* Analog inputs ********************************************************************/ | ||
|
||
#define GPIO_ADC_VBATT (GPIO_INPUT|GPIO_CNF_ANALOGIN|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN4) | ||
#define GPIO_ADC_IN5 (GPIO_INPUT|GPIO_CNF_ANALOGIN|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN5) | ||
|
||
/* | ||
* High-resolution timer | ||
*/ | ||
#define HRT_TIMER 1 /* use timer1 for the HRT */ | ||
#define HRT_TIMER_CHANNEL 2 /* use capture/compare channel 2 */ | ||
#define HRT_PPM_CHANNEL 1 /* use capture/compare channel 1 */ | ||
#define GPIO_PPM_IN (GPIO_ALT|GPIO_CNF_INPULLUP|GPIO_PORTE|GPIO_PIN9) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
/**************************************************************************** | ||
* | ||
* Copyright (C) 2012 PX4 Development Team. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
* are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* 2. Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in | ||
* the documentation and/or other materials provided with the | ||
* distribution. | ||
* 3. Neither the name PX4 nor the names of its contributors may be | ||
* used to endorse or promote products derived from this software | ||
* without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS | ||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | ||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
****************************************************************************/ | ||
|
||
/** | ||
* @file mavstation_init.c | ||
* | ||
* mavstation-specific early startup code. This file implements the | ||
* nsh_archinitialize() function that is called early by nsh during startup. | ||
* | ||
* Code here is run before the rcS script is invoked; it should start required | ||
* subsystems and perform board-specific initialisation. | ||
*/ | ||
|
||
/**************************************************************************** | ||
* Included Files | ||
****************************************************************************/ | ||
|
||
#include <nuttx/config.h> | ||
|
||
#include <stdbool.h> | ||
#include <stdio.h> | ||
#include <debug.h> | ||
#include <errno.h> | ||
|
||
#include <nuttx/arch.h> | ||
|
||
#include <stm32.h> | ||
#include "mavstation_internal.h" | ||
|
||
#include <arch/board/board.h> | ||
|
||
/**************************************************************************** | ||
* Pre-Processor Definitions | ||
****************************************************************************/ | ||
|
||
/* Configuration ************************************************************/ | ||
|
||
/* Debug ********************************************************************/ | ||
|
||
#ifdef CONFIG_CPP_HAVE_VARARGS | ||
# ifdef CONFIG_DEBUG | ||
# define message(...) lowsyslog(__VA_ARGS__) | ||
# else | ||
# define message(...) printf(__VA_ARGS__) | ||
# endif | ||
#else | ||
# ifdef CONFIG_DEBUG | ||
# define message lowsyslog | ||
# else | ||
# define message printf | ||
# endif | ||
#endif | ||
|
||
/**************************************************************************** | ||
* Protected Functions | ||
****************************************************************************/ | ||
|
||
/**************************************************************************** | ||
* Public Functions | ||
****************************************************************************/ | ||
|
||
/************************************************************************************ | ||
* Name: stm32_boardinitialize | ||
* | ||
* Description: | ||
* All STM32 architectures must provide the following entry point. This entry point | ||
* is called early in the intitialization -- after all memory has been configured | ||
* and mapped but before any devices have been initialized. | ||
* | ||
************************************************************************************/ | ||
|
||
__EXPORT void stm32_boardinitialize(void) | ||
{ | ||
|
||
/* configure GPIOs */ | ||
|
||
/* turn off - all leds are active low */ | ||
stm32_gpiowrite(GPIO_LED1, true); | ||
stm32_gpiowrite(GPIO_LED2, true); | ||
stm32_gpiowrite(GPIO_LED3, true); | ||
stm32_configgpio(GPIO_LED1); | ||
stm32_configgpio(GPIO_LED2); | ||
stm32_configgpio(GPIO_LED3); | ||
|
||
|
||
stm32_configgpio(GPIO_BTN_SAFETY); | ||
|
||
/* spektrum power enable is active high - disable it by default */ | ||
stm32_gpiowrite(GPIO_SPEKTRUM_PWR_EN, false); | ||
stm32_configgpio(GPIO_SPEKTRUM_PWR_EN); | ||
|
||
/* servo power enable is active low, and has a pull down resistor | ||
* to keep it low during boot (since it may power the whole board.) | ||
*/ | ||
stm32_gpiowrite(GPIO_SERVO_PWR_EN, false); | ||
stm32_configgpio(GPIO_SERVO_PWR_EN); | ||
|
||
stm32_configgpio(GPIO_SERVO_FAULT_DETECT); | ||
|
||
stm32_configgpio(GPIO_TIM_RSSI); /* xxx alternate function */ | ||
stm32_configgpio(GPIO_ADC_RSSI); | ||
stm32_configgpio(GPIO_ADC_VSERVO); | ||
|
||
stm32_configgpio(GPIO_SBUS_INPUT); /* xxx alternate function */ | ||
|
||
stm32_gpiowrite(GPIO_SBUS_OUTPUT, false); | ||
stm32_configgpio(GPIO_SBUS_OUTPUT); | ||
|
||
/* sbus output enable is active low - disable it by default */ | ||
stm32_gpiowrite(GPIO_SBUS_OENABLE, true); | ||
stm32_configgpio(GPIO_SBUS_OENABLE); | ||
|
||
|
||
stm32_configgpio(GPIO_PPM); /* xxx alternate function */ | ||
|
||
stm32_gpiowrite(GPIO_PWM1, false); | ||
stm32_configgpio(GPIO_PWM1); | ||
|
||
stm32_gpiowrite(GPIO_PWM2, false); | ||
stm32_configgpio(GPIO_PWM2); | ||
|
||
stm32_gpiowrite(GPIO_PWM3, false); | ||
stm32_configgpio(GPIO_PWM3); | ||
|
||
stm32_gpiowrite(GPIO_PWM4, false); | ||
stm32_configgpio(GPIO_PWM4); | ||
|
||
stm32_gpiowrite(GPIO_PWM5, false); | ||
stm32_configgpio(GPIO_PWM5); | ||
|
||
stm32_gpiowrite(GPIO_PWM6, false); | ||
stm32_configgpio(GPIO_PWM6); | ||
|
||
stm32_gpiowrite(GPIO_PWM7, false); | ||
stm32_configgpio(GPIO_PWM7); | ||
|
||
stm32_gpiowrite(GPIO_PWM8, false); | ||
stm32_configgpio(GPIO_PWM8); | ||
|
||
// message("[boot] Successfully initialized mavstation gpios\n"); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
/**************************************************************************** | ||
* | ||
* Copyright (C) 2012 PX4 Development Team. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
* are met: | ||
* | ||
* 1. Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* 2. Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in | ||
* the documentation and/or other materials provided with the | ||
* distribution. | ||
* 3. Neither the name PX4 nor the names of its contributors may be | ||
* used to endorse or promote products derived from this software | ||
* without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS | ||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | ||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
* POSSIBILITY OF SUCH DAMAGE. | ||
* | ||
****************************************************************************/ | ||
|
||
/** | ||
* @file mavstation_internal.h | ||
* | ||
* Mavstation internal definitions | ||
*/ | ||
|
||
#pragma once | ||
|
||
/****************************************************************************** | ||
* Included Files | ||
******************************************************************************/ | ||
|
||
#include <nuttx/config.h> | ||
#include <nuttx/compiler.h> | ||
#include <stdint.h> | ||
|
||
/* these headers are not C++ safe */ | ||
#include <stm32.h> | ||
|
||
|
||
/****************************************************************************** | ||
* Definitions | ||
******************************************************************************/ | ||
/* Configuration **************************************************************/ | ||
|
||
/****************************************************************************** | ||
* GPIOS | ||
******************************************************************************/ | ||
|
||
/* LEDS **********************************************************************/ | ||
|
||
#define GPIO_LED1 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN14) | ||
#define GPIO_LED2 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN15) | ||
#define GPIO_LED3 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN13) | ||
|
||
#define GPIO_LED_BLUE BOARD_GPIO_LED1 | ||
#define GPIO_LED_AMBER BOARD_GPIO_LED2 | ||
#define GPIO_LED_SAFETY BOARD_GPIO_LED3 | ||
|
||
/* Safety switch button *******************************************************/ | ||
|
||
#define GPIO_BTN_SAFETY (GPIO_INPUT|GPIO_CNF_INFLOAT|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN5) | ||
|
||
/* Power switch controls ******************************************************/ | ||
|
||
#define GPIO_SPEKTRUM_PWR_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN13) | ||
|
||
#define GPIO_SERVO_PWR_EN (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTC|GPIO_PIN15) | ||
|
||
#define GPIO_SERVO_FAULT_DETECT (GPIO_INPUT|GPIO_CNF_INPULLUP|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN13) | ||
|
||
|
||
/* Analog inputs **************************************************************/ | ||
|
||
#define GPIO_ADC_VSERVO (GPIO_INPUT|GPIO_CNF_ANALOGIN|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN4) | ||
/* the same rssi signal goes to both an adc and a timer input */ | ||
#define GPIO_ADC_RSSI (GPIO_INPUT|GPIO_CNF_ANALOGIN|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN5) | ||
/* floating pin */ | ||
#define GPIO_TIM_RSSI (GPIO_INPUT|GPIO_CNF_INFLOAT|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN12) | ||
|
||
/* PWM pins **************************************************************/ | ||
|
||
#define GPIO_PPM (GPIO_INPUT|GPIO_CNF_INFLOAT|GPIO_MODE_INPUT|GPIO_PORTA|GPIO_PIN8) | ||
|
||
#define GPIO_PWM1 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN0) | ||
#define GPIO_PWM2 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN1) | ||
#define GPIO_PWM3 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN8) | ||
#define GPIO_PWM4 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN9) | ||
#define GPIO_PWM5 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN6) | ||
#define GPIO_PWM6 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN7) | ||
#define GPIO_PWM7 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN0) | ||
#define GPIO_PWM8 (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN1) | ||
|
||
/* SBUS pins *************************************************************/ | ||
|
||
#define GPIO_SBUS_INPUT (GPIO_INPUT|GPIO_CNF_INFLOAT|GPIO_MODE_INPUT|GPIO_PORTB|GPIO_PIN11) | ||
#define GPIO_SBUS_OUTPUT (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN10) | ||
#define GPIO_SBUS_OENABLE (GPIO_OUTPUT|GPIO_CNF_OUTPP|GPIO_MODE_50MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN4) | ||
|
Oops, something went wrong.