Последнее изменение 2003-05-01 21:30 (complete)
1 Вступление
В современном PC есть только один LPT порт, один или два COM-порта и 6-8 портов USB.
USB кабель - это 4 провода, а не 10-17 как в кабеле принтера. Обычно, разъем USB есть
внутри корпуса, поэтому нет необходимости кидать кабель к внутреннему устройству снаружи.
В большинстве случаев, загрузка процессора при работе с USB устройством гораздо меньше,
чем при работе с LPT. Почему же принято подключать разнообразные устройства к LPT ?
Распространено мнение, что подключить что-то к USB неимоверно сложно. Что для этого
требуются запредельные знания и экстраординарные умения. Как и большинство других распространенных
мнений - это неверно. Подключить LCD к USB немногим сложнее, чем к LPT и немного проще,
чем к COM-порту. Т.е. если кто-то смог подключить LCD к принтерному порту, то он сможет
подключить его и к USB.
Другая причина - недостаточк информации на данную тему. Если статья о подключении LCD к
LPT лежит на каждом втором (если не на каждом первом) сайте по моддингу, то, о подключении к USB,
нет ничего.
Иногда на форумах появляются примеры схем, но, как правило, в них используются дорогие,
сложнопаяемые или малораспространенные микросхемы. Это только укрепляет мнение,
что работать с USB могут единицы.
Настало время изменить ситуацию...
1.1 Копирайты и условия распространения
Текст и исходный код (за исключением указанного ниже)
© 2003-2004 Станислав "listener" Головин
Пропорциональный шрифт для прошивки взят из LCDControl
LCDControl - © Дмитрий Климов, http://digitalman.by.ru
Фиксированный шрифт для прошивки
© Виктор Зинец, http://www.zinetz.info
За основу работы с USB взят код из Motorola HC908JB8 USB Reference Design
by Oliver Thamm, MCT Electronikladen GbR, http://hc08web.de/usb08
Перепечатка статьи без разрешения автора запрещена
Разрешается использование прилагающихся к статье исходных кодов и программ
при условии сохранения копирайтов.
Информация к размышлению:
JB8ADW выпускается в корпусе SO-28, с расстоянием между выводами 1.27мм.
JB8JP имеет корпус DIP-20, с расстоянием между выводами 2.54мм. К сожалению,
у нее недостаточное количество выводов для управления индикаторами на базе SED1520
или текстовыми 4-х строчными. Поэтому к ней дополнительно требуется микросхема 74574.
1.2 О схеме
Предлагаемая схема проектировалась так, чтобы минимизировать количество используемых деталей.
В ней используется микроконтроллер MC68HC908JB8ADW. В Москве и (насколько я знаю) Санкт-Петербурге
его можно купить без особых затруднений. Насчет остальных мест у меня сведений нет.
Вместо MC68HC908JB8ADW можно использовать MC68HC908JB8JP. В этом случае, схема немного усложняется,
но упрощается пайка.
К схеме можно подключить любой индикатор, который можно подключить к LPT.
Как основной вариант, рассматривается MT-12232B и, дополнительно, приводятся примеры подключения
других индикаторов.
2 Подготовка
2.1 Используемые материалы
Для подключения LCD к USB нам понадобятся следующие компоненты и материалы:
LCD, который мы будем подключать.
В статье рассматривается MT-12232B, но можно подключить практически любой символьный
или графический LCD с параллельным интерфейсом (что? что такое параллельный интерфейс?
это будет объясняться ниже. Не вдаваясь в подробности - годится любой индикатор на базе
контроллера SED1520, SED1335, ST7565, KS0018, HD44770 или аналогичных. Что еще? Что такое
контроллер? Это объяснятеся в FAQ по LCD. Если нет FAQ или желания его читать -
возьмите MT-12232B и не мучайтесь. Для него, кстати будет самое подробное объяснение и даже фотки).
микроконтроллер MC68HC908JB8ADW или MC68HC908JB8JP.
микроконтроллер - это деталь, которуюю сложнее всего найти.
Можно воспользоваться www.efind.ru .
Я покупал JB8ADW в Москве в "Митракон"е.
микросхема 74574 (в том случае, если используется JB8JP)
кварц на 6MHz
может быть любого типа. из соображений габаритов рекомендуется тип HC-49SM или HC-49S
конденсатор 10mkF*16V - 2 штуки
конденсатор 0.1mkF - 2 штуки
конденсатор 22pF - две штуки
резистор 1M - 1 штука
резистор 1К - 1 штука
резистор 50 Ом - 1 штука (на некотрых индикаторах уже установлен)
резисторы и конденсаторы могут быть любого типа. Рекомендуются безкорпусные, SMD1206.
транзистор КТ3102 или аналогичный
кнопка тактовая - 1 штука
кнопку можно использовать любую, хоть от звонка. Если не заниматься
отладкой прошивки, можно вообще обойтись без кнопки.
провод монтажный - порядка 2м
рекомендуется провод МГТФ во фторопластовой изоляции.
провод для подключения к USB
тип провода зависит от того, куда планируется подключаться -
к внешнему или внутреннему разъему. Самый простой метод - взять ненужный USB-кабель.
либо фольгированный текстолит и хлорное железо, либо макетная плата
Если используется JB8ADW, на макетной плате должно быть место для SMD-компонентов (см.фото)
Я сознательно не привожу разводки платы. Схемы в формате Eagle прилагаются. Если есть опыт
изготовления плат - плата под используемые компоненты рисуется за полчаса, даже односторонняя.
Если такого опыта нет - проще собрать на макетной
припой и канифоль
Все, кроме LCD, должно уложиться в 250-300 рублей.
Картинка для примера, как что выглядит
2.2 материалы для программатора
Для записи загрузчика нам понадобится программатор. Программатор понадобится только для
начального запуска устройства, поэтому никаких особых требований к деталям не предъявляется.
Чтобы собрать его, нам понадобятся:
микросхема MAX232 (или любая аналогичная, у нее масса аналогов)
конденсатор 1mkF - 4 штуки (номинал конденсатора зависит от используемой микросхемы, например, для MAX232A - 0.1mkF)
резистор 10К - 4 штуки
диод КД522 или аналогичный - 1 штука
2.3 Инструменты
картинка
Паяльник (лучше - паяльная станция. За неимением - паяльник мощностью не более 25 ватт).
Канифоль и припой. Для пайки на плату рекомендуется использовать нормальный флюс, например ТАГС.
Острый нож (например, канцелярский для бумаги)
Маленькие кусачки
Пинцет (если есть потребность. я обхожусь без него)
Если используется провод во фторопластовой изоляции - зажигалка (чтобы зачистить провод - достаточно несколько секунд подержать конец провода в пламени).
Тестер (не обязательно, но очень желательно).
2.4 Необходимые предупреждения перед началом работы
Я думаю, что все это знают, но, на всякий случай:
Перед тем, как что-то перепаивать, устройство нужно обесточить.
При пайке не рекомендуется нагревать выше 150-200 градусов ни детали, ни плату.
После пайки нужно тщательно проверить правильность спаянного.
Если что-то переписывалось в прошивке - рекомендуется сохранить все открытые файлы не менее, чем за 10 секунд до подключения устройства.
3 Сборка
3.1 Схемы
Картинки:
Схема на JB8ADW
Схема на JB8JP
В формате Eagle:
Схема на JB8ADW
Схема на JB8JP
Библиотека MC68HC908JB8
Номиналы деталей:
R1 - 1M
R2 - 1K
R3 - 50 Ом (либо перемычка, если он уже есть в индикаторе или подсветка индикаторе не светодиодная)
R4 - 1K (если используется)
C1, C4 - 0.1 mkF
C2, C3 - 22 pF
C5, C6 - 10.0 mkF
Q1 - 6.0 MHz
3.2 Пайка
В этой части ничего сложного нет. Берется плата, берутся детали и второе припаивается к первому в
соответствии со схемой. Индикатор пока не подключаем. Порядок пайки - как удобнее.
Фотография спаянного контроллера крупно
Паялось в такой последовательности:
1. контроллер
2. конденсаторы: C2, C3, C1, C4, C5, C6
3. кварц (ножки пропущены с обратной стороны)
4. резистор R1
5. кнопка
6. транзистор
7. резистор R2
8. перемычки
Хорошее руководство по пайке SMD элементов лежит на
AVR Freaks
(требует бесплатной регистрации на сайте).
После того, как все спаяно, рекомендуется сделать паузу. (Да! Совсем забыл указать Twix в списке
материалов) После этого тщательно все проверить.
Рекомендуется прозвонить соседние контакты микросхемы. Еще рекомендуется проверить, как припаяны электролитические
конденсаторы - если перепутать полярность, они обычно взрываются. Напоследок, проверить, как поключен
USB провод: красный провод (+5v) должен быть соединен с 5м выводом контроллера, черный (земля) -
с первым.
Все правильно? Откладываем устройство в сторону и переходим к следующей части.
3.3 Программатор
Схема программатора
Номиналы конденсаторов зависят от используемой микросхемы. Диод - любой.
Поскольку (если не заниматься серийным производством) программатор потребуется один раз, единственное
требование к собранной конструкции - она должна развалиться не раньше, чем в ней пропадет потребность.
3.4 Первое включение и запись bootloaderа
Итак, теоретически, контроллер готов. Начнем со смок-теста.
Подключаем контроллер к USB
(или просто подадим на него питание). Если ничего не взорвалось и не пошел дым, замерим напряжения.
Между 1м и 5м контактом должно быть 5v, между 1м и 4м - 3.3v. (Напряжение лучше мерить не на самих
контактах, а на подключенных к ним конденсаторах. Если замерять на контактах, есть вероятность, что
щуп соскользнет и что-нибудь замкнет).
Отключим питание.
Информация к размышлению:
Контроллеры семейства MC68HC908 содержат встроенный монитор (отладчик и программатор). Для входа в режим монитора
требуется подать на вход IRQ 8-10v и выставить на контактах PTA1..PTA3 код 101. После сброса, контроллер
входит в режим монитора и контакт PTA0 используется как последовательный интерфейс.
Если все нормально, подключим программатор. (Если что-то не так - ищем ошибки).
Припаяем к контактам PTA0..PTA3 по резистору на 10К.
Другой конец резистора от PTA2 подключается на землю, остальных резисторов - к +5v.
Рисунок, куда что припаивать
Припаяем 4 провода от программатора. (два провода питания - к питанию. Провод, помеченный на схеме
как IRQ - к контакту IRQ микросхемы, провод, помеченный как DATA - к PTA0).
Еще раз проверим. Все в порядке? Включаем. На контакте IRQ должно быть порядка 8..10v. Выключили.
Пока все идет хорошо. Чтобыо заставить контроллер что-нибудь делать, нам понадобится
прошить в контроллер управляющую программу. Чтобы не подключать программатор каждый раз, когда
появится новая версия ,
прошьем в контроллер bootloader, чтобы, в дальнейшем, можно было заливать прошивки непосредственно по USB.
Нам понадобится софт для программатора. Он скачивается с www.pemicro.com.
То, что нам нужно,называется PROG08SZ.
Устанавливаем. Запускаем. На экране должно быть вот такое окошко. Выбираем ком-порт, к которому
подключились, Target Hardware Type - class III, остальное - по умолчанию (если в эту микросхему уже
записана какая-нибудь прошивка, то нужно еще поставить галочку IGNORE security failure или прописать
код доступа). Проверяем, что устройство включено и нажимаем "Contact target ...". Если все работает,
нам должны предложить выбрать алгоритм программирования. Выбираем jb8_908_highspeed.
После некоторой паузы, мы должны перейти в основное окно .
Specify S Record. Указать icp.s19. Program Module. Если не было ошибок, то все готово.
.
Подробно работа bootloaderа описана в Motorola Application Note AN2398. Используемый загрузчик
взят оттуда с минимальными изменениями (добавлена обработка кнопки).
bootloader
USB флэшер
Если все прошло нормально, то в этом месте у нас должен быть контроллер с прошитым bootloaderом. Проверим.
Отключаем программатор . Включаем. Обнаружено новое устройство? Ура. Распаковываем архив с
флешером. Ставим драйвер оттуда. Запускаем USBICP.exe. Выбираем любой personal file. Erase Chip. Blank Check. Прошло? Если да, то внешний программатор нам
больше не нужен. Можно отпаивать его совсем и делать uninstall PROG08SZ.
3.5 подключение LCD
Если с MT-122332 снять металлическую рамочку и отполировать - он будет смотреться гораздо симпатичнее
Ну, теперь пора заняться тем, ради чего это все было затеяно.
Вооружаемся монтажным проводом и припаиваем согласно схеме. Должно получиться нечто вроде
этого.

