8-900-374-94-44
[email protected]
Slide Image
Меню

Rts cts: Что такое аппаратное управление потоком RTS/CTS?

Страничка эмбеддера » Сигналы квитирования (RTS, CTS итп) и RS232 вообще

У стандартного модемного интерфейса (rs232) кроме линий RxD и TxD есть еще куча разных, их называют “сигналами квитирования”. Я всегда путался в них — во всех этих RTS’ах, CTS’ах и прочих DSR’ах. В этой статье, я попробую систематизировать и кратко описать эти сигналы.

  

Итак, первое что стоит знать – интерфейс rs232 соединяет два типа устройств

  1. DTE (Data Terminal Equipment) – это обычно компьютер или заменяющее его устройство. Для простоты, дальше я DTE буду называть компьютер. На компьютер устанавливается разъем типа “папа”

  2. DCE (Data Circuit-terminating Equipment) – это обычно модем, или его заменяющее оборудование. Для простоты я буду называть DCE модемом. На DCE устанавливается разъем типа “мама”

Сигналы я буду описывать на примере 9-контактного разъема, так как он самый распространенный. Взглянем на него.

  

Как видно, контакты на разъемах перевернуты. Таким образом, прямой провод соединит контакты с одинаковыми номерами, тоесть, к примеру, контакту 2 на “папе” будет соответствовать контакт 2 на “маме”.

А вот и сводная табличка сигналов. Под названием вывода – номер его штырька в 9-контактном разъеме.

 

Сигналы, которыми управляет компьютерСигналы, которыми управляет модем
  

Передача данных компьютером, прием модемомTxD
3
  
  RxD
2
Передача данных модемом, прием компьютером
Компьютер готов передавать данные, либо компьютер разрешает модему передавать данныеRTS
7
  
  CTS
8
Модем разрешает компьютеру передавать данные
  DSR
6
Готовность модема к работе.
Готовность компьютера к работе.DTR
4
  
  RI
9
Индикатор звонка
  DCD
1
Индикатор наличия несущей. Устанавливается после соединения.
ЗемляSG
5
SG
5
Земля

 

Ну, и немного подробнее опишем каждый сигнал.

Я буду рассматривать сигналы обычных логических уровней – так, как они выглядят на выходах или входах микроконтроллера.

Сигналы в кабеле (после преобразователя уровня, к примеру max232) перевернуты и уровни сдвинуты. Так, логической 1 на выходе контроллера соответствуют уровни напряжения от –3 до –15 вольт, а логическому нулю – +3…+15 вольт.

 

TxD (Tramsmit Data)

Сразу скажу, что откуда в сокращении буква “x” – я не знаю.

По этой линии происходит передача данных от компьютера к модему. По умолчанию на ней — высокий уровень. Прием байта начинается по стартовому биту (а точнее, по переходу линии из высокого состояния в низкое). Стартовый бит всегда является логическим нулем.

Далее, передаются данные. Обычно это 8 бит, хотя бывает и по другому. Данные передаются младшим битом вперед и в прямой логике (нулю на ножке контроллера соответствует принятый нулевой бит).

После этого идет не обязательный бит четности (на картинке его нет). Бит четности дополняет количество единиц до четного (even) или нечетного (odd). К примеру, если в байте было 3 единицы и четность установлена как “even”, то бит четности будет равен 1, чтобы дополнить количество единиц до четырех – четного числа. Четность служит для проверки правильности передачи байта.

После бита четности идет один, один с половиной или два стоп-бита. Стоп бит используется, чтобы правильно отработался старт-бит (чтобы между байтами всегда был перепад из высокого уровня в низкий). Это бит всегда установлен в логическую 1.

К примеру, передача 0xEE будет выглядеть на линии UART’а так:

Параметры последовательного порта обычно пишут так – “9600, 8N1”. 9600 – это скорость передачи бит/с, 8 – количество бит данных  в посылке, N – бит четности не используется (может быть E или O, если используется), 1 – один стоп бит.

Заметьте, что количество передаваемых байт в секунду зависит не только от скорости передачи, но и от формата байта. К примеру, один байт в формате 8N1 занимает 10 бит (стартовый + 8 бит данных + стоповый), а в формате 8E1 уже 11бит – добавляется бит четности. Соответственно, байтовая скорость при битовой 9600бод станет 960байт/с в первом случае и 872.7байт/с во втором.

 

RxD (Receive Data)

Тоже самое, что и TxD, только хозяин этой линии – модем.

 

CTS (Clear To Send)

Рассмотрим такую ситуацию – компьютер отправляет модему большое количество данных на скорости 38400 бод, а модем подключен к другому модему на скорости 9600 бод.

Буфер внутри модема быстро заполняется, и, для того, чтобы он не переполнился, модем должен сообщить компьютеру “прекрати передачу!”. Для этого и служит линия CTS.

Активный уровень CTS – низкий. Тоесть, модем разрешает передачу данных, когда на ножке контроллера 0.

 

Пример из  руководства по LPC17xx.

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

 

RTS (Request To Send)

Вот с этой ножкой неразбериха. Проблема в том, что на месте этой ножки по стандарту могут быть два сигнала – RTS (номер цепи по стандарту — 105) и RTR (номер 133).

RTS (Ready To Send) – компьютер сигнализирует модему о том, что он сейчас будет передавать данные. Модем должен приготовиться и активировать CTS, после чего компьютер начинает передавать данные.

RTR (Ready To Receive) – компьютер сообщает модему о том, что он готов принимать данные. Это – аналог CTS, только со стороны компьютера.

Сейчас основная часть оборудования использует RTS как RTR! И даже аппаратное квитирование у LPC17xx, LPC2xxx, AT91SAM7 реализует именно механизм RTR.

Активный уровень как и у CTS – низкий.

Рассмотрим механизм подробнее на примере из руководства по LPC17xx

 

 

Сначала  — сигнал RTS – низкий, принимаются байты.

Как только буфер приемника заполнился N символами, RTS переходит в высокое состояние, что запрещает модему передавать данные. Но, как видно, модем не успел среагировать на RTS и передал еще один байт, поэтому очень важно оставлять в буфере запас для как минимум одного байта.

Далее, байты читаются, и, когда их количество в буфере становится равным M, RTS возвращается в низкое состояние (разрешает модему передавать данные).

Подробнее про RTS/CTS — https://en.wikipedia.org/wiki/RS-232_RTS/CTS#RTS.2FCTS_handshaking

 

DTR (Data Terminal Ready)

Сигнал от компьютера к модему, обозначающий, что компьютер включен и котов к работе с модемом. Активное состояние, как обычно, низкое. Тоесть, если на ножке контроллера 0, то модем должен подготовиться к подключению к линии. Если-же компьютер выставит на этой ножке логическую 1, то  модем обязан отключиться от линии (положить трубку, к примеру)

DTR также часто использовался как источник питания для внешнего малопотребляющего оборудования (к примеру, для мышки).

Подробнее: https://en.wikipedia.org/wiki/Data_Terminal_Ready

 

DSR (Data Set Ready)

Сигнал от модема к компьютеру. Говорит о том, что модем включен, проинициализирован, и готов к общению с компьютером. До тех пор, пока этот сигнал не активен нет смысла передавать что-либо в модем. Модем готов, когда на ножке контроллера логический 0.

 

RI (Ring Indicator)

Сигнал от модема к компьютеру. Как не сложно догадаться, этот сигнал дергается, когда на модем звонят. Скорость переключения сигнала – маленькая, порядка секунд, сигнал довольно точно повторяет огибающую звонка (огибающую того, что вы слышите, когда звонит аналоговый телефон).

На практике, этот сигнал используется редко. Обычно программа просто ждет сообщения “RING” от модема.

Логический 0 на ножке контроллера значит, что идет вызов.

подробнее: https://en.wikipedia.org/wiki/Ring_Indicator

 

DCD (Data Carrier Detect)

Сигнал от модема к компьютеру. Сообщает компьютеру о том, что модем подключен к удаленному модему. Эта ножка – очень важна, так как дает возможность определить спонтанные отключения.

Логический 0 означает, что связь между модемами активна.

подробнее: https://en.wikipedia.org/wiki/Data_Carrier_Detect

 

Теперь кратко про кабель

