Русский
Русский
English
Статистика
Реклама

CAT-интерфейс для трансивера Радио-76

В предыдущей публикации о трансивере Радио-76 упоминалось о синтезаторе частоты с CAT-интерфейсом. В этой статье тема CAT-интерфейса будет раскрыта подробней.

CAT-интерфейс (Computer Aided Transceiver) предназначен для управления частотой, видами модуляции и другими функциями радиостанции с помощью компьютера.

В сети есть множество описаний радиолюбительских синтезаторов на базе Si5351, но в массе своей CAT они не поддерживают. Данная публикация этот пробел должна восполнить.

Аппаратное решение


Аппаратное решение не несёт никакой новизны. Синтезатор создавался из того, что было под рукой: плата Black Pill c микроконтроллером STM32F411CEU6, дисплей SSD1306 и микросхема синтезатора частоты Si5351A-B-GT.

Схема подключения Si5351A-B-GT приведена ниже.


Подтягивающие резисторы R1, R2 устанавливаются на выводы дальнего от микроконтроллера устройства на шине I2C. Сигнал с выхода CLK0 подаётся на первый смеситель основной платы трансивера Радио-76. Сигнал с выхода CLK2 подаётся на второй смеситель трансивера. Делители напряжения на резисторах R3, R6 и R4, R5 препятствуют перегрузке смесителей.

Вся схема собрана на печатной плате переходника SSOP-DIP:


Из имеющихся у меня в наличии кварцевых резонаторов на частоту 25MHz и 27MHz ни один на этих частотах не запустился. Параллельно включенные резисторы и конденсаторы ситуацию не спасали. На фотографии кварц, который запустился на частоте 24MHz, когда параллельно ему был включен резистор номиналом 1МОм.

Конфигурация микроконтроллера


Проект создан на основе платы Black Pill c микроконтроллером STM32F411CEU6 в среде разработки STM32CubeIDE:


Шина I2C подключена к выводам PB9, PB10 микроконтроллера. К выводам PB0, PB1, PB2 подключены тангента (PTT, Push-To-Talk) и контакты телеграфного ключа (KEY_DIT, KEY_DAH). Вывод PC13 служит для аппаратного переключения режима приём/передача (RX/TX). Режиму TX соответствует сигнал низкого логического уровня, при этом светится индикатор на плате.

Виртуальный COM-порт создан на основе IP Commucation Device Class. Максимальное количество интерфейсов равно двум. Размер буферов задан равным 64 Bytes.

Программная реализация CAT


Ссылка на репозиторий: https://github.com/dmitrii-rudnev/radio-76-cat

За основу решения была принята система команд для управления популярным трансивером Yaesu FT-817. Описание работы CAT-интерфейса этой радиостанции занимает в руководстве пользователя всего четыре страницы.

Управляющие программы сторонних производителей обычно используют для связи с радиостанцией драйвер OmniRig, созданный канадским радиолюбителем Alex Shovkoplyas (VE3NEA). Описанная реализация CAT-интерфейса использует ограниченный набор команд Yaesu FT-817, поддерживаемый этим драйвером.

При настройке OmniRig для работы с публикуемым решением нужно выбрать в конфигураторе OmniRig тип трансивера FT-817, COM-порт, к которому подключен CAT, и установить скорость порта 9600 бит/с.

Для управления радиостанцией один раз в 200 мс через COM-порт посылается пять байт данных. Пятый байт содержит команду управления, первые четыре байта могут содержать данные или быть пустыми. Радиостанция распознает команду, выполняет её и посылает отклик.

Описанная реализация CAT-интерфейса поддерживает работу в составе радиостанции двух генераторов плавного диапазона VFO A и VFO B. Наличие двух VFO позволяет работать на разнесённых частотах (режим Split), когда приём осуществляется на частоте одного VFO, а передача на частоте другого.

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

Помимо этого, хотя для Радио-76 это и не актуально, оставлена возможность переключения вида модуляции.

