Skip to content

Commit 31bbda0

Browse files
authored
boards: new ARK Septentrio GPS CAN node(ark_septentrio-gps)
* update gps submodule with sbf fix * ARK Septentrio GPS initial commit
1 parent b355c16 commit 31bbda0

25 files changed

+1846
-1
lines changed

.github/workflows/compile_nuttx.yml

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
ark_can-rtk-gps,
2626
ark_cannode,
2727
ark_fmu-v6x,
28+
ark_septentrio-gps,
2829
atl_mantis-edu,
2930
av_x-v1,
3031
bitcraze_crazyflie,

.vscode/cmake-variants.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,16 @@ CONFIG:
151151
buildType: MinSizeRel
152152
settings:
153153
CONFIG: ark_can-rtk-gps_canbootloader
154+
ark_septentrio_gps_default:
155+
short: ark_septentrio_gps_default
156+
buildType: MinSizeRel
157+
settings:
158+
CONFIG: ark_septentrio_gps_default
159+
ark_septentrio_gps_canbootloader:
160+
short: ark_septentrio_gps_canbootloader
161+
buildType: MinSizeRel
162+
settings:
163+
CONFIG: ark_septentrio_gps_canbootloader
154164
ark_cannode_default:
155165
short: ark_cannode_default
156166
buildType: MinSizeRel
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
2+
CONFIG_BOARD_ARCHITECTURE="cortex-m4"
3+
CONFIG_BOARD_ROMFSROOT=""
4+
CONFIG_BOARD_CONSTRAINED_MEMORY=y
5+
CONFIG_DRIVERS_BOOTLOADERS=y
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
2+
CONFIG_BOARD_ARCHITECTURE="cortex-m4"
3+
CONFIG_BOARD_ROMFSROOT="cannode"
4+
CONFIG_BOARD_NO_HELP=y
5+
CONFIG_BOARD_CONSTRAINED_MEMORY=y
6+
CONFIG_DRIVERS_BAROMETER_BMP388=y
7+
CONFIG_DRIVERS_BOOTLOADERS=y
8+
CONFIG_DRIVERS_GPS=y
9+
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
10+
CONFIG_DRIVERS_MAGNETOMETER_BOSCH_BMM150=y
11+
CONFIG_DRIVERS_SAFETY_BUTTON=y
12+
CONFIG_DRIVERS_TONE_ALARM=y
13+
CONFIG_BOARD_UAVCAN_INTERFACES=1
14+
CONFIG_DRIVERS_UAVCANNODE=y
15+
CONFIG_UAVCANNODE_BEEP_COMMAND=y
16+
CONFIG_UAVCANNODE_GNSS_FIX=y
17+
CONFIG_UAVCANNODE_LIGHTS_COMMAND=y
18+
CONFIG_UAVCANNODE_MAGNETIC_FIELD_STRENGTH=y
19+
CONFIG_UAVCANNODE_RTK_DATA=y
20+
CONFIG_UAVCANNODE_SAFETY_BUTTON=y
21+
CONFIG_UAVCANNODE_STATIC_PRESSURE=y
22+
CONFIG_UAVCANNODE_STATIC_TEMPERATURE=y
23+
CONFIG_MODULES_GYRO_CALIBRATION=y
24+
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
25+
CONFIG_MODULES_SENSORS=y
26+
# CONFIG_SENSORS_VEHICLE_AIRSPEED is not set
27+
# CONFIG_SENSORS_VEHICLE_AIR_DATA is not set
28+
# CONFIG_SENSORS_VEHICLE_GPS_POSITION is not set
29+
CONFIG_SYSTEMCMDS_PARAM=y
30+
CONFIG_SYSTEMCMDS_PERF=y
31+
CONFIG_SYSTEMCMDS_REBOOT=y
32+
CONFIG_SYSTEMCMDS_SYSTEM_TIME=y
33+
CONFIG_SYSTEMCMDS_TOP=y
34+
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
35+
CONFIG_SYSTEMCMDS_UORB=y
36+
CONFIG_SYSTEMCMDS_VER=y
37+
CONFIG_SYSTEMCMDS_WORK_QUEUE=y
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"board_id": 84,
3+
"magic": "PX4FWv1",
4+
"description": "Firmware for the ARK Septentrio GPS board",
5+
"image": "",
6+
"build_time": 0,
7+
"summary": "ARKSEPTENTRIOGPS",
8+
"version": "0.1",
9+
"image_size": 0,
10+
"image_maxsize": 2080768,
11+
"git_identity": "",
12+
"board_revision": 0
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
#
3+
# board specific defaults
4+
#------------------------------------------------------------------------------
5+
6+
param set-default CBRK_IO_SAFETY 0
7+
param set-default CANNODE_SUB_MBD 1
8+
param set-default CANNODE_SUB_RTCM 1
9+
param set-default MBE_ENABLE 1
10+
param set-default SENS_IMU_CLPNOTI 0
11+
12+
safety_button start
13+
tone_alarm start
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/sh
2+
#
3+
# board sensors init
4+
#------------------------------------------------------------------------------
5+
gps start -d /dev/ttyS0 -p sbf
6+
7+
icm42688p -R 0 -s start
8+
9+
bmp388 -I -b 1 start
10+
11+
bmm150 -I -b 1 start
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
#
2+
# This file is autogenerated: PLEASE DO NOT EDIT IT.
3+
#
4+
# You can use "make menuconfig" to make any modifications to the installed .config file.
5+
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
6+
# modifications.
7+
#
8+
CONFIG_ARCH="arm"
9+
CONFIG_ARCH_BOARD_CUSTOM=y
10+
CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/ark/septentrio-gps/nuttx-config"
11+
CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
12+
CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
13+
CONFIG_ARCH_CHIP="stm32"
14+
CONFIG_ARCH_CHIP_STM32=y
15+
CONFIG_ARCH_CHIP_STM32F412CE=y
16+
CONFIG_ARCH_INTERRUPTSTACK=4096
17+
CONFIG_ARMV7M_MEMCPY=y
18+
CONFIG_ARMV7M_USEBASEPRI=y
19+
CONFIG_BINFMT_DISABLE=y
20+
CONFIG_BOARDCTL=y
21+
CONFIG_BOARD_LOOPSPERMSEC=16717
22+
CONFIG_DEBUG_FULLOPT=y
23+
CONFIG_DEBUG_SYMBOLS=y
24+
CONFIG_DEBUG_TCBINFO=y
25+
CONFIG_DEFAULT_SMALL=y
26+
CONFIG_DISABLE_MOUNTPOINT=y
27+
CONFIG_EXPERIMENTAL=y
28+
CONFIG_FDCLONE_DISABLE=y
29+
CONFIG_FDCLONE_STDIO=y
30+
CONFIG_HAVE_CXX=y
31+
CONFIG_HAVE_CXXINITIALIZE=y
32+
CONFIG_IDLETHREAD_STACKSIZE=4096
33+
CONFIG_INIT_STACKSIZE=4096
34+
CONFIG_LIBC_FLOATINGPOINT=y
35+
CONFIG_LIBC_LONG_LONG=y
36+
CONFIG_LIBC_STRERROR=y
37+
CONFIG_MM_REGIONS=2
38+
CONFIG_NAME_MAX=0
39+
CONFIG_NUNGET_CHARS=0
40+
CONFIG_PREALLOC_TIMERS=0
41+
CONFIG_PTHREAD_STACK_MIN=512
42+
CONFIG_RAM_SIZE=262144
43+
CONFIG_RAM_START=0x20010000
44+
CONFIG_RAW_BINARY=y
45+
CONFIG_SIG_DEFAULT=y
46+
CONFIG_SIG_SIGALRM_ACTION=y
47+
CONFIG_SIG_SIGUSR1_ACTION=y
48+
CONFIG_SIG_SIGUSR2_ACTION=y
49+
CONFIG_STACK_COLORATION=y
50+
CONFIG_START_DAY=30
51+
CONFIG_START_MONTH=11
52+
CONFIG_STDIO_DISABLE_BUFFERING=y
53+
CONFIG_STM32_NOEXT_VECTORS=y
54+
CONFIG_STM32_TIM8=y
55+
CONFIG_TASK_NAME_SIZE=0
56+
CONFIG_USEC_PER_TICK=1000
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
/************************************************************************************
2+
* configs/px4fmu/include/board.h
3+
* include/arch/board/board.h
4+
*
5+
* Copyright (C) 2009 Gregory Nutt. All rights reserved.
6+
* Author: Gregory Nutt <[email protected]>
7+
*
8+
* Redistribution and use in source and binary forms, with or without
9+
* modification, are permitted provided that the following conditions
10+
* are met:
11+
*
12+
* 1. Redistributions of source code must retain the above copyright
13+
* notice, this list of conditions and the following disclaimer.
14+
* 2. Redistributions in binary form must reproduce the above copyright
15+
* notice, this list of conditions and the following disclaimer in
16+
* the documentation and/or other materials provided with the
17+
* distribution.
18+
* 3. Neither the name NuttX nor the names of its contributors may be
19+
* used to endorse or promote products derived from this software
20+
* without specific prior written permission.
21+
*
22+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
29+
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
30+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33+
* POSSIBILITY OF SUCH DAMAGE.
34+
*
35+
************************************************************************************/
36+
#include "board_dma_map.h"
37+
38+
#ifndef __ARCH_BOARD_BOARD_H
39+
#define __ARCH_BOARD_BOARD_H
40+
41+
#include <nuttx/config.h>
42+
#ifndef __ASSEMBLY__
43+
# include <stdint.h>
44+
#endif
45+
46+
#include <stm32.h>
47+
48+
/* HSI - 8 MHz RC factory-trimmed
49+
* LSI - 32 KHz RC
50+
* HSE - 8 MHz Crystal
51+
* LSE - not installed
52+
*/
53+
#define STM32_BOARD_USEHSE 1
54+
#define STM32_BOARD_XTAL 8000000
55+
#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL
56+
57+
#define STM32_HSI_FREQUENCY 16000000ul
58+
#define STM32_LSI_FREQUENCY 32000
59+
60+
/* Main PLL Configuration */
61+
#define STM32_PLLCFG_PLLM RCC_PLLCFG_PLLM(8)
62+
#define STM32_PLLCFG_PLLN RCC_PLLCFG_PLLN(384)
63+
#define STM32_PLLCFG_PLLP RCC_PLLCFG_PLLP_4
64+
#define STM32_PLLCFG_PLLQ RCC_PLLCFG_PLLQ(8)
65+
#define STM32_PLLCFG_PLLR RCC_PLLCFG_PLLR(2)
66+
67+
#define STM32_RCC_PLLI2SCFGR_PLLI2SM RCC_PLLI2SCFGR_PLLI2SM(16)
68+
#define STM32_RCC_PLLI2SCFGR_PLLI2SN RCC_PLLI2SCFGR_PLLI2SN(192)
69+
#define STM32_RCC_PLLI2SCFGR_PLLI2SQ RCC_PLLI2SCFGR_PLLI2SQ(2)
70+
#define STM32_RCC_PLLI2SCFGR_PLLI2SR RCC_PLLI2SCFGR_PLLI2SR(2)
71+
#define STM32_RCC_PLLI2SCFGR_PLLI2SSRC RCC_PLLI2SCFGR_PLLI2SSRC(0) /* HSE or HSI depending on PLLSRC of PLLCFGR*/
72+
73+
#define STM32_RCC_DCKCFGR2_CK48MSEL RCC_DCKCFGR2_CK48MSEL_PLL
74+
#define STM32_RCC_DCKCFGR2_FMPI2C1SEL RCC_DCKCFGR2_FMPI2C1SEL_APB
75+
#define STM32_RCC_DCKCFGR2_SDIOSEL RCC_DCKCFGR2_SDIOSEL_48MHZ
76+
77+
#define STM32_SYSCLK_FREQUENCY 96000000ul
78+
79+
/* AHB clock (HCLK) is SYSCLK (96MHz) */
80+
#define STM32_RCC_CFGR_HPRE RCC_CFGR_HPRE_SYSCLK /* HCLK = SYSCLK / 1 */
81+
#define STM32_HCLK_FREQUENCY STM32_SYSCLK_FREQUENCY
82+
#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* Same as above, to satisfy compiler */
83+
84+
/* APB1 clock (PCLK1) is HCLK/2 (48MHz) */
85+
#define STM32_RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */
86+
#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2)
87+
88+
/* Timers driven from APB1 will be twice PCLK1 (see page 112 of reference manual) */
89+
#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY)
90+
#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY)
91+
#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY)
92+
#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY)
93+
#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY)
94+
#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY)
95+
#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY)
96+
97+
/* APB2 clock (PCLK2) is HCLK (96MHz) */
98+
#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLK /* PCLK2 = HCLK */
99+
#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY)
100+
101+
/* Timers driven from APB2 will be PCLK2 since no prescale division */
102+
#define STM32_APB2_TIM1_CLKIN (STM32_PCLK2_FREQUENCY)
103+
#define STM32_APB2_TIM8_CLKIN (STM32_PCLK2_FREQUENCY)
104+
#define STM32_APB2_TIM9_CLKIN (STM32_PCLK2_FREQUENCY)
105+
#define STM32_APB2_TIM10_CLKIN (STM32_PCLK2_FREQUENCY)
106+
#define STM32_APB2_TIM11_CLKIN (STM32_PCLK2_FREQUENCY)
107+
108+
/* Timer Frequencies, if APBx is set to 1, frequency is same to APBx otherwise frequency is 2xAPBx. */
109+
#define BOARD_TIM2_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
110+
#define BOARD_TIM3_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
111+
#define BOARD_TIM4_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
112+
#define BOARD_TIM5_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
113+
#define BOARD_TIM6_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
114+
#define BOARD_TIM7_FREQUENCY (2 * STM32_PCLK1_FREQUENCY)
115+
#define BOARD_TIM8_FREQUENCY (2 * STM32_PCLK2_FREQUENCY)
116+
117+
/* Alternate function pin selections ************************************************/
118+
119+
/* UARTs */
120+
#define GPIO_USART1_RX GPIO_USART1_RX_2
121+
#define GPIO_USART1_TX GPIO_USART1_TX_3
122+
123+
#define GPIO_USART2_RX GPIO_USART2_RX_1
124+
#define GPIO_USART2_TX GPIO_USART2_TX_1
125+
126+
/* CAN */
127+
#define GPIO_CAN1_RX GPIO_CAN1_RX_1
128+
#define GPIO_CAN1_TX GPIO_CAN1_TX_1
129+
130+
/* I2C */
131+
132+
#define GPIO_MCU_I2C1_SCL
133+
#define GPIO_MCU_I2C1_SDA
134+
135+
#define GPIO_I2C1_SCL GPIO_I2C1_SCL_1
136+
#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1
137+
138+
#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN6)
139+
#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7)
140+
141+
#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1
142+
#define GPIO_I2C2_SDA GPIO_I2C2_SDA_4
143+
144+
#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN9)
145+
#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10)
146+
147+
/* SPI */
148+
#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1
149+
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1
150+
#define GPIO_SPI1_SCK GPIO_SPI1_SCK_1
151+
152+
#endif /* __ARCH_BOARD_BOARD_H */
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/****************************************************************************
2+
*
3+
* Copyright (c) 2021 PX4 Development Team. All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
*
9+
* 1. Redistributions of source code must retain the above copyright
10+
* notice, this list of conditions and the following disclaimer.
11+
* 2. Redistributions in binary form must reproduce the above copyright
12+
* notice, this list of conditions and the following disclaimer in
13+
* the documentation and/or other materials provided with the
14+
* distribution.
15+
* 3. Neither the name PX4 nor the names of its contributors may be
16+
* used to endorse or promote products derived from this software
17+
* without specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23+
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25+
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
26+
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27+
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29+
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30+
* POSSIBILITY OF SUCH DAMAGE.
31+
*
32+
****************************************************************************/
33+
34+
#pragma once
35+
36+
// DMA1 Channel/Stream Selections
37+
//--------------------------------------------//---------------------------//----------------
38+
39+
40+
// DMA2 Channel/Stream Selections
41+
//--------------------------------------------//---------------------------//----------------
42+
#define DMACHAN_SPI1_RX DMAMAP_SPI1_RX_1 // DMA2, Stream 0, Channel 3
43+
#define DMACHAN_SPI1_TX DMAMAP_SPI1_TX_1 // DMA2, Stream 3, Channel 3
44+
#define DMACHAN_USART1_RX DMAMAP_USART1_RX_1 // DMA2, Stream 2, Channel 4
45+
#define DMAMAP_USART1_RX DMAMAP_USART1_RX_1
46+
//#define DMACHAN_USART1_TX DMAMAP_USART1_TX // DMA2, Stream 7, Channel 4

0 commit comments

Comments
 (0)