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 →