Собственно трансивер реализован переменной trx со структурой, приведённой ниже:
typedef enum{  MODE_LSB = 0x00,  MODE_USB = 0x01,  MODE_CW  = 0x02,  //CW-USB  MODE_CWR = 0x03,  //CW-LSB  MODE_AM  = 0x04,  MODE_FM  = 0x08,  MODE_DIG = 0x0A,  //DIG-U  MODE_PKT = 0x0C   //DIG-L} Mode;typedef struct{  Mode mode;     //используемая модуляция из списка  uint64_t vfoa; //частота VFO A в герцах  uint64_t vfob; //частота VFO A в герцах  uint8_t vfo;   //активный VFO: 0, если активен VFO A; 1, если VFO B  uint8_t split; //режим работы на разнесенных частотах: 1, если включен   uint8_t is_tx; //режим передачи: 1, если включен  uint32_t sysclock; //системное время  uint8_t systicks;  //счётчик прерываний SysTick до десяти} TRX_TypeDef;

Системное время используется для отслеживания тайм-аутов. Инкремент trx.sysclock происходит по каждому десятому прерыванию SysTick.

Переключение режима RX/TX осуществляет программный модуль ptt_if.c.

Переключение в режим передача (TX) и возврат в режим приём (RX) производится двумя разными способами:
1. По нажатию (TX) тангенты и её отпусканию (RX) (низкий/высокий уровень на входе PTT).
2. При получении по CAT команды FT817_PTT_ON (0x08) (TX) и получении по CAT команды FT817_PTT_OFF (0x88) (RX).

Следует учесть, что возврат в режим приём возможен только при условии отсутствия всех сигналов переключения в режим передачи.

Обработка состояния телеграфного ключа, а также линий RTS и DTR виртуального COM-порта в публикуемой реализации CAT-интерфейса не предусмотрена.

Связь с драйвером микросхемы синтезатора частоты осуществляет программный модуль vfo_if.c. Модуль меняет настройки синтезатора в зависимости от полученной по CAT частоты, а также режима работы радиостанции.

Модуль cat_if.c содержит драйвер CAT-интерфейса.

Обработчик состояния CAT-интерфейса запускается в бесконечном цикле main.c. Обработчик проверяет наличие подключения по виртуальному COM-порту, и если оно есть, то проверяется наличие данных в буфере CAT-интерфейса.

Если данные в буфере есть, обработчик извлекает из буфера пять байт данных и распознаёт команду по списку поддерживаемых. Если команда распознана, запускается обработчик команды, который обращается или к ptt_if.c, или к vfo_if.c. По результатам обработки формируется отклик, который передаётся в компьютер через виртуальный COM-порт.

Наиболее часто трансивер получает две команды: FT817_GET_FREQ (код команды 0x03) и FT817_READ_TX_STATE (0xF7). По ним он возвращает частоту настройки, вид модуляции, текущий режим приём/передача и режим работы на разнесённых частотах.

Виртуальный COM-порт


Виртуальный COM-порт создан на основе IP Commucation Device Class.

Команды CAT передаются из приёмного буфера CDC в приёмный буфер CAT функцией CDC_Receive_FS из состава файла usbd_cdc_if.c, расположенного в папке USB_DEVICE\App.

Отклик на команды передаётся из обработчика команд CAT-интерфейса запуском функции CDC_Transmit_FS.

Для корректной работы COM-порта в его буфер необходимо прописать параметры подключения:
static int8_t CDC_Init_FS(void){  /* USER CODE BEGIN 3 */  USBD_CDC_HandleTypeDef   *hcdc;  USBD_CDC_LineCodingTypeDef line_coding =  {    /* 9600 8n1 */    .bitrate    = 9600U, /* Data terminal rate, in bits per second */    .format     = 0U,    /* Stop bits: 0 - 1 Stop bit */    .paritytype = 0U,    /* Parity:    0 - None */    .datatype   = 8U,    /* Data bits */  };  hcdc = (USBD_CDC_HandleTypeDef*) hUsbDeviceFS.pClassData;  memcpy ((uint8_t*) hcdc, &line_coding, 7U);  /* Set Application Buffers */  USBD_CDC_SetTxBuffer(&hUsbDeviceFS, UserTxBufferFS, 0);  USBD_CDC_SetRxBuffer(&hUsbDeviceFS, UserRxBufferFS);  return (USBD_OK);  /* USER CODE END 3 */} 

Без этой записи в буфере OmniRig к COM-порту может и не подключиться.

От автора



Данное решение CAT-интерфейса может работать с любыми доступными радиолюбителям синтезаторами частоты и контроллерами дисплеев с минимальными переделками main.c и vfo_if.c.

Мне будет очень приятно, если эта публикация поможет кому-нибудь реализовать управление по CAT своим радиоприёмником или радиостанцией.

Источник: habr.com
К списку статей
Опубликовано: 13.05.2021 12:17:12
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании ruvds.com

Разработка систем связи

Программирование микроконтроллеров

Diy или сделай сам

Электроника для начинающих

Ham radio

Радио-76

Системы связи

Stm32

Stm32cubeide

Ruvds_статьи

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru