Integrated flight systems board with flight controller, avionics & instrumentation, radio, science, and development support for UC Davis Space and Satellite Systems REALOP-1 mission.
Featured chips: (Many chips are removed for Revision 2. See below.)
- STM32L476ZGT3 (microcontroller)
- ASM330LHH (inertial sensor)
- QMC5883L (magnetometer)
ADF7021 (radio front end)TQP7M9102 (power amplifier)SKY13453 (rf switch)MAX2208 (rf power detector)- W25Q128JVSIQ (flash memory)
- MB85RS256B (ferroelectric memory)
TMP235 (analog temperature sensor)
For an overview of the project, some FAQs, and links to some other documentation, see the Cattleworks Compendium
Pinout and usage information of Revision 3 can be found in the OPR3 Reference Manual
Other useful documents include
Find IntelliSat developed by the flight software team at the IntelliSat repository, including detailed documentation about widgets and connections.
Besides Flight Software's IntelliSat, I recommend that you try my minimum development template that includes the exact bare minimum to compile and deploy firmware to Orbital Platform. The only dependencies are GCC for arm, pyocd, and make.
Revision 3 is in the validation stage, with many changes and additions.
Some themes and guidelines for Revision 3:
- Keep software compatibility with R2. Remap a minimal number of pins and don't change existing peripherals.
- Further improve manufacturability.
- Include radio system (Orbital Imager will be deprecated)
- Relatedly, we need a new camera interface port. Likely UART or SPI
- Possibly introduce additional features
- More connectors: Coils, panel temperature sensors, etc.
- More sensors: High precision temperature sensor, and digitizer for additional thermistors or sensors
- Mechanical adjustments to meet any changes to structures, and possible compatibility with High Altitude Balloon project
- Direct battery voltage measurement
- Current sensor and power switches for ADCS science and experiment payloads
- Another redundant set of avionics (IMU and mag) for good vibes. IMU does not need to be at dead center of board anymore
- Multiple connectors and associated pins for features like HDD-ESC and sun sensors
- Heart beat LED on PE2
Errata: a few things need to be fixed
- Re-pour copper planes to fix two shorted vias
- Correct the direction of the PMOS high side switch for the pyro/antenna deployment heater
- MCU ADC Vref needs to be tied to either 3.3 V or external reference
Related electrical team design tasks:
- Three channel constant current driver for magnetorquer
- Hard disk drive motor driver
Inter-board connector list for Rev 3
Mnemonic | Multiplicity | Connector type | Purpose |
---|---|---|---|
esc | 1 | Picoblade 4 pin | HDD driver speed command and feedback |
coil | 1 (3 axis) | Picoblade 4 pin | Magnetorquer driver control signal and I V feedback |
sol | 4-6 | Picoblade 8 pin | Sun sensor photodiodes and outer panel thermistors |
mbat | 1 | Picoblade 8 pin | Satellite main battery |
cam | 1 | Picoblade 8 pin | Imaging system data connection |
pyro | 1 | Picoblade 4 pin | Antenna melt-wire deployer |
pv | 4 | Picoblade 8 pin | Photovoltaic cell (solar panel) power input from each panel |
inst | 1-2 | Picoblade 8 pin | Auxiliary instrumentation bus (I2C) for remote ADCs |
service | 1 | JST GH | Ground diagnostic and firmware service port (SWD, UART) |
topoff | 1 | N/A | Ground battery top-off charging port |
rbf | 1 | N/A | Remove before flight safety interlock |
aux | 1-4 | Picoblade 8 pin | Auxillary UART/I2C/SPI ports |
usb | 1 | USB Type-C | Ground use USB port |
trx | 1 | MMCX | Antenna coaxial RF connection to radio system |
(Service and Topoff ports could be combined into "umbilical" port?)
Revision 2 hardware of Orbital Platform is in the verification stage. So far, so good!
- Removed radio system: communication function delegated to the new Orbital Imager
- Revised layout to improve routing, manufactuability, and reliabiltiy
- Inertial sensor (ASM330LHH) is now connected via SPI for reliability
- Magnetometer (QMC5883L) on its own I2C bus for reliability
- Addition of JST-GH connectors for
- 6x Solar panels (photodiode + thermistor)
- 4x Solar panels (pyramid design)
- ESC control via PWM
- ESC control via UART
- Expansion UART
- Addition of pyrotechnic channel to drive antenna deployment meltwire
- Less LEDs (still a usable amount)
- Fixed EXTI pins: no overlapping signals
- Fixed USB FS implementation
- Design for manufacturability: reduced cost and BOM lines
Revision 1 was the initial prototype that we used to validate whether our choice of components are suited for the application.
Orbital Platform should be delivered to you with a test program flashed, where it blinks the indicator LEDs in a demo pattern.
To program and debug the MCU, attach a SWD-compatible debugger like ST-LINK, JLINK, or DAPLINK, to the SWD connector near the MCU.
Label | Signal |
---|---|
3 | 3.3 V |
G | Ground |
C | SWCLK |
D | SWDIO |
R | NRST |
The reset button is next to the SWD header, labelled RST.
Use your toolchain of choice to target the stm32l476zgt
MCU.
I personally prefer to use a very minimal environment for prototyping firmware. See the template project here
One toolchain that works with developing software for Orbital Platform uses the Keil MDK IDE and DAPLINK debugger dongle, on Windows.
- Start by downloading and installing a free version of Keil MDK-ARM (μVision). You should be able to download it after filling out some info on the download page
- The free version now seems to be called "MDK-Community" and appears to be a non-commercial but fully featured version of the normal IDE. It used to be that the demo/eval/free version had a very restricted code size. Hope this is no longer the case.
- Also download and install STM32CubeMX which is ST's initialization code generator and graphical config editor. Scroll down on this page to Get Software. You might need to fill in some info for this as well.
- Launch the IDE.
- Find the "Pack Installer" in the top toolbar. It looks like a green diamond shape with four dots inside.
- Use the Pack Installer to install relevant CMSIS device support packs for
STM32L4 Series
- Close Pack Installer. From the top toolbar, use the menu
Project
->New μVision Project
to start a new project. - When given the option to select target device, choose
STM32L476ZGTx
- When given the option to manage run time environment, enable
CMSIS -> CORE
,Device -> Startup
,Device -> STM32Cube HAL
. There may be dependancies highlighted in yellow, enable those too.- Also enable
Device -> STM32Cube Framework (API) -> STM32CubeMX
. If it requires you to press the button to launch CubeMX, do it. Try to proceed with default settings in CubeMX because we don't intend to use any generated code. - Don't enable anything else unless you want to use full HAL or other middleware.
- Also enable
- After creating a new project, open
Options for Target
in the top toolbar. Then go to theDebug
tab and choose UseCMSIS-DAP debugger
. No additional configuration should be needed.- Or choose whatever debugger you use, like ST-Link or J-Link.
- In the left side
Project
panel, right clickSource Group 1
and selectAdd new Item to Group
- Choose
C File (.c)
and name itmain.c
- You need to
#include <stm32l476xx.h>
to import register definitions. - Paste some code from this repository or write some blinky program.
- Alternatively, you can git clone or zip download this repository and directly open the Keil project files. Everything should be configured for DAPLINK targeting Orbital Platform.
- Choose
- Connect Orbital Platform to DAPLINK via the SWD port. Plug DAPLINK to your computer.
- The DAPLINK should light up, if it doesn't, unplug it from your computer immediately and check your wiring. There may be a short circuit.
- Click
Build
on the top toolbar, thenDownload
. Your code should now be compiled and flashed to Orbital Platform. ClickDebug
to launch the debugger, or signal a hardware reset to begin execution.