Открыть сервис

Break-код

Break-код (англ. break code, также break sequence, break signal) — это специальный последовательный сигнал или кодовая комбинация, передаваемая по каналу связи, которая указывает принимающему устройству на необходимость прервать текущую операцию, сбросить состояние или перейти в режим ожидания команды. В отличие от обычных данных, break-код не является частью информационного потока и служит для управления процессом передачи или восстановления связи после ошибки.

История

Концепция break-кода возникла в ранних телетайпных и телеграфных системах XIX—XX веков. В механических телетайпах (например, моделях Teletype Model 15) для прерывания передачи использовался физический разрыв линии или подача постоянного тока (space signal) в течение времени, превышающего длительность передачи одного символа. Это позволяло оператору на одной станции «перебить» передачу другой, что было особенно важно в полудуплексных сетях.

С развитием асинхронной последовательной передачи данных (RS-232, UART) break-код стандартизировался. В спецификации RS-232 break-сигнал определяется как удержание линии передачи (TxD) в логическом нуле (пробел, space) на время, превышающее длительность передачи одного полного символа (старт-бит + 8 бит данных + стоп-бит). В 1960-х годах break-код стал использоваться в модемах для переключения между режимами команд и данных (например, в модемах Hayes Smartmodem, где последовательность «+++» с паузами служила escape-кодом, а break-сигнал — для сброса).

Техническая реализация

В последовательных интерфейсах

В асинхронной последовательной связи (UART, RS-232, RS-485) break-код формируется путём удержания линии передачи в состоянии «пробел» (логический 0) в течение времени, превышающего длительность одного символа. Обычно это время составляет от 1,5 до 2 длительностей символа (например, при скорости 9600 бод — около 1,5–2 мс). Приёмник распознаёт break, если после старт-бита линия остаётся в нуле дольше, чем длится передача всех битов данных и стоп-бита.

В протоколах передачи данных

В некоторых протоколах (например, в CAN-шине, LIN-шине) break-код используется как синхронизирующий сигнал:

  • LIN (Local Interconnect Network): break-сигнал — это удержание шины в доминантном состоянии (логический 0) на время не менее 13 битовых периодов. Он служит началом кадра и синхронизирует ведомые узлы.
  • CAN (Controller Area Network): break-код не используется в стандартном протоколе, но в некоторых реализациях (например, CAN FD) применяется для переключения режимов.

В программных эмуляциях

В современных операционных системах break-код может генерироваться программно через драйверы последовательных портов. Например, в Linux вызов ioctl(fd, TIOCSBRK, ...) устанавливает break-сигнал, а ioctl(fd, TIOCCBRK, ...) — снимает. В Windows используется функция SetCommBreak и ClearCommBreak.

Применение

Управление модемами и терминалами

В эпоху аналоговых модемов break-код использовался для переключения из режима данных в командный режим (escape-последовательность). Например, модемы Hayes, получившие широкое распространение в 1980-х, интерпретировали break-сигнал как команду сброса. В терминалах (VT100, xterm) break-код мог вызывать перезагрузку или сброс настроек.

Отладка и восстановление связи

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

В телекоммуникациях

В телефонных сетях (PSTN) break-сигнал (разрыв линии) использовался для отбоя вызова или переключения на оператора. В системах сигнализации (например, SS7) break-коды применяются для аварийного завершения сессии.

В автомобильных шинах

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

Классификация

По способу формирования break-коды делятся на:

  • Аппаратные — формируются физическим удержанием линии (UART, RS-232).
  • Программные — эмулируются драйвером или операционной системой.
  • Протокольные — встроены в формат кадра (LIN, некоторые реализации CAN).

По длительности:

  • Короткие — длительностью 1–2 символа (используются для сброса).
  • Длинные — более 2 символов (применяются для переключения режимов или синхронизации).

Примеры использования

  • Модемы Hayes: break-сигнал (удержание линии в нуле более 1,6 с) переводил модем в командный режим.
  • Микроконтроллеры STM32: для входа в режим DFU (Device Firmware Upgrade) через UART требуется подать break-сигнал на линию RX.
  • Шина LIN: break-сигнал длительностью 13 бит используется в каждом кадре для синхронизации.
  • Терминалы DEC VT100: break-код (последовательность Ctrl+Break) вызывал сброс терминала.

Интересные факты

  • В ранних телетайпах break-сигнал мог быть физическим разрывом линии, что приводило к искрению и износу контактов.
  • В протоколе LIN break-сигнал является единственным элементом, который не использует бит-стаффинг (вставку дополнительных битов), что упрощает его обнаружение.
  • В некоторых реализациях RS-232 break-код может быть ошибочно распознан как потеря сигнала (carrier loss), что приводило к сбоям в работе модемов.

Источники

  • Стандарт EIA RS-232-C (1969)
  • Спецификация LIN Consortium (LIN Protocol Specification, Rev. 2.2A)
  • Документация на микроконтроллеры STM32 (AN3155: USB DFU protocol)
  • Техническое руководство Hayes Smartmodem 1200 (1984)
  • «Serial Port Complete» by Jan Axelson (2007)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →