
Building a shared firmware platform for a family of aircraft radio control units
Challenge
An avionics equipment manufacturer needed firmware for a family of radio control units - separate control heads for HF, VHF, and navigation radios - that gave pilots a consistent rotary-knob-and-softkey interface for tuning frequencies, swapping between active and standby frequencies, and recalling stored channel presets, with each unit built on a shared display and encoder architecture but driving a different radio's protocol underneath.
Solution
We built the firmware around FreeRTOS on STM32F1 microcontrollers, driving a custom graphic LCD display and a dual concentric rotary encoder - the inner knob stepping frequency in 50 kHz increments, the outer knob in 1 MHz increments - with softkeys dynamically mapped to on-screen labels for selecting, saving, and deleting presets. Each unit talks to its radio over a dedicated UART link through a protocol decoder written for that radio's specific message format, while sharing a common preset-management system: frequencies are written to flash, paginated and scrollable in groups on a memory screen, and recalled instantly to the standby slot for a one-button swap to active. Interrupt-driven encoder and UART handling keeps the interface responsive without blocking the RTOS, and a flow-diagrammed thread architecture kept the communication and display-update paths cleanly separated as the codebase grew to cover each new radio variant.
Results
The result is a family of radio control units sharing one proven display-and-encoder platform across HF, VHF, and navigation radio variants, cutting the engineering effort needed to bring each new radio type online since the display, preset storage, and input handling didn't need reinventing each time. Pilots get a consistent tuning experience - active/standby frequency swap, scrollable memory presets, softkey-driven editing - across every radio in the family, refined through iterative field testing that worked through and resolved encoder value glitches, display timing issues, and ISR-level bugs across the development history.
Kick-start your project
Get in touch with our team to discuss your business needs and see how we can help with a project like this one.