Принципы обмена.
Последовательный обмен (ввод–вывод данных), когда байт данных передается по единственной линии бит за битом, является наиболее распространенным видом связи между контроллером и управляемым устройством. В микроконтроллерных системах используются стандартные протоколы последовательной передачи данных. В некоторых микроконтроллерах эти протоколы реализуются внутренними схемами, что позволяет упростить разработку различных приложений.
Асинхронный последовательный обмен.
Это наиболее распространенный способ последовательного обмена. При асинхронном обмене байт данных посылается как пакет, включающий дополнительные биты:
? старт–бит, который передается первым и фиксирует начало передачи данных (начало пакета). Этот бит используется приемником для синхронизации процесса чтения последующих бит данных;
? бит четности, который следуют за битами данных, предназначен для проверки правильности полученных данных;
? стоп–бит, который замыкает посылку, используется приемником для обработки конца передачи пакета. В тех случаях, когда приемнику необходимо больше времени для обработки принятого пакета, используются два стоп–бита.
Возможны два вида проверки правильности принятых данных:
? проверка на четность (
Even
), при которой общее количество единичных бит в посылке должно быть четным. Например, при передаче байта 1001 0110 устанавливается бит четности, равный 0;
? проверка на нечетность (
Odd
) означает, что число единиц в пакете данных, включая бит четности, должно быть нечетным. Например, при передаче того же байта устанавливается бит четности, равный 1, что делает общее количество единичных бит в посылке нечетным числом, равным пяти. Контроль на четность реализуется с помощью логического элемента ИСКЛЮЧАЮЩЕЕ ИЛИ (или операции
XOR
) над всеми битами принимаемого байта данных
Char
=
D
7
D
6
D
5
D
4
D
3
D
2
D
1
D
0
. Значение бита четности можно определить программно.
Для микроконтроллера 8051 такая процедура выполнятся с помощью следующей программы:
mov
R
(
NNN
), #
date
8
; Загрузка числа 8 в регистр
R
(
NNN
)
mov
A
, #
date
0
; Очистка регистра
A
P
_
Loop
:
; Адрес возврата после обработки каждого бита
xrl
A
,
Char
; Операция
XOR
на содержимым аккумулятора
; и операндом
Char
rlc
А
; Сдвиг влево А, чтобы перейти к следующему биту
djnz R(NNN), P_Loop
; Уменьшение регистра на 1; если не нуль,
; то переход по адресу метки
P_Loop
Программная реализация операции
XOR
над всеми битами байта
Char
показана на рис. 4.5.1. На каждом шаге алгоритма выполняется:
? операция
XOR
над текущим содержимым аккумулятора А и операндом
Char
с сохранением результата в аккумуляторе, т. е. А
?
Char
—> А;
? сдвиг содержимого аккумулятора А на один разряд влево через триггер переноса С.
На шаге 1 алгоритма после выполнения операции 0
?
Char
=
Char
с сохранением результата в аккумуляторе А и сдвига содержимого А на один разряд влево через триггер переноса С получаем значение бита 1 аккумулятора, равное X1 =
D
0.
На шаге 2 алгоритма после выполнения операции
XOR
над битами 1 аккумулятора и операнда с последующим сдвигом влево на один разряд содержимого А получаем значение бита 2 аккумулятора, равное Х2 =
D
0
?
D
1.
После шага 3 получим значение бита 3 аккумулятора ХЗ =
D
0
?
Dl
?
D
2 и т. д.
После восьмого сдвига в триггере переноса С оказывается бит контроля четности С = Х8 =
D
0
?
D
1
?
D
2
?
D
3
?
D
4
?
D
5
?
D
6
?
D
7 (рис. 4.5.1). В результате проверки количество единичных битов вместе с битом четности должно быть четным.
При проверке на нечетность полученный результат необходимо инвертировать.
Формат асинхронного пакета данных показан на рис. 4.5.2. Во многих случаях для асинхронного обмена используется формат 8–N–1, что означает передачу 8 бит данных, отсутствие бита четности и дополнительного стоп–бита.
При асинхронной последовательной связи широкое распространение получил протокол
RS
–232, который является международным стандартом, применяемым для связи компьютеров.
Асинхронный приемник находится в состоянии ожидания прихода старт–бита. При появлении на линии низкого уровня запускается делитель частоты и, если через половину периода уровень сохранился приемник начинает считывать данные.
На рис. 4.5.3 показан другой распространенный способ асинхронной последовательной передачи данных с использованием манчестерского кода (
Manchester
), при котором:
? передача каждого бита данных сопровождается (синхронизируется) импульсом;
? значение (0 или 1) бита определяется промежутком времени до следующего импульса и отличается от старт–бита.
Манчестерское кодирование используется в тех случаях, когда поток передаваемых данных может быть легко прерван, например, в пульте дистанционного управления телевизором для связи с помощью инфракрасного излучения.
Синхронный последовательный обмен.
При этом способе обмена передача данных сопровождается синхроимпульсами, которые используются приемником для стробирования поступающих бит данных.
Для синхронной последовательной передачи данных используются приведенные в табл.
4.5.1 протоколы
Microwire
и
SPI
.
Согласно этим протоколам каждое устройство адресуется индивидуально, хотя линии передачи данных и синхронизации могут быть общими для многих устройств (рис.
4.5.4, а).
В каждый момент времени только одно из подключенных к шине устройств может задавать режим работы шины, т. е. быть ведущим
(Master).
Если сигнал разрешения выборки устройства (
Chip
Select
—
CS
) не активен, то это устройство отключено от линии данных и синхронизации. На рис.
4.5.4, б
показана реализация протоколов
Microwire
или
SPI
с одной линией связи для обмена данными.
В этом случае микроконтроллер по завершении передачи данных отключает свой выходной каскад, после чего начинает принимать данные, поступающие от другого устройства (в другом направлении). Резистор
R
между выводами данных выполняет защитные функции: он ограничивает ток, если микроконтроллер и периферийное устройство одновременно перейдут в режим передачи данных.
Контроллеры последовательного ввода/вывода.
В состав современных 8–разрядных микроконтроллеров входят от одного до трех модулей контроллеров последовательного ввода/вывода. Функции такого модуля состоят в обеспечении интерфейса (связи):
? микроконтроллера с внешними по отношению к нему периферийными узлами (интегральными схемами) встраиваемой системы. Для этого используются интерфейсы
SPI, PC
и нестандартные протоколы обмена;
? микроконтроллера с локальной сетью в мультимикропроцессорных системах.
В простых системах (с числом микроконтроллеров до пяти) обычно используют сети на основе интерфейсов
PC,
RS–232C,
RS–485
с собственными сетевыми протоколами верхнего уровня; в более сложных системах — протокол
CAN
;
? всей встраиваемой микропроцессорной системы с системой управления верхнего уровня (промышленным или офисным компьютером, программируемым контроллером и др.). Для реализации этих функций наиболее часто используются интерфейсы
RS–232C и
RS
–485,
USB
.
Последовательные интерфейсы отличаются:
? способом синхронизации при передаче данных (синхронный или асинхронный способ, или режим);
? количеством бит в посылке при передаче байта полезной информации, или форматом кадра;
? временными параметрами сигналов
на линиях, к которым относятся уровни сигналов, положение фронтов при переключениях и др.;
? числом используемых линий
для передачи данных в последовательном коде (две линии для интерфейсов
I
2
С, RS–232C,
RS
–485,
CAN
или три — для
SPI
и некоторых нестандартных синхронных протоколов). Использование трех линий позволяет спроектировать контроллеры последовательного обмена, реализующие на аппаратном уровне несколько типов последовательных интерфейсов. При этом режим передачи и формат кадра поддерживаются на уровне логических сигналов, а требуемые уровни сигналов для каждого типа интерфейса получают с помощью специальных интегральных схем (приемопередатчиков, конверторов, трансиверов);
? режимом обмена информацией:
• симплексный
режим, в котором возможна лишь однонаправленная передача информации от одного абонента к другому (используется однонаправленный буфер приемника или передатчика информации);
• полудуплексный
режим, в котором возможен только прием или только передача данных между двумя абонентами (используются двунаправленные буферы с переключением на прием и передачу);
• дуплексный
режим, в котором возможен одновременный прием и передача данных между двумя абонентами (используются два канала с однонаправленными буферами приемника и передатчика информации);
• мультиплексный
режим, в котором возможен прием или передача данных между парой любых абонентов сети.
Модули контроллеров последовательных интерфейсов, входящие в состав 8–разрядных МК различных фирм производителей, приведены в табл. 4.5.2.
Микроконтроллер как ведомое устройство.
Один из наиболее интересных и полезных режимов работы микроконтроллера — функционирование в качестве ведомого (
Slave
), когда микроконтроллер подключается к другому процессору как периферийное устройство.
Микроконтроллер при подключении к другому контроллеру (или процессору) в качестве периферийного устройства переходит в режим ведомого МК. При этом некоторые выводы микроконтроллера выделяется для связи с шиной ведущего устройства (рис. 4.5.5). В этом режиме ведомый микроконтроллер представляет собой интеллектуальную специализированную схему (
Application
Specific
Integrated Circuit
—
ASIC)
, которая управляется ведущим устройством. Примером такого технического решения является персональный компьютер, в котором микроконтроллер
Intel
8042 используется в качестве интерфейса клавиатуры и выполняет некоторые другие функции (например, чтения–записи). Это позволяет ведущему процессору считывать и записывать данные, не прибегая к протоколу последовательного обмена с клавиатурой, который обеспечивается микроконтроллером.
Ведомый микроконтроллер может прерывать ведущее устройство, используя одну из своих линии ввода–вывода для подачи запроса прерывания. В некоторых применениях ведомые микроконтроллеры могут при определенных условиях работать в качестве ведущего устройства.
МК–сеть.
Под микроконтроллерной сетью понимают отдельную линию связи с множеством подключенных к ней устройств, которые могут инициировать передачу сообщений и посылать соответствующий отклик на полученное сообщение. В МК–сетях имеется ведущее (
Master
) устройство, которое может инициировать передачу данных. Устройства, которые отвечают на запросы, но не могут их инициировать, называются ведомыми (
Slaves
) устройствами. МК–сеть может иметь несколько ведущих устройств. В этом случае сетевой протокол требует включения схемы арбитража, которая позволит различным ведущим устройствам передавать данные, не нарушая других сообщений.