Я безуспешно пытался найти хорошее описание серийного стандарта «TTL». Я понимаю, что линии последовательной передачи (TX) и приема (RX) бездействуют высоко (в VCC) и что они падают на землю при передаче бита. Таким образом, они инвертированы от нормы, где «1» является высоким, а «0» - низким.
Я не понимаю, кто отвечает за удержание линии высоко и как передается ноль. Отправитель управляет линией на высоком и низком уровне? Или получатель удерживает линию на высоком уровне, а отправитель тянет ее на низком уровне (открытый коллектор)?
microcontroller
serial
ttl
blalor
источник
источник
Ответы:
С последовательным TTL есть две однонаправленные линии передачи данных. Каждый управляется отправителем, как высоким, так и низким. Бит 0 представлен 0 В, а 1 бит - VCC.
Контакт приемника должен быть установлен на вход.
Таким образом, для микроконтроллера для отправки байта (8-N-1 без управления потоком) он может сделать что-то вроде этого:
(Этот код читает немного в обратном направлении, так как он изначально предназначался для инвертированного последовательного TTL)
Конечно, большинство MCU имеют аппаратные UART, которые делают все это для вас.
Вот что вы увидите в области видимости:
https://www.pololu.com/docs/0J25/4.a
Вот отличное видео от Ladyada, объясняющее сериал: http://www.adafruit.com/blog/2010/09/15/usb-serial-and-you-video-an-adafruit-after-school-special/
источник
Вы не говорите так много слов, но «холостой ход» предполагает, что вы имеете в виду UART. UART - это точка-точка, соединенная с линейными трансиверами, как вездесущий, но устаревший MAX232 (в настоящее время существуют гораздо лучшие решения). Линия между микроконтроллером и трансивером также будет короткой; если есть расстояние, которое будет преодолено, оно будет между трансиверами.
Выход контроллера двухтактный.
P-MOSFET обеспечит высокий уровень, а N-MOSFET - низкий уровень. Один из них должен быть активным, иначе уровень линии будет плавать и не определяться (или определяться нагрузкой в трансивере). Оба способны подавать / поглощать некоторый ток и будут тянуть линию к рельсам, поэтому форма сигнала будет почти идеальной.
Что было бы иначе, если бы это был действительно TTL, как в вашем вопросе (микроконтроллер - HCMOS). Выходы TTL имеют высокую асимметричность: они могут подавать только небольшой ток, обычно 0,4 мА. Ток погружения в порядке, при 8 мА. Низкий ток источника может быть проблемой, если линия имеет высокую емкость и высокую скорость. Низкий ток возбуждения означает, что емкость будет заряжаться только относительно медленно, а нарастающие фронты будут медленными, что на высокой скорости может вызвать серьезные искажения сигнала. TTL никогда не используется для этого.
Ваш вопрос также может относиться к многоточечной линии , где несколько устройств могут общаться. В этом случае вы не можете использовать двухтактный выход: если одно устройство будет приводить линию в высокое состояние, а другое - в низкое, у нас будет короткое замыкание. Многоточечные линии почти всегда используют подтягивающие резисторы для поддержания высокого уровня холостого хода. Тогда только низкий уровень требует управления линией, и вместо двухтактного выхода у нас будет открытый сток, только с N-MOSFET. Линия теперь также управляется асимметрично: подтягивающий резистор может выдавать только небольшой ток, в то время как понижающий полевой транзистор может быстро подвести линию на землю. Поэтому высокоскоростные многоточечные линии ограничивают нагрузочные резисторы. Примером является I2C.
источник