Синтезатор на Si5351
Posted: 23 Nov 2016, 00:23
В сети доступно несколько проектов синтезаторов на Si5351, но это либо простейшие конструкции, либо системы с закрытм исходным кодом, что затрудняет их применение. Либо код есть, но его настолько много, что проще написать заново с нуля. Собственно этим я и занялся когда мне потребовался синтез для очередной конструкции.
Техзадание было выработано такое:
1) Синтезатор собираем из готовых китайских модулей, которые можно купить на aliexpress. Процессор - Arduino Pro Mini/Nano. Дисплеи - 1602, TFT SPI, OLED. Модули расширителя I2C шины на PCF8574. Модули преобразования уровней 3,3v/5v. Оптический энкодер.
2) Полный сервис. Синтезатор должен обеспечивать режимы VFO A/VFO B, Split, RIT. Отображать S-метр, мощность, SWR. Обеспечивать защиту PA при превышении SWR.
3) Высокоуровневый код абстрагированный от "железа" - средства C++ полностью позволяют это сделать и мыслить в категориях высокоуровневых объектов. Это позволит достаточно легко менять дисплеи, логику работы и подключать дополнительную периферию
4) Поддержка различных раскладок преобразования частоты - single IF, up conversion, direct conversion. Минимальные изменения в коде для смены раскладки
5) Интенсивное использования I2C позволит реализовать весь функционал с запасом по использованию выводов контроллера.
6) Весь код открытый, проект open source. Особое внимание на разнесение кода по модулям и его "читабельность"
Исходные коды и схема выложены на github'е
Техзадание было выработано такое:
1) Синтезатор собираем из готовых китайских модулей, которые можно купить на aliexpress. Процессор - Arduino Pro Mini/Nano. Дисплеи - 1602, TFT SPI, OLED. Модули расширителя I2C шины на PCF8574. Модули преобразования уровней 3,3v/5v. Оптический энкодер.
2) Полный сервис. Синтезатор должен обеспечивать режимы VFO A/VFO B, Split, RIT. Отображать S-метр, мощность, SWR. Обеспечивать защиту PA при превышении SWR.
3) Высокоуровневый код абстрагированный от "железа" - средства C++ полностью позволяют это сделать и мыслить в категориях высокоуровневых объектов. Это позволит достаточно легко менять дисплеи, логику работы и подключать дополнительную периферию
4) Поддержка различных раскладок преобразования частоты - single IF, up conversion, direct conversion. Минимальные изменения в коде для смены раскладки
5) Интенсивное использования I2C позволит реализовать весь функционал с запасом по использованию выводов контроллера.
6) Весь код открытый, проект open source. Особое внимание на разнесение кода по модулям и его "читабельность"
Исходные коды и схема выложены на github'е