Универсальный программатор имени Motorola

Большинство радиостанций Motorola программируется через встроенный USB интерфейс или с помощью K-Line адаптера. И это действительно так, если потребности в программирования радиостанций лежат в области программирования частот и настроек радиотракта. Всё становится намного веселее, если внезапно потребуется сделать что-то более серьёзное: например, перепрошить транковую станцию в «нормальную», заменить прошивку DSP-модуля, или просто заменить прошивку в радиостанции. Внезапно выясняется, что для «серьёзных» манипуляций с радиостанцией требуется наличие специального RIB-адаптера (Radio Interface Box), подключаемого к реальному COM-порту.

Изучение интернет-поделок не принесло морального удовлетворения, т.к. каждый лепит своё изделие исходя из модельного ряда радиостанций Motorola на своей домашней свалке и своего понимания о краткости схемы: один из таких чудо-девайсов собран аж на 9 микросхемах! Поэтому было решено по-быстрому сделать очередную поделку, претендующую на универсальнось и реализующую все известные протоколы Моторолы, на одной микросхеме.

motprog_view

Вот так выглядит универсальный программатор радиостанций Motorola на одной ИМС

Для изучения протоколов был взят оригинальный RIB Motorola с насадками, позаимствованный на Белтелекоме. Из этого чёрного ящика удалось выковырять 3 возможных протокола обмена, а также поведение шины Busy.

Протокол K-Line. Сведение линий RxD и TxD в одну K-линию для реализации симплексного обмена данными. K-линия в неактивном состоянии подключена через резистор 4k7 к +5В, а в состоянии передачи линия замыкается на землю выводом TxD или открытым стоком со стороный радиостанции. Отличительной особенностью реализации такого адаптера является появление своего эхо-символа при передаче данных по линии Tx. Т.е. при передаче данных, компьютер тут же принимает их обратно, и программа на компьютере должна принимать меры для фильтрации входящих данных, что существенно замедляет трафик, особенно в современной реализации COM-портов через USB. В большинстве USB2COM адаптеров время поллинга составляет 10…16млс, а значит ожидание приёма своего ОДНОГО эхо-символа как раз и составляет эти 10..16млс, хотя передача символа заняла ~1млс, на что благодарные пользователи моторольского софта просто не нарадуются, т.к. можно выйти покурить, поесть, поспать, а потом покурить ещё раз, пока софтина что-нибудь запихнёт в радиостанцию.

Протокол MBus. Также сводит RxD и TxD в одну K-линию для реализации симплексного обмена данными, и электрически является аналогом K-линии, но, внезапно, не даёт эха в RxD-линию при передаче символа по TxD. Достигается это принудительным удержанием RxD в высоком состоянии при опускании TxD. Т.е. протокол MBus — это K-линия без эха. Казалось бы ничего особенно не поменялось, однако, это «неособенное» изменение позволяет прошить 1Мбайт памяти за 1.5 минуты через тот же USB2COM. MBus применяется для глобальной перепрошивки радиостанций, т.к. реализация USB-порта, видимо, достаточно сложна для помещения в bootstrap загрузчик даже для современных цифровых радиостанций.

Протокол SCI. Это обычный UART с раздельными шинами RxD и TxD, где передающий (PC->radio) вывод TxD называется SCI RX+, а в качестве приёмного вывода RxD (PC<-radio) используется вывод Bus+. Протокол SCI используется для замены ПО в большинстве пожилых радиостанций: например, транковую GP1200 можно перепрошить в MT2000, в которой частота приёма меняется по желанию пользователя, только с помощью этого протокола, несмотря на то, что программирование функций и частот в нормальном режиме производится по K-линии.

Линия Busy. Использование этой линии было замечено во всех 3х вариациях протокола. Линия Busy представляет инверсный вариант K-линии (используются инверсные сигналы DTR и CTS): в неактивном состоянии линия Busy через резистор 4k7 подключена к земле. Если устройство хочет установить сигнал занятости, оно «сильно» поднимает шину Busy в +5В — это аналог открытого стока K-линии, только при активности происходит присоединение линии не к земле, а к +5В). Опускание сигнала DTR(активность) вызывает опускание сигнала CTS и подъём линии Busy.

motprog_sch

Схема универсального программатора

Логика работы всех трёх протоколов реализована на контроллере tiny43U, режимы переключаются кнопкой MODE, линия Busy работает в каждом из режимов, работоспособны все скорости обмена вплоть до 115200 бод. Чтобы не городить огород с напряжением +12В, которое в некоторых радиостанциях используется в качестве триггера перехода в режим программирования, преобразователь собран на этом же контроллере: максимального тока 12мА, который выдаёт преобразователь, более чем достаточно — типовой ток потребления по линии триггера 3.5мА. Последний рабочий режим запоминается в EEPROM, в каком режиме программатор выключается, в таком же и включается. Чтобы программатор не подвисал (мало ли что), активирован WatchDog. Контроллер tiny43U можно заменить на любой другой, с достаточной производительностью и достаточным количеством выводов, изменив прошивку под используемый контроллер.

motoprog_inside

Для удобства, преобразователь USB2COM был разведен прямо на плате программатора. В качестве микросхемы USB2COM была взята наиболее универсальная с точки зрения переключения скоростей обмена и настроек поллинга FT232BL ф.FTDI, но никто не мешает использовать любой другой чип USB2COM, или не использовать USB2COM вообще, а подключаться к внешнему COM-порту через преобразователь уровней, например, на MAX232.

Прошивку с исходниками программатора можно скачать здесь.