Теперь про кабель. Стандарт определяет максимальную емкость кабеля как 2.5нФ. Это, примерно, 25метров.

Однако, на практике, это ограничение игнорируют, так как целостность сигнала определяется не только емкостью но и скоростью. Вот максимальные длинны, используемые на практике для низких скоростей.

 

Скорость (бод)Длинна экранированного кабеля, метрыДлинна неэкранированного кабеля, метры
1101500300
3001200300
1200900150
2400600150
480015075
96007530

 

Стандарт

Если у вас остались какие-то вопросы, то лучше обратиться непосредственно к стандарту. как оказалось, найти его довольно сложно, поэтому выкладываю еще и у себя.

Все страницы — Юнионпедия

Все страницы — Юнионпедия

Новый! Скачать Юнионпедия на вашем Android™ устройстве!

Скачать

Более быстрый доступ, чем браузер!

Все страницы · Предыдущая (Rozenbergs) · Следующий (Rudolf Mayer)

Из:

RTS1RTS2RTSH
RTSIRTSJRTSP
RTTRTTIRTU
RTV (телеканал, Словакия)RTV SLORTV Slovenija
RTVERTVIRTVi
RTVideoRTVSRTVSLO
RTW 1RTW 2RTX
RTZRTZ1RTZ10
RTZ11RTZ2RTZ3
RTZ4RTZ5RTZ6
RTZ7RTZ8RTZ9
RTДRuRU
RU CancriRU CenterRU Cnc
RU MusicRU TVRU Рака
RU-27Ru-BoardRu-board
Ru-board. comRu-CenterRU-CENTER
RU-COMRu.BoardRu.board
RU.FMRU.FM (радио)RU.TV
Ru.wikipedia.orgRU3AXRuArts
RuízRUBRubacer
RubatoRubén AmorínRubén Ayala
Rubén BarajaRubén BentancourtRubén Blades Bellido de Luna
Rubén BlancoRubén BottaRubén Castro
Rubén da SilvaRubén Da SilvaRubén de la Red
Rubén GalvánRubén García SantosRubén González
Rubén González Rocha
Rubén Héctor SosaRubén José Suñé
Rubén Marcelo GómezRubén Marino NavarroRubén Miño
Rubén MoránRubén Olivera da RosaRubén Omar Romano
Rubén Omar Romano CachíaRubén Oscar GlaríaRubén Oscar Glaria
Rubén Oscar PagnaniniRubén Oswaldo DíazRubén Pagnanini
Rubén PardoRubén PazRubén Pérez del Mármol
Rubén Plaza MolinaRubén RochinaRubber Soul
Rubber Soul (band)Rubber Soul (группа)Rubbernecking
Rube LautenschlagerRubelRubella Ballet
Rubem FonsecaRubempréRuben Gunawan
Ruben Loftus-CheekRuben Yttergård JenssenRuben Zadkovich
Rubens BarrichelloRubens de Falco da CostaRubens Fernando Moedim
Rubens Josué da CostaRubens MinelliRubens Osvaldo Jesús Udaquiola Laport
Rubens SambuezaRubensteinRubeola
Rubeola maritimaRubeosaurusRubettes
RubiaRubia cretaceaRubia palustris
Rubia tinctorumRubiaceaeRubicon
Rubicon GroupRubicon Race TeamRubiconia
RubidgeaRubidgea atroxRubieae
Rubik’s 360RubinerRubinius
Rubinoboletus ballouiRubinoboletus ballouiiRubinoboletus rubinus
Rubio RubinRubiscoRubius
RubkowRublacklist. net
Ruboard
RuBoardRubroboletus legaliaeRubroboletus pulcherrimus
Rubroboletus rhodoxanthusRubusRubus (subgenus)
Rubus abruptusRubus aestivalisRubus aetneus
Rubus albescensRubus appenninusRubus arcticus
Rubus armeniacusRubus avellanifoliusRubus ×loganobaccus
Rubus baronicusRubus bellidiflorusRubus bujedanus
Rubus caesiusRubus canduligerRubus castellanus
Rubus ceratifoliusRubus chamaemorusRubus chinensis
Rubus cocullotinusRubus comintanusRubus commersonii
Rubus communisRubus coronariusRubus crispulus
Rubus cyrenaicaeRubus debilisRubus edouardii
Rubus ellipticusRubus erectusRubus ernestibolli
Rubus exaltatusRubus fastigiatusRubus franciscanus
Rubus fructicosusRubus fruticosusRubus gerundensis
Rubus glandulosopunctatusRubus glaucusRubus hawaiensis
Rubus helleriRubus hispanicusRubus holmiensis
Rubus hopingensisRubus idaeusRubus jamaicensis
Rubus karstianusRubus laciniatusRubus legionensis
Rubus lejeuneiRubus lindleianusRubus longipetiolatus
Rubus macropetalusRubus menziesiiRubus mingendensis
Rubus minusculusRubus nelliaeRubus nessensis
Rubus neveusRubus niveusRubus oculus-junonis
Rubus odoratusRubus panormitanus Rubus phoenicolasius
Rubus plicatusRubus polymorphusRubus procerus
Rubus ribifoliusRubus rosifoliusRubus rosulentus
Rubus rusticanusRubus saxatilisRubus siculus
Rubus sinusifoliusRubus sirbenusRubus spectabilis
Rubus spicifoliusRubus stenopetalusRubus subg. Rubus
Rubus subgen. AnoplobatusRubus subgen. RubusRubus tagallus
Rubus taiwanianusRubus teutobergensisRubus ulmifolius
Rubus ursinusRubus vadalisRubus valentinus
Rubus vulgarisRubyRuby Bhatia
Ruby BlueRuby JerinsRuby on Rails
Ruby on railsRuby TuesdayRubycon
RubyGemsRubyMineRUC
RuCenterRucervus duvauceliiRucervus eldii
Rucervus schomburgkiRUCOMRud Immanuel Langgaard
RuDaRudaRudas gyógyfürdő
Rudé právoRudé PrávoRudbeckia
Rudbeckia hirtaRudbeckia purpureaRude
Rude AwakeningRude Awakening (DVD)Rude Boy
Rude boysRude BoysRudebox
RudelRudgeRudi Assauer
Rudi BommerRudi GarciaRudi Gutendorf
Rudi KargusRudi SchurickeRudi Völler
Rudi ZygadloRudiger VoglerRudimental
Rudimentary PeniRudisiricius
Rudisiricius belli
Rudnei da RosaRudolf August Wilhelm Bockelmann LouisRudolf Brunnenmeier
Rudolf CaracciolaRudolf Franz Joseph BingRudolf Gutendorf
Rudolf Heinrich GreinzRudolf KampfRudolf Kämpf
Rudolf Kämpf Porzellan fabrik GmbH, GrünlasRudolf KellerRudolf Kirchschläger
Rudolf Klein-RoggeRudolf KnerRudolf Leuckart

Необходимо ли управление потоком UART (RTS/CTS) для правильной работы беспроводных модулей?

Laird настоятельно рекомендует разработчикам использовать RTS/CTS для управления потоком в своих приложениях.

При обращении к CTS/RTS:

 

 

Модуль UART CTS является входным модулем

RTS является выходным 3,3 В или выше

 

Модуль UART CTS является входом и подключен к RTS хоста, который, следовательно, является выходом.

Хост может сообщить модулю, что он готов принимать данные через UART, управляя его выходом RTS, который сигнализирует модулю через вход CTS модуля. Таким образом, модуль не будет отправлять данные, пока не будет подтверждено CTS. По сути, подтвержденный вывод RTS сообщает узлу, что отправка данных узлом безопасна.

Хост может остановить модуль, отправляющий ему данные, установив высокий уровень RTS, который, в свою очередь, установит высокий уровень CTS модуля. Точно так же модуль может остановить отправку данных хостом, приняв высокий уровень RTS, что приведет к высокому уровню CTS хоста.

Рис. 1: Рекомендуемый минимум проводки UART при правильном использовании CTS/RTS (рекомендуется).

 

 

Отключение управления потоком

Однако, если приложение требует пропускной способности в эфире, которая ниже, чем пропускная способность настройки UART (скорость передачи, контроль четности и стоповые биты) или риск потенциальной потери данных или сброс модуля принимается разработчиком, тогда входная линия CTS может быть подключена к 0v/Gnd, а выходная линия RTS может быть плавающей, как показано на рисунке 2.

9.0003

Рисунок 2: Минимальная проводка UART без правильного использования управления потоком CTS/RTS (не рекомендуется).

Прежде чем отказываться от правильного использования CTS/RTS, обратите внимание на следующее

Проблема №1: модуль не отвечает на команды

Модуль UART_CTS является входом, и не рекомендуется оставлять его плавающим. Если он непреднамеренно окажется на уровне 3,3 В из-за конструкции схемы, модуль будет считать, что хост не готов к приему данных. Хост отправляет ему команду, например «at», но не получает ответа, поскольку модуль определяет, что он не может отправить, потому что хост не готов получать данные от модуля. Это обычная проблема для разработчиков, которые пропускают использование комплекта разработчика и подключаются напрямую к модулю, используя только UART TX, RX и GND.

Решения

1. Правильно используйте управление потоком (настоятельно рекомендуется), см. рис. 1.

2. Привяжите модуль UART CTS к 0 В, чтобы модуль всегда предполагал, что хост готов к приему данных (не рекомендуется) , см. рис. 2. 

Проблема № 2: переполнение модуля, вызывающее потерю данных

В отличие от проводного соединения, радиосоединение более подвержено ухудшению качества из-за увеличения радиуса действия и помех. В какой-то момент пропускная способность по воздуху может упасть ниже пропускной способности UART (обратите внимание, что максимальная пропускная способность при отсутствии четности и настроенном одном стоповом бите составляет 80% от скорости передачи), и в этот момент модуль включит свои руки. эфир и сказать: «Подождите, прекратите отправлять данные, чтобы я мог наверстать упущенное». Он делает это, поднимая свой RTS (выход) на высокий уровень. Хост видит, что его CTS (вход) следует его примеру, и прекращает отправку данных. Давайте рассмотрим, что происходит, когда CTS/RTS используется неправильно, а модуль UART_CTS привязан к Gnd или 0V. Когда это происходит, модуль переполняется данными от хоста, вскидывает руки в воздух и говорит «хватит», но модуль UART_RTS никуда не уходит, поэтому хост продолжает отправлять, не обращая внимания на бедственное положение модуля. В какой-то момент может произойти переполнение, что может привести к потере данных или, возможно, даже к сбою модуля.

Решения

