Большое обновление проекта в программной части.
Предыдущая статья по разработке трансивера доступна тут.
В этой версии все изменения касаются только прошивки, не затрагивая аппаратную часть, среди них:
+Новые шрифты в интерфейсе на основе Sans, новые цвета
Обновил интерфейс, сделал шрифты на основе TTF шрифтов Sans. Можно подключить абсолютно любые, используя программу fontconvert.exe (находится в папке с проектом), она создаёт .h файл со шрифтом, который достаточно подключить в проект и кастомизировать интерфейс на свой вкус и лад. У меня получилось примерно так:
+Очередь отображения данных в LCD (исправление визуальных глюков)
Ранее были ситуации, когда какой-то текст пытался отрисоваться во время отображения FFT или водопада, возникали коллизии и пиксели перемешивались. Сейчас реализована очередь заданий на обновление информации на LCD экране.
+Банки памяти VFO-A VFO-B
Реализовано 2 банка памяти каналов, что позволяет быстро переключатся между диапазонами, модами или частотами.
+CW_L/CW_U мода RX + смещение CW генератора
Для приёма CW сигналов реализовано смещение гетеродина на определённое количество герц (указывается в настройках). Следующим этапом будет подключение ключа и полноценная реализация работы кодом морзе.
+Приём УКВ
Особенностью цифровой обработки данных является то, что мы можем оцифровать сигнал без особых потерь только на половине частоты АЦП (снимать верхнюю и нижнюю точку синуса). Но если на входе будет сигнал с частотой выше этой половины (так называемой первой частоты Найквиста), он никуда не денется и будет мешать оцифровке.
В связи с этим перед входом АЦП используют фильтры нижних частот, которые отрезают всё лишнее. В моём проекте он реализован в плате предусилителя.
Но, если мы не будем использовать ФНЧ, и попробуем оцифровать частоты выше половины частоты АЦП, получается занимательный эффект. Принимаемый сигнал начинает наслаиваться «гармошкой» на весь диапазон. То есть при частоте АЦП в 50мгц мы имеем:
0-25Мгц — обрабатывается стандартными методами.
25-50Мгц — эта частота будет наслоена на 0-25, но в перевернутом виде, тоесть 26 мгц можно принять прослушивая 24мгц, а 49мгц на частоте в 1мгц.
50-75Мгц — наслаивается на 0-25Мгц
75-100Мгц — опять инвертированный участок.
И так далее, с каждым шагом всё больше теряя чувствительность и часть выборок.
В итоге, по тех. спецификации на АЦП AD9226, можно принять сигнал до 750мгц, я с успехом принимал сигналы в 430Мгц, а с мощными FM-вещалками проблем нет вообще.
Итак, в проекте реализован приём частот до 750мгц (зависит от качества реализации входных цепей АЦП), для этого необходимо отключить предусилитель и подсоединить УКВ антенну.
+FM мода RX (режимы WFM/NFM)
Реализована демодуляция FM сигнала, что в паре с предыдущим пунктом даёт возможность прослушивания FM радио и УКВшных радиолюбителей. Код скопирован с проекта mcHF трансивера, рекомендую к ознакомлению. Для WFM режима использованы формулы из проекта RTL-SDR.
FM вещалки имею ширину полосы чуть большую, чем 48кгц, используемые в проекте, что приводит к потере несущей, но это не особо мешает принимать радио.
+Регулировка RF усиления на входе аудио-процессора
В проекте нет регулятора аналогового усилителя по ВЧ, но это легко исправить цифровым усилением. В случае, когда не используется предусилитель и AGC — теперь усиление можно выставить вручную.
+Исправлены косяки на главной плате
Доработана трассировка общей платы, в которую устанавливаются все модули, особенно пересмотрен узел LCD, который собирал очень много помех от соседних узлов.
+Системное меню настроек
Т.к. в проекте набирается всё больше настроек, которые можно «подкрутить» под индивидуальные потребности, реализовано «сервисное меню», вызываемое из основного. Например скорость работы с энкодером или смещение CW генератора.
+Исправлен косяк с USB
В связи с обновлением библиотеки HAL от STM32, появилась проблема с определением USB устройства, в данный момент ошибка исправлена и USB можно смело использовать для отладки.
+Доработка FFT и водопада
Улучшена система адаптивной автокалибровки отображения FFT и водопада, улучшена реакция на сильные и слабые сигналы, пользоваться водопадом стало гораздо удобнее.
+Регулировка силы подсветки LCD
Подсветка LCD имеет значительное энергопотребление, и часто избыточно, поэтому в системном меню реализована возможность снижения уровня подсветки методом ШИМ генерации.
+Вывод ошибок при инициализации кодека, FPGA. Кодек не блокирует запуск устройства
Теперь ошибки инициализации аудио-кодека и FPGA не мешают запуску устройства, а лишь на пару секунд отображают ошибку, которую необходимо исправить для корректной работы. Это должно помочь при сборке устройства «с нуля».
+Отображение силы сигнала в dbm
Помимо S-метра реализовано отображение силы сигнала в dBm единицах, сначала значение высчитывается исходя из схемотехники проекта и разрядности АЦП, а далее применяется коэффициент калибровки, который необходимо установить каждому индивидуально в файле trx_manager.h, для калибровки можно использовать генератор сигналов или подручный трансивер с настроенной шкалой.
Также, теперь с-метр корректно работает с выключенным AGC.
+Снижение подсветки LCD за неактивностью
В системных настройках теперь задаётся, через сколько секунд/минут экран будет переведён в режим работы без подсветки для экономии электроэнергии. При вращении энкодера или клике по экрану работы возобновляется.
Файлы проекта доступны в 2х версиях (в архиве на момент публикации, и в репозитории github, постоянно обновляемые), в них включены файлы и исходные коды прошивок, даташиты, смета, схемы и чертежи плат.
Перешел на 1.2. Ну ОООчень громкий звук становится после включения AGC 🙂 Ранее было более комфортная разница. Еще какой-то прерывистый писк появился. Качество приема отличное.
FFT хорошо калибруется лишь при наличии на спектре сильных сигналов, если их нет — все в желто-красном заборе. Думаю, не помешало бы усреднение показаний, чтобы палки не скакали так быстро, попробую сам сделать, но у Вас скорее всего качественнее выйдет 🙂
Принял, буду разбираться и реализовывать, к 1.3 обязательно прикручу.
Выложил видео. Еще пара моментов: если быстро крутить валкодер, на строке частоты появляются лишние линии, а при очень сильном уровне сигнала налезают друг на друга цифры S-метра.
Подправил глюки (без усреднения пока), доступно в промежуточном релизе 1.2.1 https://github.com/XGudron/UA3REO-DDC-Transceiver/archive/1.2.1.zip
Перенес апдейты к себе. Скорость FFT радует 🙂 Забор пропал.
Забыл еще ранее написать, иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.
В файле fft.h есть конструкция FFT_NOP_DELAY — если есть возможность, покрутите задержку на меньшие значения, у меня на высоких скоростях отображения экрана идёт сильная помеха на аудио, грешу на разводку платы, хотелось бы проверить.
Ау меня наоборот — без этих задержек посторонний звук сильно ослаб 🙂 Думаю, тут дело в наводках по питанию от процессора, т.к. когда открыть меню и FFT не отрисовывается, этот звук пропадает. На моей плате есть место под LDO, завтра вечером распаяю и запитаю от 12В.
Решение оказалось куда проще — скорость выводов FSMC в STM32CubeMX надо поставить в Low (было Very High), при этом скорость LCD отличная, а помех нет.
Здравствуйте. Обратил внимание, что при возврате на диапазон при переключении не сохраняется частота, а устанавливается по умолчанию. Иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.
Приветсутвую! сохранение частоты по диапазонам пока не реализовано, только в рамках переключения VFO. Но в планах будет.
Насчёт буфера странно — у меня только при запуске на секунду появляется и исчезает… попробую отловить.
Здравствуйте. Сегодня обратил внимание, если на тангенте нажать передачу, по контрольному приемнику в основном шум, если включить настройку — чистый тон. В LOOP слышен нормальный звук с микрофона. В чем может быть дело?
К слову, как правильно включить усиление микрофона? Младший бит регистра R4 в WM8731_TXRX_mode() выставил, но на слух в режиме LOOP разницы не заметно.
Передача — надо обновится до последней версии в dev-ветке, в 1.2 версии была допущена ошибка, приводящая к потере передачи голосом, сейчас исправлена.
Насчёт усиления — всё верно, младший бит R4, разницы в громкости вы почти не заметите, т.к. работает голосовой компрессор, который приводит громкость к необходимому уровню.
Обновился, шум при передаче пропал. Правда, нет пока возможности оценить качество сигнала в полной мере.
Заметил, что при работе совместно с wsjtx при переключении диапазонов по CAT иногда при перерисовке экрана пропадает его верхняя часть, остается только полоска s-метра и водопад, все появляется или при следующем переключении диапазона из программы, или при повороте валкодера. Также у меня пропала реакция на выбор вида модуляции кнопкой, переключается лишь при вращении калкодера с активной опцией map of bands или переключении диапазонов.
Возможно, есть смысл добавить в системное меню громкость сигналов и/или их отключение.
Решил попробовать блок питания на 19в от ноутбука, заметных помех пока не нашел. 317-е греются адски, поставлю на них вентилятор, но деваться некуда, потому что пока что использую усилитель на 24в. Вечером буду пробовать FT8.
Спасибо за инфо! добавил перерисовку верхних кнопок по CAT + добавил в системное меню управление сигналом нажатия на экран. Сейчас займусь описанием релиза 1.3 — там всё будет включено.
Выбор модуляции проверил, и с CAT и без него, и с BAND Map и с выключенным — работает, пока не могу повторить баг.
FT8- круто! обязательно расскажите о результатах, у меня сейчас усилитель в переделке, могу только себя на SDR приёмник напрямую с ЦАП послушать. Очень интересно!
Пробовать-то буду, конечно, да прямо сейчас уже пробую, только вряд ли кто меня услышит с такой антенной и усилителем ) Пора тренировать ГИ-7Б, лет 6 минимум стоит без работы.
При обмене данными по cat экран стал мерцать от многократной перерисовки, в эти моменты хрипит звук. Кнопки и частота также пропадают временами.
А не получится ли добавить при передаче вывод спектра?
с FT-8 кстати могут возникнуть проблемы, частота дискретизации аудио-кодека ~48800гц, и частота будет немного размазана относительно звуковой карты, надо с 50 на 48Мгц кварц переходить…
Водопад добавлю в план на реализацию, думаю не сложно будет.
По CAT — очень странно, сейчас час гонял на приём в JTDX, не разу не моргнул, может с таймингами какие-то проблемы, или скорость выводов FSMC попробовать поднять. В целом, экран перерисовывается только когда идёт изменение моды/частоты, а дальше он не должен обновлять.