Necromant’s MultiDrop UART: Базовая плата.

По долгу службы работаю с кучей эмбеддед железяк. А что у них общего? Правильно УАРТ. То, по чему мы отлаживаемся и даем убуту инструкции грузить ядро. Когда борд много, понимаешь, что начинаешь обрастать интерфейсными микросхемами с usb на уарт, как дерево мхом, начинается чехарда(а /dev/ttyUSB0 у меня сейчас к этой плате подрублен, или я его переткнул?). Ну и особенно достает разница в логических уровнях.
В общем, это дело мне надоело и я смекнул:
1. работаю я обычно только с одной бордой из своего зоопарка.
2. на полке лежитмикросхемка ft232rl
3. а в ящике сдвиговые регистры и буферы…

Порывшись в хламе я так же откопал транзисторы в sot-23 корпусе (9012 и 8550), потенциометры и прочих хлам.
Собственно, мысль была такая. Делаем девайсину, которая будет мультиплексором изодного в N уартов. на ft232rl есть выводы CBUS, которые можно юзать в виде пинов общего назначения. Аж 4 штуки. Режим этот зовется bitbang и есть там даже библиотека для него — libftdi. Входы синхронного сдвигового регистра это clk и data. По фронту клока оно защелкивает данные и сдвигает их. Выход же параллельный. Таким образом, к ft232rl приросли 2 сдвиговых регистра.
Первый выбирает питание, второй адрес. Начнем с питания, так как именно оно и есть на базовой плате.
Мосфетов под рукой не было, но были транзисторы. Выбрал PNP, и заставил их работать в ключевом режиме. С коллектора питание идет на линейный стабилизатор ams1117. Выходное напряжение подстраивается потенциометром, а далее через диод Шоттки идет на VCCIO FT232RL и питание регистров. О как!
Итого 5 каналов настраиваемых подстроечниками, канал на 3.3 вольта и канал на 5 вольт. Настраиваться можно в диапазоне от 2х вольт до пяти, что я считаю очень неплохим диапазоном.
На базовой плате присутствовало только 2 разъема торчащие вверх, один с регистра выбора адреса, другой с выходов UART’a. Идея заключается в том, что количество каналов мы будем масштабировать лепя сверху «шилды», на которых будет находиться, собственно, буфер и выходы уарта.
Далее пошло самое интересное. Оставалось нарисовать принципиалку этой хреновины, развести, протравить печатку и спаять. Хотя бы базовую плату. Эту задачу-то я и выполнил. Вышло примерно такое:

.
Не обошлось конечно без багов. транзисторы пришлось переворачивать и подгибать, ибо перепулось на футпринте база с эмиттером, а так же мне не в домек почему-то было, когда я рисовал схему, что когда все выходы сдвигового регистра отвечающего за питание единицы (то есть PNP транзистор закрыт), то и сам регистр отключен. И выйти из этого состояния никак. Потому пришлоь пожертвовать одним каналом, бросить провод на землю и обеспечить гарантированные 2 вольта дежурного напряжения.
Теперь дело остается за «шилдами», которые будут крепиться сверху.

Necromant’s MultiDrop UART: Базовая плата.: 6 комментариев

  1. хм.. странные и наверное дурацкие вопросы:
    железо просто мультиплексирует uart/usart на один из n каналов?
    если да, то возникает вопрос, а как всем этим хозяйством управлять?
    должны ли подключенные железки работать одновременно?
    и как выясняется, что напряжение достаточное?

  2. Ага, именно мультиплексирует на один из N каналов. Работать можно с одним каналом одновременно, а управляется все маленькой утилиткой из командной строки. Ей же и выбирается какой канал питания пустить на буферы и VCCIO ногу FT232RL.

  3. А можно еще дурацкий вопрос: как можно проверить функционирует ли конвертер usb-usart? (вариант с кортнуть rx и tx не помогает. потому как minicom запущеный «как есть» с указанием нужного порта не показывает «эхо».)

  4. @domov0y А flow control выставлен? Должно быть отключено программное управление потоком и аппаратное. Это чтобы было задействовано только 2 ноги.

  5. minicom -d -D /dev/ttyUSB0
    Давим CTRL+A O
    Выюбираем опции порта, и делаем что-то вроде такого:

    ПАРА+————————————————————————+
    Дата| A — Последовательный порт : /dev/ttyUSB0 |
    Port| B — Размещение lock-файла : /var/lock |
    | C — Программа при выходе : |
    Нажм| D — Программа при запуске : |
    | E — Скорость/Чётность/Биты : 115200 8N1 |
    | F — Аппаратное управление потоком : Нет |
    | G — Программное управление потоком : Нет |
    | |
    | Какую настройку изменить? |
    +————————————————————————+

    После этого замыкаем rx и tx и любуемся эхой в терминалке.

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