Многодиапазонный CW-маяк на MAX2870 (23.5мгц — 6ггц)

Телеграфный маяк для настройки аппаратуры под бенды 12m/10m/6m/4m/2m/70cm/23cm/13cm/6cm.

Давно хотел сделать универсальный УКВ\СВЧ маяк для проверки антенн\трансиверов\трасвертеров. Ну и чтобы сборка не требовала пайки своей платы, настройки и прочих проблем. Решил разработать маяк под себя.

Выбор генератора пал на модуль VCO MX2870 с алиэкспресс.

Для генерации управляющих сигналов потребуется маломощный микроконтроллер, он будет задавать частоту генерации и управлять ключеванием CW по заданному шаблону.

Выбор пал на STM32F103C8T6


Опционально, если требуется, потребуются термостатированный OCXO генератор (чтобы не гуляла частота маяка) и небольшой широкополосный усилитель.

Все элементы монтируются по следующей схеме.

Чтобы получить из дифференциального выхода MAX2870 небалансный (обычный коаксиальный), применяем балун на ТДЛ из 3-4 витков коаксиала на кольце с высокой проницаемостью.

Например вот так, только укоротить лишние провода:

Далее дело за прошивкой STM32 контроллера. Прошивки и исходные коды я выложил в репозиторий https://github.com/XGudron/UA3REO-Beacon

В корне лежат 2 готовых прошивки под кварц 25мгц (встроенный в плату MAX2870) и для 10мгц (в случае использования OCXO генератора). Эти прошивки настроены на частоты 2м,70см,23см,6см бендов, а маяк передаёт «CQ CQ Beacon 73» на скорости 25WPM.

Чтобы настроить прошивку под себя необходимо установить Keil IDE (среда разработки), открыть файл STM32/Core/Inc/config.h и изменить там частоты\скорость\текст\мощность под себя.

Для прошивки используется обычный USB кабель и программа STM32CubeProgrammer или любая другая DFU утилита, умеющая работать с hex файлами stm32.

В итоге получается достаточно компактная, функциональная и главное простая в сборке конструкция. Питается от 5 вольт обычным павер-банком, что обеспечивает мобильность маяка.

Прошивка открыта для доработок любыми желающими радиолюбителями, если будет желание встроить управление фильтрами через GPIO выводы, или добавить цифру вроде Opera — пожалуйста, делитесь своими разработками и я добавлю их в репозиторий проекта.

UPD: добавил и проверил возможность работы маяка на 10ггц диапазоне — в режиме излучения третьей гармоники. Идеально для настройки аппаратуры.

Успехов в сборке, 73 de UA3REO.

