STM32 LCD Rendering (Embedded C++17)

Job ID: 39711358

Budget: €30 – €250 EUR

Embedded Systems STM32 Project (C++17, LTDC, DMA2D)
Project Description:
We are looking for an experienced embedded systems developer with expertise in STM32 microcontrollers (STM32H7 series preferred) to implement an LCD rendering project.

The project will build upon a provided existing project skeleton (you will receive the project files). You must stick to the given structure and only implement the required functionality.

Requirements
Background (Grid)

LCD must display a grid of 11 × 17 rectangular tiles (like a checkerboard).

Each tile should be filled with a random color.

At random intervals, individual tiles should change to a new random color.

Use the STM32 RNG peripheral for generating random values.

Foreground (Entity "Elli")

Draw an ellipse (aspect ratio 2:1), limited to 32 × 32 pixels.

Elli moves along a circular path on the screen.

Elli’s orientation (rotation) must always remain tangent to the path, accurate to 1°.

Elli’s speed must be controlled by a random walk (random changes over time).

Technical Implementation

Use LTDC (LCD-TFT Display Controller) to drive the LCD.

Use DMA2D (Chrom-ART Accelerator) for fast rendering (tile filling, sprite drawing, rotation).

Implement double buffering to avoid flickering.

Framebuffer must store both the habitat grid and Elli overlay.

Additional Constraints

No external STM32CubeMX or CMSIS libraries should be included in the repo.

Deliverables must be complete C++17 source code only.

Must follow the provided project structure without introducing unnecessary changes.

Implementation should clearly show:

How and when data is updated/transferred to the LCD.

How Elli’s movement and orientation are calculated and applied.

Deliverables

Complete and working C++17 source code.

Explanation (inline code comments / short doc) of:

Data flow from framebuffer to LCD.

Elli’s movement, rotation, and speed control implementation.

Buildable in Keil µVision / ARMClang with provided project setup.

Timeline

Must be completed within 5 days from project start.

Developer must be available for clarifications and quick iterations.

Skills Required

STM32 (H7 series) embedded development.

LTDC and DMA2D peripheral programming.

Framebuffer management and double buffering.

C++17 for embedded systems.

Familiarity with RNG peripheral and real-time graphics.