1. Обзор Задачи
Требуется разработчик встраиваемых систем для создания драйвера и графического интересного интерфейса пользователя (GUI) на C для SPI дисплея (ST7796). Дисплей будет выполнять роль основного интерфейса управления для нашего продукта, мозгом которого является микропроцессор STM32F103B
Ключевые требования: Чистый, human-readable код, драйвер и функции которого должны быть аккуратно запакованы в свои функции и хедеры, чтобы не захламлять главную программу, так как помимо дисплея main.c также контролирует дюжину других систем через I2C, SPI, UART, PWM, etc.
2. Целевое Оборудование и Стек
● Микроконтроллер (MCU): STM32F103.
● Дисплей: 3.5-дюймовый IPS SPI модуль (ST7796).
● Ссылка на документацию:
● Среда разработки: На нашей стороне это STM32CubeIDE но вы можете работать в любой удобной Вам среде, с предоставление потом всех .h / .c файлов и вставок в main.c для простой работы и вывода информации.
● Язык: C (Или Python с использованием MicroPython) если это поможет сделать всю программу проще.
3. Этап 1: Проверка Связи и Обмен Данными (Срок: 1 месяц)
Цель первого этапа — установить надежную двустороннюю связь и реализовать базовый интерфейс для обмена данными между дисплеем и MCU.
Требования:
1. Драйвер Дисплея: Настройка и инициализация SPI (с использованием DMA) и разработка низкоуровневого драйвера для ST7796 (прорисовка примитивов).
2. Обработка Данных: Создание структуры для 16 переменных управления, которые MCU будет использовать для контроля систем.
○ 8 boolean переменных (например: leds_enabled, laser_active, system_on).
○ 8 float переменных (например: power_level, temperature_celsius, voltage rail 1-4, etc,).
3. Базовый GUI (MVP):
○ Разработка одной страницы, отображающей текущее состояние всех 16 переменных.
○ Реализация сенсорного ввода для изменения этих 16 переменных пользователем.
○ Передача измененных данных обратно в MCU для управления устройством.
4. Видение Финального GUI (Последующий Этап)
После успешного завершения первого этапа потребуется разработка финального, профессионального GUI. Интерфейс должен иметь чистый, красивый и интуитивно понятный дизайн и включать:
● Индикаторы состояния: Наглядное отображение уровня мощности и температуры (использование графических прогресс-баров).
● Элементы управления: Кнопки и переключатели для включения/выключения LED-подсветки и внешнего лазера.
● Страница настроек: Доступ к дополнительным параметрам.
5. Ожидаемые Результаты (Deliverables)
Чистый, комментированный и рабочий код драйвера дисплея и GUI. Модуль дисплея может быть представлен разработчику для работы локально.