1.3 Принципы построения последовательного порта
Последовательные порты могут использоваться для обмена информацией между микропроцессорами, а также между микропроцессорами и внешними устройствами, если у устройства наличествует такой же последовательный порт. Чаще всего под видом внешних устройств выступают отдельные микросхемы. В настоящее время широко используются две группы последовательных портов:
синхронные последовательные порты;
асинхронные последовательные порты.
1.3.1 Синхронные последовательные порты
Простейшим примером синхронного последовательного порта является SSI. Ему для передачи данных требуется всего один провод. Информация бегает по нему в виде байта (слова) или нескольких байтов (кадра). Вес каждого бита может быть не равен, поэтому вместе с сигналом кадровой синхронизации FS, передают ещё и битовую синхронизацию - то есть Serial Clock. Временные диаграммы SSI приведены на рисунке 2.4.
Рисунок 2.4 - Временные диаграммы сигналов при передаче одного кадра двоичной информации по последовательному интерфейсу SSI
Если мы подключаем устройство к системной шине, то необходимо позаботиться о том, чтобы оно не нарушало его работу. Значит нужно включить в состав последовательного порта - параллельный порт. Простейшая схема порта SSI приведена на рисунке 2.5.
Микропроцессор узнает о конце передачи при помощи отдельного триггера, при опросе содержимого которого микропроцессор определит, закончился ли прием кадра сигнала. Такие триггеры и их содержимое обычно называется флагами.
Универсальный последовательно-параллельный регистр D1 преобразует последовательный код SSI-шины в параллельный вид. После записи последнего бита, в триггер D7 меняет состояние (устанавливается флаг готовности).
Рисунок 2.5 - Упрощенная схема синхронного последовательного порта
После заполнения всего последовательного регистра этот потенциал поступает на вход логического элемента "2И" D2. В результате в триггер D7 записывается единица (устанавливается флаг). Этот флаг может быть обнаружен либо при опросе содержимого триггера D7 микропроцессором, либо этот сигнал может непосредственно вызвать прерывание работы программы микропроцессора по входу запроса прерывания INT.
Одновременно с установкой флага готовности принятый кадр из последовательного регистра копируется в параллельный регистр (регистр данных D6). В последовательный регистр D1 при этом записывается комбинация 00000001, которая используется в качестве счетчика битов, и начинается новый цикл приема данных по интерфейсу SSI. Микропроцессор должен за время приема следующего кадра успеть обнаружить окончание приема предыдущего и считать его. В противном случае предыдущая информация будет замещена новой.
Флаг готовности порта рассматривается как отдельный бит восьмиразрядного слова состояния порта и размещается обычно в соседнем по отношению к регистру данных адресу. Для этого в состав схемы введен дополнительный шинный формирователь D9 и заведен младший разряд шины адреса. Логические элементы D4 и D5 в зависимости от логического уровня на этом разряде подключают к шине данных либо регистр данных последовательного порта D6, либо триггер D7, содержащий его флаг готовности.
При обращении центрального процессора к регистру данных последовательного порта D6 вырабатывается сигнал чтения RD, который подается на вход CS шинного формирователя D8. Одновременно этот же сигнал обнуляет триггер D7, сбрасывая тем самым флаг готовности данных последовательного порта.
В случае порта SSI информация передается непрерывно, что требуется не всегда и иногда становится абсолютно ненужно. Поэтому микроконтроллеры оборудуются такими последовательными портами, которые передают информацию только в нужный момент. Один из таких последовательных портов - SPI. Временные диаграммы сигналов SPI-интерфейса приведены на рисунке 2.6.
Рисунок 2.6 - Временные диаграммы сигналов SPI-интерфейса
Главное отличие SPI от SSI заключается в том, что сигнал тактовой синхронизации передается только в момент действия импульса кадровой синхронизации. Активный уровень сигнала кадровой синхронизации длится до окончания передачи последнего бита в передаваемом кадре.
Помимо пакетной работы, у SPI есть одна отличная особенность, при помощи него мастер устройство может одновременно общаться с двумя и более подчиненными.Схема такого общения приведена на рисунке 2.7.
В схеме, приведенной на рисунке 2.7, сигналами SS - slave select (выбор ведомого) SS1 и SS2 микроконтроллер выбирает к какому устройству адресованы данные. В таком случае по линиям MOSI и SCLK передаются все данные, нет нужды разделять их.
Рисунок 2.7 - Подключение двух SPI-устройств
1.3.2 Асинхронные последовательные порты
Если заранее договориться о скорости передачи, то можно избавиться от лишней линии - линии синхросигнала, ведь она абсолютно не несет никакой полезной информации.
Для этого были внедрены стандартные скорости передачи, кратные скорости 1200 бит/с. Это значит что масштабировать это число можно в обе стороны. Для примера приведём стандартные скорости передачи последовательного порта: 2400, 4800, 600 и 300 бит/с.
Проблема синхронизации частоты и фазы генераторов синхросигнала на обоих концах решается введением в пакет специального бита, который обуславливает начало асинхронной передачи.
В состоянии покоя старт-бит обладает нулевым значением. Перед началом передачи каждого байта старт бит становится единицей и за ним следуют информационные биты. Временная диаграмма передаваемых сигналов при асинхронной передаче данных приведена на рисунке 2.8.
Рисунок 2.8 - Временная диаграмма передаваемых сигналов
при асинхронной передаче
Внутренний генератор синхроимпульсов приемника обнуляет счетчик- делитель опорной частоты в момент приема начала старт-бита.
Если во время, отведенное под стоп-бит, обнаружен уровень логического нуля, фиксируется ошибка стоп-бита.
Наиболее распространенный стандарт асинхронного порта RS-232. Временная диаграмма сигнала на выводе RxD этого порта приведена на рисунке 2.9.
Рисунок 2.9 - Временная диаграмма передаваемых сигналов интерфейса RS-232
Порт RS-232 использует уровни передачи ±10 В. Использование трехуровневых сигналов в этом порту позволяет контролировать обрыв линии передачи между передатчиком и приемником данного асинхронного последовательного порта. Существует ряд международных стандартов на асинхронные последовательные интерфейсы: RS-232C, RS-423A, RS-422A и RS-485. На рисунке 2.10 приведены схемы соединения приемников и передатчиков, а также показаны ограничения на длину линии (L) и максимальную скорость передачи данных (V) по этим интерфейсам.
Рисунок 2.10 - Схемы соединения приемников и передатчиков в различных стандартах асинхронных последовательных интерфейсов
Несимметричные линии интерфейсов RS-232C и RS-423A имеют самую низкую защищенность от синфазной помехи, хотя дифференциальный вход приемника RS-423A несколько смягчает ситуацию. Лучшие параметры имеет двухточечный интерфейс RS-422A и его магистральный (шинный) аналог RS-485, работающие на симметричных линиях связи. В них для передачи каждого сигнала используются дифференциальные сигналы с отдельной (витой) парой проводов.
Последовательный асинхронный порт, работающий по стандартам RS-232, RS-423A и RS-422A, позволяет соединять между собой только два устройства. Это связано с тем, что при параллельном соединении двух передатчиков их выходные каскады могут выйти из строя. В ряде случаев требуется объединить несколько устройств. Такая возможность реализована в интерфейсе RS-485.
На этом можно завершить обзор применяемых в микропроцессорной технике асинхронных последовательных портов. Теперь можно перейти непосредственно к частному случаю применения асинхронных портов в музыкальной технике - а именно к описанию стандарта MIDI.
|