Открытые коллекторы и 74LVC245

Я пытаюсь подключить клавиатуру PS/2 к MSP430 для игрушки. Клавиатура PS/2 работает от 5 В, но микроконтроллер MSP430 работает от 3,3 В. Итак, у меня есть переключатель уровня 74LVC245 для преобразования между ними.

Теперь у меня есть это, однако я обнаружил, что интерфейс клавиатуры PS/2 использует сигналы с открытым коллектором, так что они могут управляться с любого конца, и, очевидно, использование 74LVC245 с ними сложно. Я впервые встречаю такое; Я в основном программист.

Меня не интересует отправка команд НА клавиатуру, только получение команд ОТ клавиатуры, поэтому мне никогда не нужно управлять линиями данных и тактовых импульсов со стороны микроконтроллера. Достаточно ли просто привязать сигналы клавиатуры к Vcc через (большой) подтягивающий резистор, чтобы они оставались высокими, когда клавиатура не управляет ими (это требуется протоколом; если они не высокие, клавиатура не будет работать). Отправить). Но это означает, что когда клавиатура пытается снизить уровень линий, она работает против резистора, и я не знаю, каковы последствия этого. И я не знаю, есть ли у самого 74LVC245 собственные подтягивающие/подтягивающие резисторы на входах.

Это хорошая идея? Если нет, то почему, и есть ли способ заставить это работать без необходимости создавать правильную схему драйвера с резисторами?

Техническое описание 74LVC245 находится здесь, для справки: http://www.adafruit.com/datasheets/sn74lvc245a.pdf

Если вас интересуют только выходы клавиатуры и они с открытым коллектором, то вы можете использовать подтягивающий резистор, подключенный к шине 3,3 В, и подключить выходы клавиатуры напрямую к входам микроконтроллера. Вам не понадобится 74LVC245.
Не по теме, но есть ли у вас ссылка на хорошую информацию о том, как работать с протоколом PS/2 с микро? Уже потратил на это кучу выходных...
@Камил: тонн. Прямо сейчас я просматриваю сайт kbdbabel.org , на котором даже есть исходный код конвертера протоколов для 8051. Также есть FAQ по клавиатуре ПК по адресу ilkerf.tripod.com/c64tower/F_Keyboard_FAQ.html .
@ m.Alin Bah, хотел бы я знать это раньше. Просто дважды проверьте: это абсолютно безопасно, учитывая, что мне не разрешено управлять входом микроконтроллера выше 3,6 В, а клавиатура работает на 5 В?
Я не хочу разочаровывать вас, но весь мой опыт работы с клавиатурами и мышами PS/2 требовал двунаправленного трафика для правильной инициализации устройств. Я надеюсь, вы докажете, что я ошибаюсь.
@DavidGiven При условии, что выходы клавиатуры действительно имеют открытый коллектор, и вы подключаете выход к шине 3,3 В через резистор 10 кОм, тогда это должно быть безопасно. Когда выход КБ неактивен, выход будет подтягиваться резистором на 3,3 В; когда выход kb активен, он подтянет выход к 0 В
Макет (без подключенного микроконтроллера!) показывает, что с подтягивающим резистором 12 кОм (самый близкий, который я смог найти) напряжение на выводах синхронизации и данных составляет немного более 4 В. Так что я подозреваю, что клавиатура не так уж открыта для коллекционеров, как могла бы быть. В любом случае, спасибо, это полезно; если вы напишите это как ответ, я проголосую за вас ...

Ответы (1)

Это всего лишь мысль за 0,02 доллара, и не обязательно ответ.

Сдвиг уровня двунаправленного сигнала с открытым коллектором иногда выполняется на шине I 2 C. Существуют специализированные микросхемы сдвига уровня для I 2 C, такие как PCA9306, которые вы можете попробовать адаптировать для PS/2. Есть еще один метод, в котором сдвиг уровня выполняется с помощью полевого МОП-транзистора, подключенного следующим образом.

введите описание изображения здесь

На этой картинке показано смещение уровня 2-х отдельных линий (очевидно). Дополнительные сведения см. в этой заметке о приложении от Philips (теперь NXP).

Да, и я бы хотел, чтобы я купил один! Учитывая, что я, похоже, решил работать с микроконтроллерами на 3,3 В в мире, где доморощенные разработки рассчитаны на 5 В ( кашель , Ардуино , каш ), это было бы разумным вложением.
@DavidGiven Есть много хороших, но не переносящих 5 В периферийных устройств. Вам бы тоже пришлось иметь дело с переключением уровней, если бы вы выбрали 5-вольтовый контроллер.
@DavidGiven Кстати, какую среду разработки вы используете для MSP430?
mspgcc и mspdebug, хотя текущий проект находится в сборке. Сборка MSP430 доставляет удовольствие (хотя и имеет свой обычный набор странностей).