Схема подключения MT-12232B

Схема подключения PSE12864URT

Схема подключения HD44780
Необходимое дополнение: мало подключить индикатор, нужно еще, чтобы он воспринимался программной частью.
Об этом - далее.
4 прошивка контроллера
Для начала - процесс прошивки подробно.
Распаковываем flash-jb8. Запускаем USBICP.exe. Должен последовать запрос Personal File.
В ответ на него нужно указать любой из .imp файлов, лежавших в архиве. Если устройство не подключено,
флэшер выдаст сообщение "Error in calling Open_Device ()" - его можно проигнорировать.
На экране должно появиться вот такое окно. Далее - понадобится подключенное
устройство. Причем не просто подключенное, а в режиме программирования. Выключаем его (если оно включено).
Нажимаем кнопку и не отпуская - включаем. Через одну-две секунды - отпускаем кнопку.
Erase Flash. Select File. Выбираем файл с прошивкой . Program. Готово.
Если выдается сообщение "Fail to open device" - переподключить устройство. Если что-то пошло не так -
искать ошибки в аппаратной части. .
Кнопка "Checksum" в программаторе предназначена для подсчета контрольной суммы прошивки.
После перекомпиляции прошивки нужно загрузить файл в программатор и проверить контрольную сумму.
Она должна совпадать с числом в vecjb8.c. Если не совпадает - нужно поправить число, откомпилировать
заново и снова загрузить в программатор.
jb8-bulk-101.s19 - Прошивка для описанного выше варианта (v1.01)
jb8-bulk-7565-101.s19 - Прошивка для JB8JP+PSE12864URT (v1.01)
jb8-bulk-101.zip - Исходные тексты прошивки (v1.01).
5 Программное обеспечение
Итак, процесс подключения к USB завершен. Перейдем к практическому применению.
Программному обеспечению будет посвящена вторая часть статьи, а пока, чтобы можно было попробовать:
Простой тест - для примера, как работать с контроллером
USB PortIO - эмулятор HD44770. С исходниками.
В архиве, кроме исходников, находятся файлы dlportio.dll и usbportio-test.exe.
Требуется скопировать dlportio.dll в каталог к используемой LCD-программе и запустить usbportio-test.exe.
После этого, запустить программу и указать ей в параметрах двустрочный индикатор на базе
HD44770. Должно работать.
Чтобы перехватчик работал с lcdhype, прилагаемую dlportio нужно разместить в системном каталоге
(обычно - c:\windows\system32). Внимание! Если установлен dlportio - не забудьте сохранить
оригинальную .dll!
Эмулятор был успешно протестирован с LCDMonitor3 и LCDSmartie. С lcdhype работает ограниченно,
в режиме HD44780, без управления подсветкой
Работающее устройство:
MT-12232B
PSE12864URT - к сожалению, инверсные индикаторы практически невозможно фотографировать со вспышкой, поэтому фотография мутная. В жизни он гораздо красивее.
6 Заключение
На этом первая часть статьи заканчивается. Во второй (и, возможно, следующих) частях ожидается:
подробное описание подключения разных индикаторов (как аппаратной, так и программной части);
описание структуры прошивки и внесения в нее изменений;
подключение дополнительных кнопок и светодиодов;
эмуляторы четырех- и восьмистрочных индикаторов;
плагин к lcdhype;
фильтры визуализации DirectShow.
Есть предложения? Пожелания? Замечания? Просьбы? Пишите
сюда.
Конец первой части. продолжение следует....