This program is for displaying, monitoring, and visualizing live vehicle telemetry on an embedded display. It is a one-stop interface for TouchGFX-based telemetry visualization and debugging.
- Clone the GitHub repo.
- Navigate to the root directory of the cloned repo (
Rivanna3-Telemetry-Display) - Open Visual Studio Code
- Open the project in TouchGFX:
- cd .../rivanna3-telemetry-display → explorer .
- Click on TouchGfX folder and then run the .touchgfx file
- You now have the backend code and frontend display avaliable to you
Perform the following steps in TouchGFX:
- Connect the target hardware to the host computer using ST-Link.
- Power the display and MCU.
- Build the project
- Flash and run the application
Data Source
User must include the telemetry data source that will be used to populate the display. The currently available data source options are:
can: Reads live telemetry data from the vehicle CAN bus using the FDCAN peripheral.mock: Generates simulated telemetry data for UI development and testing.
Flags
Configuration is handled at compile time and through firmware configuration files. No runtime flags are supported.
- The user interface will be launched automatically upon power-up or reset.
- During startup, the system initializes peripherals, RTOS tasks, and the TouchGFX framework.
- Once initialization is complete, the default dashboard screen is displayed.
There are 2 views, selected by navigating through on-screen controls:
- Driver Screen - Shows the current state of key telemetry values such as speed, voltage, current, and system status.
- Data Screen - Shows detailed telemetry data from subsystems such as the motor controller and battery management system.
The backend uses a Producer-Consumer software pattern to receive telemetry data and update the user interface.
The backend also uses custom data structures to streamline this process:
- A custom telemetry message structure to represent parsed CAN and sensor data.
- A centralized telemetry state accessed by the TouchGFX model and presenter layers.
The backend flow of data is as follows:
- Telemetry data is received via CAN interrupts or generated by a mock data source.
- Producer tasks parse incoming telemetry data and push messages into a shared FreeRTOS queue.
- Consumer tasks pop messages from the queue and update centralized telemetry state.
- The TouchGFX model reads updated telemetry values and notifies the presenter.
- The presenter updates the view to reflect the new data.