Перейти к содержанию
    

Смастерить LPT EPP на микроконтроллере

Возникла тут у меня небольшая задача переделать железяку, которой лет 20, на новую элементную базу.

Старый компьютер "каким-то образом" общается с самодельной железкой, которую делали те, коих уже давно нет. Девайс (подчиненное устройство) довольно простая вещь по своей сути, протокол обмена там, думаю, простейший. В биосе компьютера максимум что узнал, это то, что LPT настроен в режиме EPP.

Решил к STM32 подключить LPT, но вот полез в интернеты, но информации по электрическому подключению не кулибинными способами как-то мало. Кто-то станочки степ-дир подключает, кто-то бабушке скилы тру-хацкера демонстрирует, вешая гирлянды светодиодов на шину данных. Но читая чуть более осмысленные статьи-заметки, понял, что LPT в части физического подключения крайне "свободен" в реализации, настолько свободен, что некоторые девайсы были попросту несовместимы: то какие-то подтягивающие резисторы китайцы забыли приколхозить, то буферы двунаправленные с пуш-пульным выходом применяли, выпаливая LPT хоста. В общем, радостей мало. Сам протокол обмена там, вроде, простейший - горсть сигналов квитирования/строба и 8 бит шины данных. Но вот что делать с аппаратной частью? Как бы сделать сразу так, чтобы не промахнуться и не спалить чего-нибудь? На ум приходит шину данных (поскольку только она потенциально двунаправленная в зависимости от реализации LPT хоста) пропустить через двунаправленный шинный буфер с выходом типа открытый сток, подтянув резисторами к питанию на "уличной" стороне.

Может, кто-то уже съел собаку на этом? Какие подводные камни? Каким образом (кем и по какому событию) переключается направление шины данных?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:

Каким образом (кем и по какому событию) переключается направление шины данных?

2 мин гугления тыц

C5: Режим ввода-вывода данных. Устанавливает направление порта данных, 1=вход, 0=выход (обратите внимание, что порт принтера должен быть настроен на двунаправленное использование в BIOS (режим PS/2), чтобы этот бит имел эффект).
C6: Не используется.
C7: Не используется (хотя в некоторых реализациях этот бит используется вместо C5 для настройки ввода-вывода данных)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, Freibier сказал:

2 мин гугления тыц

C5: Режим ввода-вывода данных. Устанавливает направление порта данных, 1=вход, 0=выход (обратите внимание, что порт принтера должен быть настроен на двунаправленное использование в BIOS (режим PS/2), чтобы этот бит имел эффект).
C6: Не используется.
C7: Не используется (хотя в некоторых реализациях этот бит используется вместо C5 для настройки ввода-вывода данных)

И где тут описание ножки физического порта LPT, отвечающей за выбор направления передачи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разве трудно найти букварь на IEEE 1284? Там полностью всё расписано картинками, эпюрами и таймингами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, HardWareMan сказал:

Разве трудно найти букварь на IEEE 1284? Там полностью всё расписано картинками, эпюрами и таймингами.

О. Не сразу вразумил, что на это дело был стандарт. Спасибо, ознакомлюсь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Помнится... norton link не тпкбовал спец портрв. Приём шёл по битам статуса. Передача оьычным спрсобом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, Arlleex said:

О. Не сразу вразумил, что на это дело был стандарт. Спасибо, ознакомлюсь.

Что касается физической части, то там всё просто и даже были специальные микросхемы согласования. Что-то типа такого:

image.png

Правда, в случае с STM32 придётся придумывать согласование с LVTTL/LVCMOS. С другой стороны, зная электрические параметры на выходе интерфейса можно сделать сразу правильное согласование между STM32 и кабелем устройства IEEE 1284.

 

Хммм...

74LVX161284 Features:
• Level 1 and 2 signaling support
3.3V +/- 10% VCC operation
• Translation capability allows the cable-side to interface
with 5V signals
• Guaranteed 800mV minimum hysteresis on control
inputs
• B and Y output resistance optimized to drive IEEE 1284
prescribed cable
• B and Y outputs in high impedance mode during power
down
• 14mA B Port source/sink capability
• I/Os on cable-side B Port have integrated pull-up resistors
• Flow-through pin configuration
• Single-chip solution

72419.pdf ieee-1284-a_b_c_994.pdf

Изменено пользователем HardWareMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, HardWareMan сказал:

там всё просто

Если я правильно понял, то ТС спрашивает к какому пину DB25 подключить пин DIR этой мс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, Freibier said:

Если я правильно понял, то ТС спрашивает к какому пину DB25 подключить пин DIR этой мс.

У ТС вполне конкретная задача: освежить ведомое устройство, подключенное через LPT. Т.е., то, что находится на ПК и до физического порта DB25 должно остаться как есть, причём если будет миграция на другую комбинацию ПК то устройство должно остаться совместимым. Отсюда вывод: устройство надо сначала сделать электрически совместимым, а затем уже логически (по протоколу). Я уже показал выше, что были вполне себе штатные драйверы кабеля LPT, причём они совместимы под разные режимы (не обязательно использовать именно все). Это будет полностью электрически совместимое устройство с любым стандартным LPT портом, хоть на ноутбуке хоть на ПК.

Далее. ТС зашёл немного не правильно в тему. Его можно понять: он хочет сделать именно так как надо а не как дешевле. Но я бы начал с анализа схемы старого устройства и если оно работет то записал бы любым доступным LA активность на шине для анализа самого протокола. 16 каналов не хватит, конечно, но вероятно не все статусы могут быть использованы да и не все биты данных нужны для понимания арбитража и можно будет сравнить с эпюрами из букваря на IEEE1284 и определить, стандартный там протокол SPP/BIDIR/EPP/ECP или нет. Поэтому, первично было бы правильным посмотреть как именно организовано согласование старого устройства с кабелем LPT по факту и, вероятно, просто повторить эту модель было бы достаточно. Но ТC не приводил нам ни фото старого устройства, ни его схемы (даже отреверсеной), так что нам остаётся только гадать. Вероятно, устройство под NDA вообще находится.

Ну и отвечая собственно на вопрос "где на DB25 сигнал DIR?" - ответ нигде. Этот сигнал управляется самим устройством, когда оно по протоколу определяет, что должно переключить направление. Т.е., по умолчанию устройство должно соответствовать режиму SPP. А в букваре чётко показано, какие сигналы покидают устройство а какие нет:

image.png

 

IEEE-1284-2000.pdf

Изменено пользователем HardWareMan

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, HardWareMan сказал:

Далее. ТС зашёл немного не правильно в тему. Его можно понять: он хочет сделать именно так как надо а не как дешевле.

Да, верно - этих девайсов планируется сделать на объем ремонтного фонда: тот хлам, который починить не удалось, заменяется на свежий.

Цитата

Но я бы начал с анализа схемы старого устройства и если оно работет то записал бы любым доступным LA активность на шине для анализа самого протокола. 16 каналов не хватит, конечно, но вероятно не все статусы могут быть использованы да и не все биты данных нужны для понимания арбитража.

Я сразу таким путем настроен идти)) Уже распаял переходник LPT-LPT с отростками на логический анализатор.

Цитата

Но ТC не приводил нам ни фото старого устройства, ни его схемы (даже отреверсеной), так что нам остаётся только гадать. Вероятно, устройство под NDA вообще находится.

На самом деле мне было бы самому гораздо проще, если бы хоть какая-то схема осталась: ни схемы, ни плат (разводки), ни программного обеспечения - все в небытии. Насколько я понял, когда-то заказчику впарили девайсы без особых заморочек с КД, процессом разработки и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 minutes ago, Arlleex said:

Да, верно - этих девайсов планируется сделать на объем ремонтного фонда: тот хлам, который починить не удалось, заменяется на свежий.

***

На самом деле мне было бы самому гораздо проще, если бы хоть какая-то схема осталась: ни схемы, ни плат (разводки), ни программного обеспечения - все в небытии. Насколько я понял, когда-то заказчику впарили девайсы без особых заморочек с КД, процессом разработки и т.д.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:

Я сразу таким путем настроен идти)) Уже распаял переходник LPT-LPT с отростками на логический анализатор.

На али вроде полно LPT-USB переходников, для которых обещают "IEEE 1284". Типа такого:  https://www.aliexpress.com/item/1005006873754603.html

Заказать у нескольких разных продаванов разных подобных USB-LPT. Возможно какой-то нормально заработает с вашим девайсом. А дальше уже спокойно изучать обмен с ним по этому LPT.

А от электрических проблем и конфликтов разве не помогут параллельные резисторы ом по 100 по каждой линии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, HardWareMan сказал:

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

Да это наши блоки. Мы разработчики. Только не я лично, а нейкий дядя, лет 30 назад паявший нечто, что потом другой дядя смог продать в небольшом тираже.
 

2 часа назад, jcxz сказал:

А от электрических проблем и конфликтов разве не помогут параллельные резисторы ом по 100 по каждой линии?

Вряд ли, да и это не есть штатный режим.

P.S. Подключил переходником с коротенькими проводочками от сигнальных пинов - и обмен прекратился... То ли наводки ломают сразу обмен, то ли что-то еще.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, jcxz said:

На али вроде полно LPT-USB переходников, для которых обещают "IEEE 1284". Типа такого:  https://www.aliexpress.com/item/1005006873754603.html

Заказать у нескольких разных продаванов разных подобных USB-LPT. Возможно какой-то нормально заработает с вашим девайсом. А дальше уже спокойно изучать обмен с ним по этому LPT.

А от электрических проблем и конфликтов разве не помогут параллельные резисторы ом по 100 по каждой линии?

Кастомные устройства обычно не работают с такими переходниками. Эти переходники отчасти лишь поддерживают стандарт, только в части SPP/EPP пакетно в одну сторону. Т.е., чисто для принтера. Поэтому, когда ты его втыкаешь в комп ты видишь не LPT порт а "Поддержка USB принтера". А с принтерами они отлично работают а у тех же HP были свои нативные даже в виде "Адаптер для USB". Вот такая хрень:

4738800.jpg

И да, они не работали с LPT сканерами, ибо те использовали либо BIDIR либо ECP (с DMA, которые быстрые). А что касается кастомщины, так такие переходники не работают от слова совсем, потому что USB не поддерживает битбанг и он не маппит в пространство портов LPT какие-то регистры. Только пакетная передача данных на эндпоинт данных, которая уже контроллером загоняется как SPP со стробами и прочим.

18 minutes ago, Arlleex said:

P.S. Подключил переходником с коротенькими проводочками от сигнальных пинов - и обмен прекратился... То ли наводки ломают сразу обмен, то ли что-то еще.

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

Ну раз устройство на руках, может всё же стоит посмотреть на входные цепи интерфейса? А может даже нам показать получится какой-нибудь кусочек из этих цепей? Что касается помех на адаптере, может там, конечно, дело и с импедансом, но для этого должны быть большие скорости, как у ECP: там в режиме DMA до 2Мбайт/с а значит по проводу 2 МГц летает, провод для этого с витыми парами используется (в букваре на 1284 описан).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть давно такая штука

http://ra3pkj.ru/page2.shtml

https://www-user.tu-chemnitz.de/~heha/basteln/PC/USB2LPT/index.en.htm

 

китайцы лепят клоны на её основе для mach3

https://purelogic.ru/catalog/kontroller_plcm-lpt-2__interfeys_usb/

http://homecnc.ru/electro/33-lpt-dlya-cnc

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...