77 мыслей о “Многодиапазонный CW-маяк на MAX2870 (23.5мгц — 6ггц)”

  1. подутратил навыки радиолюбительские, извиняюсь…

    можно фотку «балун на ТДЛ из 3-4 витков коаксиала на кольце с высокой проницаемостью» и марку колечка?

    и

    Keil IDE — я зашел на их сайт, а там куча всяких IDE — а узнать какую конкретно надо качать, чтобы поправить программу маяка

    спасибо!

    1. Доброго дня!
      Фотку приложил в статью, по хорошему только длину проводников и земли надо укротить, но если не стоит цель выжать максимум мощности и дальнобойности — не страшно.
      Подключение согласно схеме над фото. Кабель RG-178, 4 витка, кольцо точно не обмерял, но вроде М1000НМ, первым делом стоит поэкспериментировать с теми что есть у вас в наличии. В отличие от классических трансформаторов где марка влияет на частоту, в ТДЛ вся трансформация происходит внутри кабеля.

      1. Скачал поставил, но пришлось пошаманить:
        Открыл проект \UA3REO-Beacon-main\STM32\MDK-ARM\UA3REO-Beacon.uvprojx

        The following Device Family Pack(s) are required by the project: Keil:STM32F1xx_DFP:2.4.0

        Refresh Pack descriptions
        SSL caching disabled in Windows Internet settings. Switched to offline mode.
        Cannot download file http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.4.0.pack: No internet connection — Please check your internet settings

        Error #550: Requested device STM32F103C8(STMicroelectronics) not found for target ‘UA3REO-Beacon’

        1. Скачал http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.4.0.pack
        Импортировал Import
        Открыл проект все ОК

        Build:

        Build started: Project: UA3REO-Beacon
        *** Target ‘UA3REO-Beacon’ uses ARM-Compiler ‘Default Compiler Version 5’ which is not available.
        *** Please review the installed ARM Compiler Versions:
        ‘Manage Project Items — Folders/Extensions’ to manage ARM Compiler Versions.
        ‘Options for Target — Target’ to select an ARM Compiler Version for the target.
        *** Build aborted.

        2. Скачал https://www.mediafire.com/file/gyqs39w66v1tkq7/ARMCC.zip/file

        Архив содержит каталог ARM CC. Это компилятор v5 из MDK-ARM v5.36. Скопировал его в каталог \Keil_v5\ARM\

        В файл \Keil_v5\TOOLS.INI в конце добавил:

        ARMCCPATH1=».\ARMCC» («5.06 update 7 (build 960)»)
        BOOK12=»ARMCC\sw\info\releasenotes.html» («Release Notes for ARMCC 5.06u7″,GEN)
        BOOK13=»HLP\DUI0375G_02_mdk_armcc_user_guide.pdf» («ARM Compiler v5.06 for µVision (PDF)»,GEN)
        BOOK14=»HLP\DUI0377G_02_mdk_armlink_user_guide.pdf» («ARM Linker v5.06 for µVision (PDF)»,GEN)
        DEFAULT_ARMCC_VERSION_AC5=»V5.06 update 7 (build 960)»

        Все скомпилировалось нормально

        1. Спасибо! перевёл проект на 6ю версию компилятора, который идёт в комплекте с Keil, чтобы упростить жизнь другим конструкторам.

          Кольцо использую небольшое: 6мм высота, 12мм внешний диаметр, 8мм внутренний. Размер влияет только на то, чтобы уместились витки, а ограничение по мощности в данном случае не важно.

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

          1. да, все компилируется, спасибо!
            получил компоненты сегодня, на днях буду креативить.
            OCXO буду брать, крайне нужна стабильность.

              1. Поставьте перемычку BOOT0 в единицу, BOOT1 в ноль, при включении в таком режиме микроконтроллер переходит в DFU режим для прошивки

                1. да, делал и так…
                  и поставил драйвера насильно STM Device in DFU Mode…

                  один результат на W10:
                  Запуск этого устройства невозможен. (Код 10) Сбой запроса дескриптора USB-устройства.

                2. ну и ST-LINK V2 тоже не работает…
                  что-то у меня с системой
                  жаль, что в самом начале словил стену
                  вообще непонятно что делать

                  1. Мне кажется это плата STM32 убитая, если DFU не работает, то что-то с процессором явно

                    1. STLINK V2 китайский — не работает, хотя вроде serial номер выдает какой-то

                      перепробовал несколько STM32 не определяются

                      явно что-то с системой

                      однако Arduino работает без проблем всегда

                    2. поставил на другой комп — все тоже самое…
                      неужели все STM битые мне прислали?
                      ну тогда я бессилен.
                      Ардуино здравствуй.

                    3. можете мне скинуть ваши драйвера/программы?
                      чтобы уж наверняка
                      я не знаю что еще сделать

                    4. короче,
                      на другом компе запустился STLINK V2
                      обновил версию прошивки

                      запустился STLINK V2 и на первом компе

                      STCUBEPROGRAMMER не коннектится

                      21:30:59 : ST-LINK SN : 300037000900004A4735544E
                      21:30:59 : ST-LINK Firmware version : V2J37S7
                      21:30:59 : Connected via SWD.
                      21:30:59 : SWD Frequency = 4,0 MHz.
                      21:30:59 : Connection mode : Normal.
                      21:30:59 : Debug in Low Power mode enabled.
                      21:30:59 : Device ID:0x410
                      21:30:59 : Device flash Size : 128KBytes
                      21:30:59 : Device family :STM32F10xx Medium-density

                  2. Если пишет сбой декриптора, то значит до драйверов даже дело не доходит, компьютер просто не может получить ответ от устройства.
                    Может USB кабель другой попробовать?

                    Но на всякий случай — вот дистрибутив что я ставил, он же и драйвера должен установить https://www.dropbox.com/s/9ftkojmrjtn922m/SetupSTM32CubeProgrammer_win64_v2.9.0.exe?dl=1

                    1. прошитый через STLINK STM работает, светодиод мигает
                      но как его не включай (в т.ч. boot0=1), на двух компах — сбой дескриптора всегда

                      новые из упаковки 4 шт C8 и 1 шт C6 — тоже самое

                  3. Тогда можно попробовать прошить напрямую из Keil, он тоже умеет работать с ST-Link v2, кнопка F8 после компиляции прошивки

                    1. нажал F8
                      Keil пишет — Error: Not a genuine ST Device! Abort connection.
                      Erase Done.
                      Programming Done.
                      Verify OK.
                      Flash Load finished at 22:11:24

                      и после этого STM перестал мигать светодиодом, даже после перепрошивки HEXa через ST-LINK UTILITY…

                      прошил свежий STM через ST-LINK UTILITY — тот мигает (судя по всему под азбуку морзе)

                      а я ведь уже припаял ножки к тому экзмепляру STM
                      и хотел спросить как коннектить ножки питания с MAX
                      🙁

                  4. Какая-то магия, 5 STM32 и за ним ещё ST-Link чтобы сгорели это что-то невероятное 🙁 надо искать проблему, может компьютер статикой шьёт или ещё что-то нехорошее 🙁

                    1. я думаю так и есть, что-то с USB у него не то
                      через UART все заработало

  2. а насколько гуляет частота маяка допуcтим для частоты 1 Ghz ?
    это я к потребности в «OCXO генератор (чтобы не гуляла частота маяка)»
    думаю брать не брать…

  3. вобщем все, катастрофа полная

    перестал определяться и ST-LINK V2… сбой дескриптора …. на всех компах…

    время и деньги потрачены впустую…

    запустить MAX2870 на Arduino не хватит мозгов…

  4. подключил через UART FTDI232, BOOT0 = 1, TX232 на A10, RX232 на A9
    работает CubeProgrammer 🙂
    вопрос с программированием решен

  5. следующая проблема настигла:
    прошивал, светодиод мигает
    припаивал гребенку A3-A7 — после чего перестает мигать светодиод на STM в такт морзе — на двух STM

    на 3-м припаял — светодиод мигает
    подключаю к MAX — горит синий и все не мигает, отключаю — мигает

    в SDRSharp не вижу несущей

    как все это оттестировать — непонятно, где и как искать трабл
    должен мигать светодиод или нет

    можете мне прошивку скинуть без OCXO, например на 1000 мГц на одну частоту — для отладки?

    я у себя частоты менял — прошиваю — светодиод не мигает

    1. судя по всему не инициализируется MAX с STM
      или ответа нет или что
      светодиоды красные горят непрерывно и все
      зеленый на MAX не горит (если что)
      пытался как то вывести статус на светодиод — но как на один вывести все статусы? 🙂
      через UART я провода задолбался подключать отключать

      без отладчика не реально понять что происходит абсолютно

      наверно придется статусные светодиоды припаивать к разным ногам 🙂

    2. Андрей, доброго дня! рад что заработала прошивка.
      В корне проекта на github лежит прошивка без ocxo, для стандартного кварца max на 25мгц UA3REO-Beacon-25Mhz-XO.hex
      Светодиод должен мигать всегда, и с max и без. Если тухнет, то что-то зависает на этапе инициализации max’а.
      С отладкой на портах и на одну частоту сделаю чуть позже, напишу отдельно как будет готово.

      1. сделал отладочные сигналы светодиодом
        итоги

        подключенный к MAX STM32 виснет на TRANSMITTER_Init();

        что еще заметил — неподключенный к MAX STM32 запускается, но не мигает CW
        потом рукой коснешься А3-А7 все вместе — начинает мигать CW, то есть TRANSMITTER_Init(); проходит только в ручном режиме

        еще:
        почему то STM32 не реагирует на кнопку reset, только отключение питания и потом включение перезапускает его на начало исполнения программы

        1. виснет в void MAX2870_Init(uint64_t Frequency) вот здесь

          while(HAL_GPIO_ReadPin(MAX_LD_GPIO_Port, MAX_LD_Pin) == GPIO_PIN_RESET) {
          HAL_Delay(1);
          }

          1. Ножку LD MAX2870 держит в нуле пока настраивает PLL внутри, ждёт захвата петли ФАПЧ. STM32 ждёт пока сигнал не станет единицей (захват произошёл).
            С генератором точно всё в порядке? сигнал есть? В файле main/STM32/Core/Inc/config.h частота соответствует частоте генератора на плате?

            1. я установил «под кварц 25мгц (встроенный в плату MAX2870)»
              #define REFERENCE_CLOCK 25000000 //by default 10000000 //

              у меня только MAX плата и STM сцеплены

              на частоте 100 мГц несущая есть (кварц MAX)
              на 25 мГц несущей нет

              1. errcode = MAX2870_SetReference(REFERENCE_CLOCK, 1, MAX2870_REF_UNDIVIDED); // int MAX2870_ERROR_NONE
                errcode = MAX2870_SetFrequency(Frequency, POWER_LEVEL, 0, MAX2870_AUX_FUNDAMENTAL, true, 0, 10000); // int MAX2870_ERROR_NONE

                проверял — обе дают errcode == MAX2870_ERROR_NONE

                1. собственно, MAX2870_SetReference и MAX2870_SetFrequency
                  обе выдают MAX2870_ERROR_NONE и без подключения к MAX, так что это ни о чем не говорит

            2. проверьте пожалуйста, может у вас тоже не работает от встроенного 25 мГц ?
              может надо переключить MAX на встроенный генератор?

              1. нужно ли выходы MAX подключать?
                а то у меня нет колечка, я просто провод воткнул в один из выходов

                1. Андрей, доброго дня!
                  Провода в один из выходов будет достаточно, на работу не влияет. Встроенный генератор также сразу подключен на заводской плате.
                  Я загрузил в github обновление прошивки — снизил скорость обмена по шине данными и добавил задержки, чтобы срабатывание было более чётким, опробуйте как будет возможность.

                  1. спасибо за помощь!
                    попробовал:
                    STM теперь устойчиво выходит на режим «CW мигания»
                    MAX на режим зеленого огня — не выходит…
                    несущая 100мГц есть, в остальных местах — нет

                    мне бы как то проверить — MAX вообще работает?
                    где расположить проверочный код? не могу соориентироваться в управлении MAX
                    получить от него статус какойнибудь чтоли…

                    1. В прошивке и драйвере нет режима чтения, только запись 🙁 линия на чтение даже не подключена за ненадобностью
                      А есть осфиллограф под рукой? проверить хоть наличие сигнала на генераторе и что управляющие сигналы с STM32 доходят до MAX

  6. большая просьба — добавить в проект вывод в COM порт А9 А10 отладочной информации

    я никак не могу разобраться, по сравнению с ардуино все просто космически непонятное…

  7. «В прошивке и драйвере нет режима чтения, только запись 🙁 линия на чтение даже не подключена за ненадобностью
    А есть осциллограф под рукой? проверить хоть наличие сигнала на генераторе и что управляющие сигналы с STM32 доходят до MAX»

    нет, осциллографа не имеется… думал не понадобится никогда и не беру

    а можно ли подключить линию на чтение и чтото прочитать? или там в МАХ плате не предусмотрено вообще это?
    может инструкция есть по взаимодействию с MAX? я поискал но не нашел вразумительного кроме про чип

    без взаимодействия с MAXв обе стороны отладить невозможно… или был бы у него режим управления светодиодом например, чтобы статус сообщить

    в инструкции к МАХ нашел:

    For a clean clock at start up, after power on, follow this sequence of programming:
    • Register 5, Address 0X05. Wait 20ms
    • Register 4, set bit 4 and 8 to 0 to keep RFOUT disabled
    • Register 3, Address 0X03
    • Register 2, Address 0X02
    • Register 1, Address 0X01
    • Register 0, Address 0X00
    • Register 5, Address 0X05
    • Register 4, set bit 4 and 8 to 0 to keep RFOUT disabled
    • Register 3, Address 0X03
    • Register 2, Address 0X02
    • Register 1, Address 0X01
    • Register 0, Address 0X00
    To enable RFOUT, Register 4, Address 0X04, set bit 4 and 8 to 0.
    Register programming order should be address 0x05, 0x04, 0x03, 0x02, 0x01, and 0x00. Several bits are double-buffered to update the settings at the same time. See the register descriptions for double-buffered settings.

    Read Sequence
    Register 0x06 can be read back through MUX_OUT. The user must set MUX = 1100. To begin the read sequence, set LE to logic-low, send 32 periods of CLK, and set LE to logic-high. While the CLK is running, the DATA pin can be held at logic-high or logic-low for 29 clocks, but the last 3 bits must be 110 to indicate register 6. Then finally, send 1 period of the clock. The MSB of register 0x06 appears on the falling edge of the next clock and continues to shift out for the next 29 clock cycles (Figure 2). After the LSB of register 0x06 has been read, the user can reset MUX = 0000.

      1. Ну либо дорабатывать прошивку под чтение 🙂 если бы это было задачей 5 минут, давно бы уже прислал 🙁

          1. Примерно так я себе это представляю:
            1. Устанавливаем STM32CubeMX, открываем файл UA3REO-Beacon.ioc
            2. Переводим SPI шину в режим дуплекса (сейчас в режиме мастера и только читает)
            3. Запускаем генерацию проекта, чтобы изменения отразились в файлах прошивки
            4. В дайвере пишем функцию на чтение регистров, по аналогии с записью https://github.com/XGudron/UA3REO-Beacon/blob/main/STM32/Core/Src/MAX2870.c#L364
            5. До или после инициализации MAX читаем нужные регистры и выводим в отладку https://github.com/XGudron/UA3REO-Beacon/blob/main/STM32/Core/Src/transmitter.c#L6

            1. нашел вот такую прошивку для Arduino
              все хорошо, но не могу понять где у MAX пин MISO или LockPin?

              // use hardware SPI pins for Data and Clock
              const byte SSpin = 10; // LE — MAX2870_PIN_SS = 10; ///< Ard Pin for SPI Slave Select
              const byte LockPin = 12; // MISO — Master Input, Slave Output: данные от ведомого к ведущему. Другие обозначения: SDO, DO, SO. Arduino: пин 12
              const byte CEpin = 9; // CE

              //init(SSpin, LockPinNumber, Lock_Pin_Used, CEpin, CE_Pin_Used)
              //initialize the MAX2870 with SPI SS pin, lock pin, true/false for lock pin use and CE pin use — CE pin is typically LOW (disabled) on reset if used;
              //depending on your board, this pin along with the RF Power Down pin may have a pullup or pulldown resistor fitted and certain boards have the RF Power Down pin (low active) on the header
              vfo.init(SSpin, LockPin, true, CEpin, true);

            2. подключил MISO D12 (ARDUINO) -> MUX (MAX2870)

              команда STATUS выдала:
              R: 1
              Reference doubler and divide by 2 disabled
              Int: 250
              Fraction: 0
              Mod: 4095
              Output divider: 1
              Output divider power of 2: 0
              PFD frequency (Hz): 10000000.00
              Frequency step (Hz): 100000
              Frequency error (Hz): 0
              Current frequency (Hz): 2500000000.000000
              Lock pin HIGH
              OK

              для пробы, команда
              STEP 10000 ->
              STATUS ->
              выдала

              Frequency step (Hz): 10000

              то есть MAX принимает устанавливает и отвечает судя по всему
              остальные команды я не понял как применять

                1. Андрей, доброго дня!
                  Это отличные новости, значит аппаратно проблем нет и дело явно в драйвере\файле MAX2870.c , понять бы только где проблема и почему она не проявляется у меня 🙁
                  Ну либо в STM32 почему-то не работает SPI контроллер.

                  1. вобщем приделал экранчик, вывожу R6

                    всегда выдает 1800007E на всех бэндах

                    ADC всегда = 0
                    VCO всегда = 15

                    1. А что даташит говорит по этому поводу? получается MAX вообще никаких команд не принимает?

                2. один раз загорался зеленый … так и не понял как

                  подключил MISO D12 (ARDUINO) -> LD (MAX2870)
                  MUX не надо…

                  не могу добиться LOCK… green light

                  REF 100000000 2 HALF
                  FREQ 126000000 2 2 FUNDAMENTAL
                  ->
                  R: 2
                  Reference divide by 2
                  Int: 161
                  Fraction: 7
                  Mod: 25
                  Output divider: 32
                  Output divider power of 2: 5
                  PFD frequency (Hz): 25000000.00
                  Frequency step (Hz): 100000
                  Frequency error (Hz): 0
                  Current frequency (Hz): 126000000.000000
                  Lock pin LOW
                  CE pin HIGH
                  OK

                  1. был зеленый при включении питания — это сбой видать
                    так все время LOCK LOW

            3. вспомнил, что на ардуино вольтаж другой уровней
              переделал для STM напоследок

              и о чудо — вроде читает R6 (последние три бита принятого = 110)
              только какие биты дают статус MAX или причину не LOCK?

  8. (делаю на арудино так как там через USB программируется и не надо провода дергать)

    вручную зажег LOCK — green работает
    вот функции:
    MAX2870_R[0x05] = BitFieldManipulation.WriteBF_dword(22, 2, MAX2870_R[0x05], 0b00); //set LOCK LOW GREEN OFF
    MAX2870_R[0x05] = BitFieldManipulation.WriteBF_dword(22, 2, MAX2870_R[0x05], 0b11); //set LOCK HIGH GREEN ON

    то есть можно сигнализировать статус LOCKом

    НО!
    толку пока нет, так как не знаю, от чего этот статус должен зависеть, что подкручивать, от чего LOCK зависит непонятно….

    есть такие функции:
    //Lock-detect speed adjustment. 0 = fPFD 32MHz
    MAX2870_R[0x02] = BitFieldManipulation.WriteBF_dword(31, 1, MAX2870_R[0x02], 0); // Lock Detect Speed

    MAX2870_R[0x02] = BitFieldManipulation.WriteBF_dword(8, 1, MAX2870_R[0x02], 1); // Lock Detect Function, int-n mode
    MAX2870_R[0x02] = BitFieldManipulation.WriteBF_dword(8, 1, MAX2870_R[0x02], 0); // Lock Detect Function, frac-n mode

    может есть какие мысли куда двигаться?

  9. ни в какую не хочет LOCK

    как эта плата переключает со встроенного генератора на внешний?
    может в этом суть?

    1. Генератор на этой плате выбирается с помощью конденсаторов, я выпаивал предустановленный и конденсаторами пускал сигнал с разъёма https://disk.yandex.ru/i/4Fj9RLquxVDalQ (поставил по диагонали)

      1. Заказал внешний ref 10 МГц….

        Однако 100мгц есть генерация встроенного.
        Откуда берётся 25 МГц?
        Я не видел нигде такой частоты в документации

        Хотя и со 100 МГц lock не приходит…

        Ps. осциллограф на али fnirsi 5012h
        Пойдет такой?

      2. все, сдаюсь… ни в какую не хочет работать…
        попытка прочитать R6 выдает 7С

        все забрасываю до каких-то лучших времен…

        1. Попробуйте с внешним генератором на 10мгц, а если не поможет — созвонимся, перешлёте мне по почте MAX+STM32 и всё отлажу со своей аппаратурой и верну, покупать осциллограф ради одного маяка не вижу смысла.

  10. «А что даташит говорит по этому поводу? получается MAX вообще никаких команд не принимает?»

    MAX зеленый LED LOCK управляется со стороны программы через MAX2870_R[0x05] = BitFieldManipulation_WriteBF_dword(22, 2, MAX2870_R[0x05], 0b11)
    а вот например записать в бит 31 = 1 через MAX2870_R[0x03] = BitFieldManipulation_WriteBF_dword(31, 1, MAX2870_R[0x03], 0x1) — не записывает

    тут не знаю как это интерпретировать … кроме как что R6 неверно считывается …

    1. может надо выполнить при включении это:
      Upon power-up, the registers should be programmed twice with at least a 20ms pause between writes. The first write ensures that the device is enabled, and the second write starts the VCO selection process. Recommended to turn-off the outputs during this sequence and then turnon the outputs using RFA_EN, RFB_EN.

  11. продолжил попытки прочитать R6:

    биты VCO=63 всегда, если VAS enabled

    при ручном изменении VCO — изменяет номер VCO корректно
    отрабатывает и VAS — disabled/enabled правильно — дает не дает изменить биты VCO
    в совокупности с правильной работой битов, которыми управляется светодиод на плате МАХ, можно сделать вывод, что МАХ работает, через SPI данными обменивается

    но вот частоту не устанавливает/ не генерирует, VCO не меняет автоматом…

    1. еще: убрал RESET MAX_CE везде в программе — стали биты AGC = 111 (Reads back the ADC reading of the VTUNE)

      1. правильно отрабатывается и бит POR readback status (0 = POR has been read back,1 = POR has not been read back (registers at default))

        1. судя по всему, внутреннее тактирование 50 kHz работает, а вот от внешнего генератора сигнал на вход MAX не поступает…

            1. нет — «Информация об отправлении временно недоступна. Когда она появится, вы получите уведомление.».

              я попробовал встроенный ген только как смог — отвертку к дорожке от XCO 100mhz до MAX2870 — генерация есть, с отверткой как передающей антенной на SDRSharp принимается сильнее.
              пайку чипа смотрел через увеличение на фото — тоже вроде все ок…

              вобщем загадка

              обнаружил, что в программе для MAX2870 значения для регистра 2 почему то не принимаются
              значение 18006E42 программа упорно исправляет на 98006E42

              также обнаружил интересную особенность в этом софте: Read SPI reg 6 and 7
              и регистр 7 действительно считывается, но расшифровать его значения не представляется возможным

              1. chatGPT тоже помочь не может, говорит либо конфигурация регистров не та, либо напряжение не то
                и регистр говорит 7 может быть, для внутренних нужд производителя 🙂

              2. 100mhz? у меня на 25mhz стоял, может в этом дело, прошивка под ругой кварц просто. Ну или непропай какойто у MAX2870, сигнал может не доходит. Как вариант ещё уровни генерации плохие, сигнал есть, но MAX не раскачивает.

                1. Бедный Андрей))

                  Кто будет здесь читать — на фото на плате макса 100мгц генератор стоит) и китайцы эту плату щас со 100мгц кварцем продают, не знаю откуда 25мгц взялось но в прошивке дмитрия вот в этой строчке

                  https://github.com/XGudron/UA3REO-Beacon/blob/main/STM32/Core/Src/MAX2870.c#L29

                  делитель R идет вторым параметром и устанавливается 1 (получаем Fpfd = Fref/R = 100Mhz) однако в даташите (привет секте!)) указано что для frac-N режима максимальная частота Fpfd — 50Mhz — то есть чтоб заработала плата с фотографии (с генератором 100мгц) надо там в той строчке дать делителю R побольше чем 1 значение, например 2 или 4 ) иначе лока не происходит)

                  пишу в порядке информирования, сам пол-дня гадал что не так, даже осциллограф подключал! пока даташит перечитывать не сел)

  12. Интересная конструкция. Можно попробовать «охоту на лис» перевести в СВЧ диапазон. Компактные антенны и приемники…

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

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