Асинхронный последовательный обмен.

Последовательный ввод-вывод данных.

 

Наиболее распространенный вид связи между различными системами (или компьютерами) - это последовательный обмен. В этом случае байт данных передается по единственному проводу бит за битом с обеспечением синхро­низации между приемником и источником данных. Очевидное преимущество последовательной передачи данных состоит в том, что она требует неболь­шого количества линий связи.

Существует множество стандартных последовательных протоколов пере­дачи данных, которые применяются в микроконтроллерах. В некоторых мик­роконтроллерах эти протоколы реализуются внутренними схемами, разме­щенными на кристалле, что позволяет упростить разработку различных приложений.

 

 

Наиболее распространенная форма последовательной связи - асинхронный обмен, при котором байт данных посылается как пакет, включающий ин­формацию о начале и конце передачи данных, а также информацию для контроля ошибок.

Первым передается не бит данных, а старт-бит, указывающий на начало передачи данных (начало пакета). Этот бит используется приемником для синхронизации процесса чтения данных, которые следуют за старт-битом (младший бит данных идет первым). После битов данных может следовать бит четности (контрольный бит), который используется для проверки правиль­ности полученных данных. Существует два типа проверки на четность. Про­верка на нечетность (Odd) означает, что число единиц в пакете данных, включая бит четности, должно быть нечетным (например, 55h будет иметь бит четности равным 1, чтобы сделать число единичных битов равным пяти, то есть нечетным). Проверка на четность (Even), наоборот, означает, что чис­ло единичных битов должно быть четным (например, при передаче числа 55h бит четности будет равен 0).

В некоторых микроконтроллерах значение бита четности должно опреде­ляться программно, а затем помещаться в регистр.

За битом четности следует стоп-бит, который используется приемником для обработки конца передачи пакета.

Асинхронный пакет данных показан на рис. 2.27. Существует набор пара­метров, который должен быть известен при реализации обмена. Одним из таких параметров является число передаваемых бит данных, которое опреде­ляется типом приемного и передающего устройств. Пакет на рис. 2.27 содер­жит только 5 бит данных (такое число бит использовалось в телетайпах), но возможны пакеты длиной до 8 бит.

Наряду с битами четности («odd») или нечетности («even») возможны другие варианты контрольных битов: «no», «mark» и «space». «No» означает отсутствие бита четности в пакете. «mark» или «space» означает, что вместо бита четности всегда посылается 1 («mark») или 0 («space»), соответственно. Эти варианты контрольных битов используется достаточно редко - в тех слу­чаях, когда необходимо дать приемнику дополнительное время на обработку пакета.

 

Рис. 2.27 - Асинхронная последовательная передача данных.

 

Количество стоп-битов также может быть различным. Второй стоп-бит мо­жет вводиться для той же цели, что и контрольные биты «mark» и «space» - чтобы дать приемнику больше времени для обработки принятого пакета.

Практически все современные устройства используют для асинхронного обмена формат данных «8-N-1», что означает передачу 8 бит данных, отсут­ствие бита четности и один стоп-бит. Бит четности и дополнительный стоп-бит обычно не требуются для последовательной связи.

Наиболее популярный протокол асинхронной последовательной связи называется «RS-232», который в настоящее время является международным стандартом. Это очень старый стандарт, используемый для связи компьюте­ров.

Асинхронный приемник ждет прихода старт-бита, когда на линии уста­навливается низкий уровень. Через половину времени передачи одного бита (длительность этого времени задается синхросигналом) линия вновь опра­шивается. Если на линии все еще установлен низкий уровень сигнала, то приемник ждет один период и считывает данные (рис 2.29). Если же на ли­нии оказывается высокий уровень сигнала, то приемник считает, что про­изошла ошибка, и данные не принимаются. Этот метод используется как при аппаратной, так и при программной реализации асинхронного приема дан­ных. В программно реализованных приемниках используются программные циклы для отсчета задержек времени.

Другой распространенный метод асинхронной последовательной переда­чи данных - это использование кода типа «Манчестер» («manchester»). При этом методе передача каждого бита данных синхронизируется импульсом, а значение бита (0 или 1) определяется промежутком времени до следующего импульса (рис.2.29). После передачи заданного числа битов данных следует стоп-импульс, а затем прием данных прекращается. Особенность манчестер­ского кодирования заключается в том, что старт-бит качественно отличается от 1 или 0. Это позволяет приемнику определить, являются ли поступающие данные началом или серединой посланного пакета (в последнем случае дан­ные не будут приниматься до прихода старт-бита). Манчестерское кодирова­ние хорошо подходит для использования в случаях, когда поток передавае­мых данных может быть легко прерван. Поэтому такой метод передачи данных является основным для связи с помощью инфракрасного излучения, напри­мер, в пульте дистанционного управления телевизором.

 

Рис. 2.28 - Чтение данных при асинхронном последовательном обмене.

 

Рис. 2.29 - Последовательный обмен с манчестерским кодированием