Доработка прошивок микроконтроллера и FPGA - XGudron/UA3REO-DDC-Transceiver Wiki

Если у вас есть навыки или желание внести в проект новое - всегда пожалуйста. Это может быть исправление багов, улучшение внешнего вида, алгоритмов обработки или новые функции - что угодно. Список пожеланий и проблем.

Как предложить изменения в программный код проекта описано тут

Проект поделён на 2 части: прошивка для FPGA и прошивка для микроконтроллера STM32.

Разработка кода FPGA ведётся в среде Quartus 18.1 на языке Verilog + используя визуальные IP блоки.

Разработка кода STM32 ведётся на IDE Keil MDK последней версии.

Чтобы разобраться в структуре проекта, опишу основные файлы и структурные части:

  • BiquadDesigner - код расчёта IIR фильтров под необходимые требования
  • FT8 - код декодера и энкодера, интерфейс сервиса
  • JPEG - код декодера JPEG, преобразование цветов и побочные функции
  • USBDevice - код USB стека устройства
  • INA226_PWR - код татчика тока\напряжения
  • adpcm-lib - код энкодера\декодера WAV файлов
  • agc - код АРУ первой версии
  • audio_filters - код инициализации и поддержки фильтров на все случаи жизни
  • audio_processor - сердце DSP обработки, вся модуляция и демодуляция происходит тут
  • auto_notch - автоматический нотч фильтр на основе LMS
  • bands - список бендов и поддиапазонов\каналов в них
  • bootloader - код перехода в DFU режим
  • callsign - код получения информации по позывному (для кластера и для сервиса)
  • color_themes - цветовое оформление трансивера
  • cw - код работы телеграфом
  • cw_decoder - код декодера CW
  • decoder - общий код всех декодеров
  • fft - всё что касается спектра, водопада и 3D
  • filemanager - сервис файлменеджера, записи CQ, прошивки и т.п.
  • fonts - шрифты, используемые в трансивере
  • fpga - код интерфейса работы с FPGA
  • front_unit - код работы с кнопками и энкодерами передней панели\тачпада
  • functions - различные функции и макросы, используемые по всему коду
  • i2c - софт-эмулятор шины I2C на любых пинах МК
  • images - картинки и иконки
  • lcd - описание интерфейса трансивера
  • lcd_driver - общие функции для всех типов LCD
  • lcd_driver_* - локальные версии драйверов для нужного типа экрана
  • locator - сервис получения информации по локатору
  • main - загрузка и инициализация трансивера
  • noise_blanker - подавитель коротких импульсных помех (щелчков)
  • noise_reduction - код DNR1, DNR2 и Spectral AGC
  • print - код вывода отладки в COM-порт
  • profiler - профайлер кода внутри трансивера, для отладки скорости
  • rds_decoder - код декодера FM RDS
  • rf_unit - код работы с RF-UNIT, ATU и датчиками
  • rtty_decoder - код декодера RTTY
  • screen_layout_* - темы оформления (цвета, местоположение элементов, шрифты и т.п.) под все разрешения
  • sd - код работы с SPI SD картой
  • self_test - код самопроверки работы трансивера
  • settings - настройки и калибровки
  • stm32h7xx_it.c - обработка прерываний и таймеров, планировщик задач
  • spec_analyzer - анализатор спектра
  • swr_analizer - анализатор КСВ
  • system_menu - системное меню и все настройки\калибровки, обработчики их изменений
  • touchpad_* - код работы с тачпадом
  • trx_manager - код базовой работы трансивера, выбор моды, диапазона, TX/RX и т.п.
  • usbd_audio_if - код USB Audio
  • usbd_cat_if - CAT подсистема
  • usbd_debug_if - COM-порт отладки
  • usbd_iq_if - код USB Audio IQ
  • usbd_storage_if - код эмулятора USB диска
  • usbd_ua3reo - общий код USB устройств
  • vad - код детектора голоса (для шумоподавителя SSB)
  • vocoder - код кодера WAV, записи эфира и т.п.
  • wifi - код работы с ESP WiFi
  • wm8731 - код работы с аудио-кодеком
  • wspr - код работы WSPR маяка