DUC-DDC ТРАНСИВЕР UA3REO: РЕЛИЗ ВЕРСИИ 1.2

Большое обновление проекта в программной части.

Предыдущая статья по разработке трансивера доступна тут.

В этой версии все изменения касаются только прошивки, не затрагивая аппаратную часть, среди них:

+Новые шрифты в интерфейсе на основе 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.2
Репозиторий проекта на GitHub.

16 мыслей о “DUC-DDC ТРАНСИВЕР UA3REO: РЕЛИЗ ВЕРСИИ 1.2”

  1. Перешел на 1.2. Ну ОООчень громкий звук становится после включения AGC 🙂 Ранее было более комфортная разница. Еще какой-то прерывистый писк появился. Качество приема отличное.
    FFT хорошо калибруется лишь при наличии на спектре сильных сигналов, если их нет — все в желто-красном заборе. Думаю, не помешало бы усреднение показаний, чтобы палки не скакали так быстро, попробую сам сделать, но у Вас скорее всего качественнее выйдет 🙂

      1. Выложил видео. Еще пара моментов: если быстро крутить валкодер, на строке частоты появляются лишние линии, а при очень сильном уровне сигнала налезают друг на друга цифры S-метра.

          1. Перенес апдейты к себе. Скорость FFT радует 🙂 Забор пропал.
            Забыл еще ранее написать, иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.

        1. В файле fft.h есть конструкция FFT_NOP_DELAY — если есть возможность, покрутите задержку на меньшие значения, у меня на высоких скоростях отображения экрана идёт сильная помеха на аудио, грешу на разводку платы, хотелось бы проверить.

          1. Ау меня наоборот — без этих задержек посторонний звук сильно ослаб 🙂 Думаю, тут дело в наводках по питанию от процессора, т.к. когда открыть меню и FFT не отрисовывается, этот звук пропадает. На моей плате есть место под LDO, завтра вечером распаяю и запитаю от 12В.

            1. Решение оказалось куда проще — скорость выводов FSMC в STM32CubeMX надо поставить в Low (было Very High), при этом скорость LCD отличная, а помех нет.

  2. Здравствуйте. Обратил внимание, что при возврате на диапазон при переключении не сохраняется частота, а устанавливается по умолчанию. Иногда появляется надпись BUF и подолгу не исчезает, на качество приема заметных влияний нет. Пропадает в основном при переключении диапазона.

    1. Приветсутвую! сохранение частоты по диапазонам пока не реализовано, только в рамках переключения VFO. Но в планах будет.
      Насчёт буфера странно — у меня только при запуске на секунду появляется и исчезает… попробую отловить.

  3. Здравствуйте. Сегодня обратил внимание, если на тангенте нажать передачу, по контрольному приемнику в основном шум, если включить настройку — чистый тон. В LOOP слышен нормальный звук с микрофона. В чем может быть дело?
    К слову, как правильно включить усиление микрофона? Младший бит регистра R4 в WM8731_TXRX_mode() выставил, но на слух в режиме LOOP разницы не заметно.

    1. Передача — надо обновится до последней версии в dev-ветке, в 1.2 версии была допущена ошибка, приводящая к потере передачи голосом, сейчас исправлена.
      Насчёт усиления — всё верно, младший бит R4, разницы в громкости вы почти не заметите, т.к. работает голосовой компрессор, который приводит громкость к необходимому уровню.

      1. Обновился, шум при передаче пропал. Правда, нет пока возможности оценить качество сигнала в полной мере.
        Заметил, что при работе совместно с wsjtx при переключении диапазонов по CAT иногда при перерисовке экрана пропадает его верхняя часть, остается только полоска s-метра и водопад, все появляется или при следующем переключении диапазона из программы, или при повороте валкодера. Также у меня пропала реакция на выбор вида модуляции кнопкой, переключается лишь при вращении калкодера с активной опцией map of bands или переключении диапазонов.
        Возможно, есть смысл добавить в системное меню громкость сигналов и/или их отключение.
        Решил попробовать блок питания на 19в от ноутбука, заметных помех пока не нашел. 317-е греются адски, поставлю на них вентилятор, но деваться некуда, потому что пока что использую усилитель на 24в. Вечером буду пробовать FT8.

        1. Спасибо за инфо! добавил перерисовку верхних кнопок по CAT + добавил в системное меню управление сигналом нажатия на экран. Сейчас займусь описанием релиза 1.3 — там всё будет включено.
          Выбор модуляции проверил, и с CAT и без него, и с BAND Map и с выключенным — работает, пока не могу повторить баг.
          FT8- круто! обязательно расскажите о результатах, у меня сейчас усилитель в переделке, могу только себя на SDR приёмник напрямую с ЦАП послушать. Очень интересно!

          1. Пробовать-то буду, конечно, да прямо сейчас уже пробую, только вряд ли кто меня услышит с такой антенной и усилителем ) Пора тренировать ГИ-7Б, лет 6 минимум стоит без работы.
            При обмене данными по cat экран стал мерцать от многократной перерисовки, в эти моменты хрипит звук. Кнопки и частота также пропадают временами.
            А не получится ли добавить при передаче вывод спектра?

            1. с FT-8 кстати могут возникнуть проблемы, частота дискретизации аудио-кодека ~48800гц, и частота будет немного размазана относительно звуковой карты, надо с 50 на 48Мгц кварц переходить…
              Водопад добавлю в план на реализацию, думаю не сложно будет.
              По CAT — очень странно, сейчас час гонял на приём в JTDX, не разу не моргнул, может с таймингами какие-то проблемы, или скорость выводов FSMC попробовать поднять. В целом, экран перерисовывается только когда идёт изменение моды/частоты, а дальше он не должен обновлять.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *