Если у вас есть навыки или желание внести в проект новое - всегда пожалуйста. Это может быть исправление багов, улучшение внешнего вида, алгоритмов обработки или новые функции - что угодно. Список пожеланий и проблем.
Как предложить изменения в программный код проекта описано тут
Проект поделён на 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 маяка