Рассматривается важный вопрос применения микропроцессорных систем -- организация последовательного обмена данными. Самые основы.
0. Передача данных -- базовые понятия.
- три аспекта организации передачи данных: как передавать, что передавать, когда передавать,
- спецификация всех этих аспектов -- интерфейс передачи данных (USB, PCI, MODBUS и т.д.),
- как передавать -- физический уровень: рассматривается вопрос с кабелем, через какую среду передавать, какие физические параметры информационных сигналов, как представляются двоичные данные,
- что передавать -- уровень представления: как представить данные, чтобы, приемник и передатчик данных понимали друг-друга (протокол),
- когда передавать -- сеансовый уровень: как гарантировать, что отправленная посылка будет обработана приемником (не будет ли он занят).
- организацию интерфейсов рассматривает модель OSI
http://ru.wikipedia.org/wiki/Сетевая_модель_OSI
1. Физический уровень -- сигналы.
- физический уровень по организации пересылки: последовательные интерфейсы (передача побитная), параллельные интерфейсы (за один такт -- несколько бит),
- физический уровень по синхронизации : синхронный, асинхронный,
- физический уровень по средам: оптические интерфейсы, электрические потенциальные, электрические дифференциальные,
- в промышленных системах используются обычно дифференциальные интерфейсы (витая пара),
- главная цель: борьба с индуктивными помехами,
- классический потенциальный интерфейс: RS-232 (COM-порт компьютеров), логический 0 -- напряжение -12 В, логическая 1 -- напряжение +12 В,
- классический токовый интерфейс: RS-485, логический 0 -- ток -12 В, логическая 1 -- напряжение +12 В,
- формирование сигналов в RS-232 и RS-485:
- проблемы потенциальных интерфейсов: влияние длины провода, влияние разности потенциалов земли, влияние помех на сигнальный провод,
- формирователь сигналов интерфейса RS-232 -- микросхема MAX232,
- дифференциальные интерфейсы -- логический 0 и 1 кодируются токами разных направлений,
- для передачи данных используются два провода A и B, между которыми измеряется напряжение (а не между сигнальным и землей как в RS-232)
- независимость от разности потенциалов земли, компенсация действия синфазной помехи,
- логический 1 - определяется как разность между A и B
- формирователь сигналов интерфейса RS-232 -- MAX485
- классический RS-485 -- полудуплексный интерфейс, прием и передача происходят по одному физическому каналу и разделены по времени,
- возможность подключения множества устройств в одну шину.
- чуть более пробно про RS-232/RS-485 (помимо википедии)
http://www.softelectro.ru/rs232.html
http://www.softelectro.ru/rs485.html
http://www.mayak-bit.narod.ru/rs485.html
2. Передача данных -- как передать байт.
- физический уровень также рассматривает как побитно передать посылку из нескольких бит -- байт,
- байты должны быть отделены друг от друга во время передачи, чтобы была возможность для их обработки,
- биты передаются последовательно друг за другом с фиксированной скоростью,
- ключевой параметр $v$ -- скорость передачи данных в бит/сек,
- стартовый бит -- всегда равен 0, служит для индикации начала передачи байта и синхронизации приемника с передатчиком,
- далее следуют последовательно информационные биты начиная с младшего и заканчивая старшим,
- посылка заканчивается одним или двумя стоповыми битами,
- как это выглядит на осциллограмме:
- битстаффинг (bit stuffing) -- когда скорость очень большая, то синхронизироваться нужно по каждому биту, если много бит подряд имеют одинаковое значение -- вставить среди них инверсный,
2. Протоколы и программная организация интерфейсов.
- протокол (логическая организация передаваемых данных) решает множество задач: как передать данные к конкретному устройству, как осуществить контроль целостности данных, как закодировать сами данные.
- адресация устройств: если множество устройств находится в одной сети, то каждому присвоен уникальный адрес,
- адрес передается в посылке к устройству,
- контроль целостности: полезные данные в посылке сворачиваются короткое число, которое является функцией от данных и передается вместе со всеми данным (т.н. контроль CRC),
- приемник вычисляет функцию контроля CRC еще раз по полученным данным и сравнивает с переданным CRC -- если не совпадает, то ошибка передачи данных,
- по CRC можно определить наличие ошибки и исправить однократную,
- кодирование информации: последовательность параметров к команде, длина (в байтах) каждого параметра, как представлена информация -- в бинарном виде или ASCII и т.д.
- временная организация передачи данных: когда устройство обработало принятые данные и не занято критическими действиями и готово принимать новые данные,
- понятие подключения: возникает виртуальный канал передачи данных и устройство всегда готово принимать данные от другого устройства, которое подключилось к нему,
- таймаут -- время ожидание ответа если устройство аварийно отключилось от сети или произошла ошибка передачи данных.
3. Что такое UART
- UART -- периферийное устройство микроконтроллера для организации последовательного интерфейса,
- UART позволяет передавать и принимать данные в последовательном виде,
- существует два регистра регистр данных передачи и регистр приема данных,
- в AVR регистры приема и передачи совмещены в один регистр -- UDR,
- также для событий завершения приема и передачи существуют специальные флаги в управляющих регистрах UART,
- в AVR регистром состояния UART является UCSRnA,
- если данные записываются в регистр передачи, то включается формирователь стартового бита на выводе TX, далее данные сдвигаются начиная с младшего бита с заданной скоростью обмена $v$, после передачи данных и формирования стоповых битов устанавливается флаг окончания передачи,
- если на вывод RX зафиксирован спад сигнала, то включается схема синхронизации, которая ожидает 1/2 времени передачи одного бита $\tau = 1/v$, если после этого сигнал на RX по прежнему 0, то далее через интервалы времени передачи $\tau$ состояние вывода последовательно записывается в регистр,
- функции передачи и приема можно выключить соответствующими битами,
- UART может быть источником прерываний по окончанию приема или передачи одного байта,
- еще UART может работать в синхронном режиме передачи последовательных данных (с формированием синхронизирующих импульсов) -- но это обычно не используется,
4. Использование UART
- для использования UART необходима кварцевая стабилизация частоты и схема преобразования интерфейса (PHY),
- для работы UART необходимо настроить делитель частоты (baud rate generator), который формирует импульсы сдвига выходных данных и опроса входа в соответствии со скоростью передачи данных $v$,
- в AVR коэффициент деления делителя частоты задается регистром -- UBRRn,
- возможно два варианта обработки принимаемых данных: пуллинг (polling) -- постоянный опрос флага окончания приема, прерывания -- обработка прерываний по окончанию приема,
- предпочтительным является использование прерываний, потому что только так возможен прием данных на больших скоростях,
- обработчик прерывания берет байт из регистра приема UART и помещает его в буфер,
- в основном коде программы проверяется сколько данных в приемном буфере, если их достаточно в соответствии с протоколом -- принятые данные анализируются,
- обычно доступ UART абстрагирован через библиотеку функции, например в CodeVision для записи и чтения данных используются функции putchar() и getchar().
- еще немного про UART AVR тут
http://www.pcports.ru/articles/avr5.php
Видео с сайта "Чип и Дип" по теме передачи данных:
Последовательный интерфейс
Интерфейс "Токовая петля"
Интерфейс RS-232
Комментариев нет:
Отправить комментарий