понедельник, 9 января 2017 г.

COM порт (RS-232) Асинхронный обмен данными (теория) ч.3

ПЕРЕДАЧА ДАННЫХ

   Как уже говорилось ранее RS-232 является последовательным интерфейсом. Это говорит о том, что данные передаются частями, одна за другой. Возникает вопрос, как компьютер будет понимать что вообще к нему приходит если данные бегут практически непрерывно? Так вот для того чтобы компьютер различал приходящие к нему последовательные данные, был разработан способ определения, где завершается передача одного кадра символов и начинается передача нового кадра.
    Реализовано это в виде стартового и стопового битов. (см. рис ниже). Из приведенной ниже схемы видно, что по умолчанию линия находится в режиме ожидания, в состоянии высокого логического уровня (логический нуль) от +3 до +12v. Затем покой прерывается в единичное состояние от -3 до -12v стартовым битом (по заднему фронту интервалов тактового генератора Clock line), для компьютера это означает, что следующие 8 бит (Data bits (word)) следующих за стартовым и есть та самая полезная передаваемая нами информация, которую необходимо поместить в буфер. После нее следует бит паритета (четности) (Parity bit)- для контроля целостности переданных данных. А за ним стоповый бит (Stop bit) (всегда 0) он то и говорит компьютеру, о завершении приема данного кадра и переходит в состояние ожидания следующего. Как то так.

    Тут необходимо отметить что для нормального обмена данными, порты компьютеров должны работать синхронно. 
    Другими словами, их нужно настроить таким образом, чтобы:
  • скорости их работы, 
  • количество битов передаваемого сигнала, 
  • количество битов чётности и 
  • количество стоповых бит 
    совпадали бы на обеих машинах.

Например COM порт поддерживает следующие скорости передачи данных:
Baud Rate: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Бод в секунду.  (Единица измерения названа в честь французского изобретателя Эмиля Бодо.) 

Количество бит данных (DataBits) может быть: 5, 6, 7, 8;

Битов четности (Paruty): 

  • нечетность (parity odd); 
  • четность (parity even); 
  • может не использоваться (parity none);
  • всегда единица (mark); 
  • или нуль (space).      
Стоповых бит может быть - 3 варианта:
  • 1;
  • 1,5;
  • 2; 
Таким образом, кадр (на рисунке выше), имеет следующую структуру и состоит из:
1-го Стартового бит, 8-ми Бит данных и 1-го Стоп-бита. всего 10 бит данных.

      По электронным уровням думаю, тоже все понятно, желтым цветом обозначены зоны невосприимчивости, зеленым обозначены - зоны сигнальных диапазонов. Отрицательный - соответствует - "1", а положительный - "0". 
    Напомню также, что в режиме ожидания, линия находится в состоянии высокого логического уровня, а в случае с COM портом это - "0".

    Рассмотренная схема передачи данных, а именно передача битов информации между стартовых и стоповых битов является признаком свойственным исключительно асинхронному режиму обмена данными. В отличие от асинхронного, синхронный обмен данными предполагает исключительно последовательную передачу битов (один за другим) без вспомогательных маркеров (стартовые, стоповые биты и биты паритета). Такого режима работы СОМ порт не поддерживает, да и не нужно ему это). Если сильно необходимо, мы всегда можем программно настроить синхронный обмен данными по асинхронным портам. 
Например так, как это реализовано здесь. Теперь буквально парочку слов об управлении потоком данных.



УПРАВЛЕНИЕ ПОТОКОМ ДАННЫХ

    Управление потоком данных позволяет контролировать целостность (или я бы сказал - "качество") передачи информации. Дело в том, что иногда возникают ситуации, когда в силу ряда обстоятельств устройство не в состоянии сиюминутно обработать некий объем принимаемых данных. Например передача идет, а приемный буфер устройства не велик и в настоящий момент заполнен полностью. Задача управления потоком в сложившейся ситуации 

предотвратить потерю данных, приостановив скажем передачу и возобновив ее тогда, когда приемный буфер устройства высвободится и будет вновь готов принимать данные. 

    В RS-232 предусматривается 2 взаимоисключающих способа, управления потоками данных:
  • аппаратный способ; 
  • программный способ;

    Аппаратное управление потоком

    
Аппаратное управление потоком реализуется с помощью сигналов RTS/CTS
Для передачи информации передающий компьютер взводит свой RTS и ожидает прихода сигнала на свой CTS, когда сигнал от абонента приходит, CTS передающего компьютера приходит в состояние True, после чего начинается передача данных, и выполняется до тех пор, пока этот сигнал не перейдет в состояние False.
    Уровень CTS опрашивается непосредственно перед началом передачи следующего байта, поэтому если байт, который уже начал передаваться и находится в динамике, (покинул TXD передатчика, но еще не достиг RXD приемника), все равно будет передан полностью вне зависимости от последующего значения состояния уровня CTSЕсли скажем буфер приемного устройства переполнен или по каким то другим причинам не успевает обработать поток байтов, он сбрасывает свой сигнал RTS, передача данных приостанавливается и возобновится вновь, когда в буфере приемного устройства появится место для следующей порции байтов. Сигнальный уровень будет автоматом вновь выставлен в True, связь будет восстановлена и передача байтов продолжена.
    Такого рода способ синхронизации, заложен в устройстве на аппаратном уровне и обеспечивает полноту и целостность данных.

    Плюсы: высокая скорость синхронизации;
    
    Минусы: нужны еще 2 провода (RTS, CTS) к трем имеющимся (GND, RXD и TXD).


Программное управление потоком

    Программный метод синхронизации предусматривает в своей работе использование двух символов с определенными значениями: Xon и Xoff.
Коды ASCII: 
  • символ Xon - 17
  • символ Xoff - 19
    При заполнении приемного буфера, принимающий компьютер посылает символ Xoff передающему компьютеру для прекращения потока байтов данных. Когда приемный буфер высвобождается и возможность приема данных появляется вновь, тогда посылается символ Xon и передающий компьютер продолжит отправку данных.   
    
   Плюсы: возможность осуществлять обмен данными всего по трем проводам (GND, RXD и TXD). (Не требуется дополнительных линий, как в случае с аппаратным управлением).

   Минусы: 
на медленных соединениях такого рода синхронизация может привести к значительному замедлению соединения.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.