
AP_Periph¶

AP_Periph is an abbreviation for ArduPilot Peripheral, ie. an ArduPilot peripheral device based on the existing ArduPilot autopilot code. It takes peripheral device driver libraries of ArduPilot and adapts them to run on stand-alone peripheral devices, which communicate to the main autopilot via CAN, MSP, or other peripheral bus protocols.
The Peripheral device usually uses an STMF103 or STMF303 processor, but it is also being ported to use normal autopilot boards to be configured instead as a peripheral. Both sensors (distance sensor, GNSS, IMU, Barometer, etc.) and output ports (I2C, SPI, PWM, UART, ESC, LED, etc.) can be used to build new peripherals, as well as providing bus expansion for CAN, MSP, I2C,SPI, etc.
The software uses the same build system as ArduPilot for autopilot boards. All the firmware build configuration for an AP_Periph board done using a single configuration file (hwdef.dat) defines the inputs / outputs of the device and what device drivers will be included, in the same manner as an autopilot board. This makes it possible, for example, to define a AP_Periph device for UAVCAN with only a micro-controller of the STM32F103 type and 128 KB of flash memory, although processors with larger memory will be required depending on the number of drivers.
Capabilities¶
- Bootloader update via serial or CAN port
- Firmware update
- Dynamic or static CAN node allocation
- Parameter storage in flash memory
- Self-diagnostic and security: watchdog, CRC, autotest, etc.
- Updates with MissionPlanner or UAVCAN tools like UAVCAN GUI
Existing Products¶
Some (but not all) product examples using AP-Periph:
- Mateksys M8Q
- Hitec GNSS (Septentrio Mosaic )
- mRo UAVCAN Adapter node
- Orange Cube ( it’s a flight controller,but it can also be used in AP_Periph..many others to follow)
Firmware¶
Firmware for existing device definitions are posted here. Their hardware definition files are in the ArudPilot Github repository, here
To create firmware for a new design, follow the same instructions as for porting to a new autopilot board, as explained in the Wiki section Porting to a new flight controller board .
Additional information is available in the AP_Periph readme here