1. Используйте надлежащее управление потоком CTS/RTS (настоятельно рекомендуется, см. рис. 1.

2. Смиритесь с тем, что вы можете потерять данные.

Вопрос № 3: А как насчет хоста? также ожидает правильного использования CTS/RTS, у него также могут возникнуть проблемы, когда дело доходит до отправки данных в модуль, поскольку ему может не быть сообщено, что модуль готов принять его данные. 0 В, прежде чем он будет обмениваться данными.Однако перевод хоста CTS в 0 В или привязка хоста CTS к RTS приводит к тем же потенциальным проблемам, которые модуль видит в проблемах выше.0003

Решения

1. Привяжите хост CTS к 0В.

2. Правильно используйте управление потоком CTS/RTS (настоятельно рекомендуется), см. рис. 1.

Дополнительные линии UART

может создать функциональность, используя любой доступный запасной GPIO и используя команды smartBASIC / AT для обеспечения поведения по мере необходимости, пожалуйста, обратитесь к документации по соответствующему модулю для получения дополнительной информации.

Рисунок 3: Полная проводка UART, включая дополнительные функции.

Категории

  • Модули беспроводной связи
  • Модули Bluetooth

Повышение производительности WLAN с помощью RTS/CTS

Джим Гейер

13 августа 2002 г.

90 002 Узнайте, как работает дополнительная функция Request to Send/Clear to Send стандарта 802.11, и понять, когда и почему вы должны его использовать.

В качестве дополнительной функции стандарт 802.11 включает функцию RTS/CTS (Request to Send/Clear to Send) для управления доступом станции к среде. Как правило, только более дорогие беспроводные локальные сети высокого класса предлагают RTS/CTS в картах радиосетевого интерфейса (NIC) и точках доступа — вы не найдете этого в недорогих продуктах для дома или SOHO. Благодаря правильному использованию RTS/CTS вы можете точно настроить работу вашей беспроводной локальной сети в зависимости от операционной среды.

RTS/CTS в действии

Если вы включите RTS/CTS на определенной станции, она будет воздерживаться от отправки кадра данных до тех пор, пока станция не завершит подтверждение связи RTS/CTS с другой станцией, например с точкой доступа. Станция инициирует процесс, посылая кадр RTS. Точка доступа получает RTS и отвечает кадром CTS. Станция должна получить кадр CTS перед отправкой кадра данных. CTS также содержит значение времени, которое предупреждает другие станции о воздержании от доступа к среде, пока станция, инициирующая RTS, передает свои данные.

Квитирование RTS/CTS обеспечивает положительный контроль над использованием общей среды. Основной причиной внедрения RTS/CTS является минимизация коллизий между скрытыми станциями. Это происходит, когда пользователи и точки доступа разбросаны по всему объекту, и вы обнаруживаете относительно большое количество повторных передач, происходящих в беспроводной локальной сети.

Представьте, что есть два конечных пользователя 802.11 (станция A и станция B) и одна точка доступа. Станция A и станция B не слышат друг друга из-за высокого затухания (например, из-за большого радиуса действия), но обе они могут обмениваться данными с одной и той же точкой доступа. Из-за этой ситуации Станция А может начать передачу кадра, не заметив, что Станция В в данный момент ведет передачу (или наоборот). Это, скорее всего, вызовет коллизию между станцией A и станцией B в точке доступа. В результате и станции A, и станции B потребуется повторно передать свои соответствующие пакеты, что приведет к увеличению служебной информации и снижению пропускной способности.

Если Станция A или Станция B активируют RTS/CTS, коллизия не произойдет. Перед передачей станция B должна отправить RTS и получить CTS от точки доступа. Значение синхронизации в CTS (которое также получает станция A) заставит станцию ​​A задержаться на время, достаточное для того, чтобы станция B могла передать кадр. Таким образом, использование RTS/CTS уменьшает коллизии и повышает производительность сети при наличии скрытых станций.

Связанные статьи

  • Повышение мощности
  • Превышение потери сигнала в сетях WLAN
  • Ограничения EIRP для сетей WLAN 802.11 кадров) и сокращение накладных расходов (т. е. меньшее количество повторных передач). Если у вас нет скрытых узлов, то использование RTS/CTS только увеличит количество накладных расходов, что снизит пропускную способность. Небольшая проблема со скрытым узлом также может привести к снижению производительности при реализации RTS/CTS. В этом случае дополнительные кадры RTS/CTS обходятся дороже с точки зрения накладных расходов, чем то, что вы получаете за счет сокращения повторных передач. Таким образом, будьте осторожны при реализации RTS/CTS.

    Советы по внедрению RTS/CTS

    Один из лучших способов определить, следует ли вам активировать RTS/CTS, — это отслеживать беспроводную локальную сеть на предмет коллизий. Если вы обнаружите большое количество коллизий, а пользователи находятся относительно далеко друг от друга и, вероятно, вне диапазона, попробуйте включить RTS/CTS на соответствующих пользовательских беспроводных сетевых адаптерах. Вы можете активировать эту функцию, щелкнув «включить RTS/CTS» где-нибудь на экранах настройки пользователя. В этом случае вам не нужно включать RTS/CTS на точке доступа. После получения кадра RTS от сетевой платы радиомодуля пользователя точка доступа всегда будет отвечать кадром CTS.

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

    После активации RTS/CTS проверьте, уменьшилось ли количество коллизий и улучшилась ли результирующая пропускная способность. Поскольку RTS/CTS вносит дополнительные затраты, вы должны отключить его, если обнаружите падение пропускной способности, даже если у вас меньше коллизий. В конце концов, цель состоит в том, чтобы улучшить производительность.

    Способ включения RTS/CTS на точках доступа отличается от способа включения сетевых адаптеров. Для точек доступа вы включаете RTS/CTS, устанавливая определенный порог размера пакета (0–2347 байт) в пользовательском интерфейсе настройки.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *