Подключение мини программатора CH341A к программе Postal2 (без LPT порта)
к оглавлению
Мини программатор на CH341A китайского производства.

Рис 1. Назначение выводов соединителей 25XX и 24XX, pin - номер вывода микросхемы CH341A.
При разомкнутой перемычке PAR \ COM устройство будет функционировать как виртуальный com port.
При замкнутой перемычке работает в паралленом режиме, который наиболее интересен для эксперименторв.
Схема представлена на рис. 2.

Рис. 2. Схема мини программатора CH341A в формате pdf.
Номиналы резисторов заимствованы из реального устройства, конденсаторов из спецификации
CH341A-ETC.pdf, драйвер для windows.
Немного теории
Перенаправить потоки ввода - вывода данных программы Postal2 возможно, благодаря тому, что автор и создатель воспользовался хорошо документированной, с исходным кодом, библиотекой LptDrv.dll. Заменяя функции на собственные, можно подключить устройства, отличные от LPT (автор упоминал о такой возможности). Из всех возможных плат расширения - согласования выбран VCT - как наиболее универсальный. К тому же ,в отличии от платы на микросхеме 74HC05, при обмене не используется регистр CR LPT (а значит и функция записи в регистр), что позволяет уменьшить задержки при обмене данными. Для VCT используются только функции вывода данных и чтения статуса.
Из приведенных данных (см. рис. 1) видно, что на соединитель 25XX подключены четыре вывода микросхемы CH341A, а на 24XX два.
Этим и воспользуемся для экспериментов.
Четыре и еще два вывода данных позволят не очень многое, но какую - то пользу все же можно извлечь.
Некоторые из способов использования:
-
Вариант 1:
Можно использовать 25XX соединитель "как есть" - то есть перенаправить програмно биты LPT порта, которые использует программа Postal2 для доступа к SPI шине, с учетом разводки проводников платы согласования. В этом случае будут доступны все возможности программы для шины SPI. -
Вариант 2:
Использовать 25XX соединитель так: два вывода для чтения и два для записи, что позволит добиться полной совместимости с I2C шиной. -
Вариант 3:
Использовать 24XX соединитель, где выведены SCL и SDA выводы c drain open CH341A. Правда прочесть, SCL шину нет возможности - внутрисхемно не подключена к регистру чтения. Програмно можно обойти такое ограничение - позволить читать ту информацию, которая записывалась, без реального чтения данных с шины. -
Вариант 4:
Использовать в составе USB-LPT переходника.
Потребует разработки платы, но позволит сделать целевое устройство (например POSTAL2 - CH341A - VCT), или POSTAL2 - СH341A - LPT для тех у кого плат (джигов) в избытке. Совместимость с програмным обеспечением почти полная - плохо будут работать режимы, связанные с точными временными задержками. Написать отдельную билиотеку dll для этого совсем не сложно, и принципиально ничем не отличается от вариантов, описанных выше. Желающие заняться экспериментами и изготовлением - обсудим на monitor.net.ru. -
Вариант 5:
Использовать режим EPP/MEM - позволить иметь по два 8 - битных регистра (адреса) ввода-ввода для доступа к многоразрядным шинам или многовыводным устройствам. Потребует разработки платы и нового (адаптированного) програмного обеспечения и пока не рассматривается.
Реализация вариантов 1-3.
К сожалению следует отметить то, что все операции программой Postal2 выполняются в байт вывод - ввод режиме.
В приложении к USB устройствам это означает, "длительные" задержки чтения, и связаны они с латентностью драйверов
шины USB (usb устройство само не может инициировать обмен - только ведущий, после специального запроса прочтет данные).
Для XP документируетя 0,016 секунд и более, для поздних систем задержки снижены.
Для WIN10 desktop измеренная задержка составила 0,002 секунды.
А вот планшет на WIN10 - удивил: задержки не наблюдаются, и все работает на скорости в несколько раз быстрее!
Вероятнее всего - на планшете встроенный в процессор порт, потому и работает по-другому.
Отсюда вывод - прочитать или записать микросхемы с большим объемом данных (spi data flash например) можно, но будет очень долго.
Так же использовать "время зависимые" девайсы, например IRBOX, не получится - данные с большой вероятностью будут недостоверны.
Микросхемы с малым объемом памяти можно считывать или записать относительно комфортно.
Проверки проводились с микросхемами 24Сxx, Weltrend, 25Сxx. Последние опознавались, идентификаторы читались.
Общие способы применения при всех вариантах подключения
Драйвера CH341A должны быть установлены в системе. Если виртуальный сом порт не нужен устанавливаем только CH341PAR.EXE, иначе еще и CH341SER.EXE.
Лучше всего скопировать файл Postal2.exe в отдельную папку, в нее же одну из LptDrv_Postal2-VCT-CH341A-xxx.dll, переименовать в LptDrv.dll. В строке заголовка программы отобразится подсказка о подключении CH341A и текущей LptDrv библиотеке. Посмотреть текущую версию можно так же в свойствах файла. При первом запуске настроить программу и сохранить конфигурационный файл. При старте программы, если устройство доступно в системе, подключится сразу. Если же вы подключили его позже, нажмите Extra Control -> Reset.
В настройках все как обычно (должен быть выбран VCT), за исключением следующих значений на вкладке LPT settings:
Рис. 3. Установки программы Postal2 (указаны значения для максимальной скорости).
-
Default LPT:
При настройке имеем ввиду, что номер LPT порта уменьшенный на 1 означает номер CH341A ,активного в системе. Таких устройств может быть до 16, их номерация начинается с ноля. LPT1 соответствует нулевому устройству, LPT2 первому и т.д. По умолчанию LPT1 и есть первое (нулевое) устройсво CH341A. -
TimeOut:
On Start - включено, программа Postal2 будет отсылать этот параметр dll при открытии порта.
Цифровое значение имеет специальное назначение:-
отлично от 1 (один) - параметр Delay (Speed) учитывается, отправка и прием данных управляет Postal2, скорость работает как
обычно
( программа может отсылать одни и те же данные в LPT порт - для надежности или задержки); - равно 1 (один) - параметр Delay (Speed) не применяется (устанавливается как Manual со значением 0). Записываемые дублирующиеся данные игнорируются, а читаемые возвращаются последние прочитанные, до новой записи данных. Такой подход уменьшает количество циклов USB шины, что положительно сказывается на быстродействии, однако может приводить к недостоверным данным.
-
отлично от 1 (один) - параметр Delay (Speed) учитывается, отправка и прием данных управляет Postal2, скорость работает как
обычно
Вариант 1: использовать 25XX соединитель "как есть"
Можно только сказать, что оно работает. Проверялось на spi data flash, при чтении идентификатора. С большой долей вероятностью все остальные SPI микросхемы будут функционировать.
Файл LptDrv.dll для этого варианта LptDrv_Postal2-VCT-CH341A-25XX-SPI.dll.
Вывод
- Подключение по варианту 1 работает.
- Проверено на микросхемах 25xx spi data flash.
- Минус - крайне медленно. Не рекомендуется для использования при большом объеме данных.
Вариант 2: использование 25XX соединителя для двух-битного доступа к шине I2C
Схема подключения для варианта 2 (схему можно упростить до транзисторного варианта - светодиоды, и связанные элементы исключить).
Рис. 4. Использование 25XX соединителя для доступа к I2C шине
(в формате pdf).
Файл LptDrv.dll для этого варианта LptDrv_Postal2-VCT-CH341A-25XX-74HC05.dll.
Вывод
- Подключение по варианту 2 работоспособно, в том числе и на 5В шинах I2C.
- Проверено на микросхемах EEPROM 24Cxx и процессорах Weltrend.
- Следует упомянуть, что этот вариант наиболее безопасен, так как соединяет устройства опосредованно.
- Кроме того при чтении программу нет необходимости "обманывать" - читаются и пишутся реальные данные на шине.
- Минус - требуется отдельная плата согласования.
Вариант 3: использование соединителя 24XX (выв. SCL и SDA микросхемы CH341A)
Данный способ не требует плат согласования.
Так как программатор запитывается 3,3В стабилизированным напряжением (см. рис. 2) при подключении к 5В шине возникнут токи утечки через внутренние диоды микросхемы CH341A на источник питания. Целесообразно немного доработать мини программатор CH341A для устранения повреждений и при возможном неправильном подключении. Например так, как на рис. 5.
Рис. 5. Доработка программатора CH341A для защиты от избыточних токов через выводы SCL, SDA.
При подключении к main board LCD Samsung c процессором Weltrend, через VGA разъем, измерения дают следующие данные на любом из выводов SCL, SDA относительно GND (не забываем, что I2C шина VGA соединителя запитывается 5В):
-
При запертом канале:
0,3mA от main board к программатору, при разности потенциалов 3,9В; -
При открытом канале на программаторе:
1,3mA от main board к программатору, при разности потенциалов менее 0.1В;
Файл LptDrv.dll для этого варианта LptDrv_Postal2-VCT-CH341A-24XX-I2C.dll.
Вывод
- Подключение по варианту 3 вполне работоспособно, в том числе и на 5В шинах I2C, даже без доработки, при правильном включении - токи не превосходят установленного спецификацией на микросхему CH341A лимита 4ma втекающего и вытекающего тока на один вывод.
- Проверено на микросхемах EEPROM 24Cxx и процессорах Weltrend.
- Следует помнить - при чтении программе выдаются подставляемые данные на выв. SCL. В некоторых случаях, согласно спецификации I2C, ведомый может тормозить быстрого ведущего, в этом случае неизбежно возникнут ошибки. Попытаться решить эту проблему можно понижая скорость, добиваясь нормальной работоспособности программы.
- Данный вариант наиболее оптимальный, не требует затрат.