Обзор последовательного порта

Что такое последовательная передача?

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

Как следует из названия, последовательный порт отправляет и получает байты информации последовательным способом — один бит за один раз. Эти байты передаются с помощью или двоичного формата или текста (ASCII) формат.

Для многих приложений последовательного порта можно связаться с инструментом без детального знания того, как последовательный порт работает. Коммуникация устанавливается через объект последовательного порта, который вы создаете в рабочей области MATLAB®.

Если ваше приложение является прямым, или если вы уже знакомы с упомянутыми выше темами, вы можете хотеть, для начала Создают Объект последовательного порта.

Стандарт последовательного порта

За эти годы несколько стандартов последовательного порта для соединения компьютеров к периферийным устройствам были разработаны. Эти стандарты включают RS-232, RS-422 и RS-485 — все из которых поддерживаются serialport объект. Наиболее широко используемый стандарт является RS-232.

Текущая версия этого стандарта определяется TIA/EIA-232C, который публикуется Ассоциацией Телекоммуникационной отрасли. Однако термин “RS-232” все еще находится в популярном употреблении и используется здесь, чтобы относиться к последовательному порту, который следует стандарту TIA/EIA-232. RS-232 задает эти характеристики последовательного порта:

  • Максимальный битрейт и длина кабеля

  • Имена, электрические характеристики и функции сигналов

  • Механические связи и назначения контактов

Первичная коммуникация использует три контакта: контакт Transmit Data, контакт Recieve Data и Заземляющий контакт. Другие контакты доступны для управления потоком данных, но не требуются.

Примечание

Это руководство принимает, что вы используете стандарт RS-232. Обратитесь к своей документации устройства, чтобы видеть, какой интерфейсный стандарт можно использовать.

Поддерживаемые платформы

Интерфейс последовательного порта MATLAB поддерживается на:

  • Linux® 64-bit

  • macOS 64-bit

  • Microsoft® Windows® 64-bit

Соединение двух устройств последовательным кабелем

Стандарт RS-232 и RS-485 задает эти два устройства, соединенные последовательным кабелем как оборудование терминала (DTE) и Data Circuit-Terminating Equipment (DCE). Эта терминология отражает источник RS-232 как стандарт для связи между компьютерным терминалом и модемом.

В этом руководстве ваш компьютер рассматривается DTE, в то время как периферийные устройства, такие как модемы и принтеры рассматриваются DCEs. Обратите внимание на то, что много научных приборов функционируют как DTEs.

Поскольку RS-232 в основном включает соединение DTE к DCE, определения назначения контактов задают сквозные кабельные соединения, где контакт 1 соединяется с контактом 1, контакт 2 соединяется с контактом 2 и так далее. DTE к DCE последовательная связь с помощью контакта данных о передаче (TD) и контакта приема данных (RD) показывают ниже. Обратитесь к Сигналам Последовательного порта и Назначениям контактов для получения дополнительной информации о контактах последовательного порта.

Если вы соединяете два DTEs или два DCEs использование прямого последовательного кабеля, то контакт TD на каждом устройстве соединяется с другим, и контакт RD на каждом устройстве соединяется с другим. Поэтому, чтобы соединиться два как устройства, необходимо использовать нуль-модемный кабель. Как показано ниже, нуль-модемные кабели пересекают передачу и получают линии в кабеле.

Примечание

Можно соединить несколько RS-422 или RS 485 устройств к последовательному порту. Если вы имеете RS-232/RS-485 адаптер, то можно использовать serialport объект с этими устройствами.

Сигналы последовательного порта и назначения контактов

Последовательные порты состоят из двух типов сигнала: сигналы данных и управляющие сигналы. Чтобы поддержать эти типы сигнала, а также сигнальную землю, стандарт RS-232 задает 25-контактную связь. Однако большинство PC и платформ UNIX® используют 9-контактную связь. На самом деле только три контакта требуются для коммуникаций последовательного порта: один для получения данных, один для передачи данных, и один для сигнальной земли.

Следующий рисунок показывает схему назначения контактов девяти штырьковых разъемов на DTE.

Эта таблица описывает контакты и сигналы, сопоставленные с девятиконтактным коннектором. Обратитесь к RS-232 или стандарту RS-485 для описания сигналов и назначений контактов для 25-контактного коннектора.

Контакт последовательного порта и присвоения сигнала

Контакт

Метка

Имя сигнала

Тип сигнала

1

CD

Обнаружение несущей

Управление

2

RD

Полученные данные

Данные

3

TD

Transmitted Data

Данные

4

DTR

DataTerminalReady

Управление

5

GND

Signal Ground

Земля

6

DSR

Data Set Ready

Управление

7

RTS

RequestToSend

Управление

8

CTS

Clear to Send

Управление

9

RI

Ring Indicator

Управление

Термин “набор данных” синонимичен с “модемом” или “устройством”, в то время как термин “терминал” синонимичен с “компьютером”.

Примечание

Контакт последовательного порта и присвоения сигнала относительно DTE. Например, данные передаются от контакта TD DTE к контакту RD DCE.

Состояния сигнала

Сигналы могут быть или в активном состоянии или в неактивном состоянии. Активное состояние соответствует двоичному значению 1, в то время как неактивное состояние соответствует двоичному значению 0. Активное состояние сигнала часто описывается как логическая 1, вкл, истина, или метка. Неактивное состояние сигнала часто описывается как логический 0, выкл, ложь, или пробел.

Для сигналов данных, “на” состоянии происходит, когда полученное напряжение сигнала меньше-3 вольт, в то время как “от” состояния происходит для больше 3 вольт напряжений. Для управляющих сигналов, “на” состоянии происходит, когда полученное напряжение сигнала больше 3 вольт, в то время как “от” состояния происходит для меньше-3 вольт напряжений. Напряжение между-3 вольтами и +3 вольтами рассматривается областью перехода, и состояние сигнала не определено.

Чтобы принести сигнал к “на” состоянии, управляющее устройство не утверждает (или понижается), значение для контактов передачи данных, и утверждает (или повышения) значение для контактов управления. С другой стороны, чтобы принести сигнал к “от” состояния, управляющее устройство утверждает значение для контактов передачи данных и не утверждает значение для контактов управления.

Следующая фигура изображает “на” и “от” состояний для сигнала данных и для управляющего сигнала.

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

Большинство устройств последовательного порта поддерживает полнодуплексную коммуникацию, означая, что они могут отправить и получить данные одновременно. Поэтому отдельные контакты используются для передачи и получения данных. Для этих устройств используются TD, RD и контакты GND. Однако некоторые типы устройств последовательного порта поддерживают только односторонние или полудуплексные коммуникации. Для этих устройств только используются TD и контакты GND. Это руководство принимает, что полнодуплексный последовательный порт соединяется с вашим устройством.

Контакт TD несет данные, переданные DTE к DCE. Контакт RD несет данные, которые получены DTE от DCE.

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

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

РТС и CTS контакты.  РТС и CTS контакты используются, чтобы сигнализировать, готовы ли устройства отправить или получить данные. Этот тип управления потоком данных — названный аппаратным квитированием — используется, чтобы предотвратить потерю данных во время передачи. Когда включено и для DTE и для DCE, аппаратное квитирование с помощью RTS и CTS выполняет эти шаги:

  1. DTE утверждает контакт RTS, чтобы сообщить DCE, что это готово получить данные.

  2. DCE утверждает контакт CTS, указывая, что это ясно отправить данные по контакту TD. Если данные больше не могут отправляться, контакт CTS не утверждается.

  3. Данные передаются к DTE по контакту TD. Если данные больше не могут приниматься, контакт RTS не утверждается DTE, и передача данных останавливается.

Чтобы включить аппаратное квитирование, обратитесь к Управлению Потоком Данных: Квитирование.

DTR и DSR контакты.  Много устройств используют DSR, и DTR прикрепляет к сигналу, если они соединяются и приводятся в действие. Сигнализация о присутствии подключенных устройств с помощью DTR и DSR выполняет эти шаги:

  1. DTE утверждает контакт DTR, чтобы запросить, чтобы DCE соединился с линией передачи данных.

  2. DCE утверждает контакт DSR, чтобы указать, что это соединяется.

  3. DCE не утверждает контакт DSR, когда это отключается от линии передачи данных.

DTR и DSR контакты были первоначально спроектированы, чтобы обеспечить альтернативный метод аппаратного квитирования. Однако РТС и CTS контакты обычно используются таким образом, а не контакты DTR и DSR. Обратитесь к своей документации устройства, чтобы определить ее определенное поведение контакта.

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

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

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

Формат последовательных данных

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

Формат для данных о последовательном порте часто описывается с помощью следующего обозначения:

количество битов данных - тип контроля четности - количество стоп-битов

Например, 8-N-1 интерпретирован как восемь битов данных, бит четности отсутствует, и один стоп-бит, в то время как 7-E-2 интерпретирован как семь битов данных, четность и два стоп-бита.

Биты данных часто упоминаются как символ, потому что эти биты обычно представляют символ ASCII. Остающиеся биты называются предельными битами, потому что они структурируют биты данных.

Байты по сравнению со значениями

Набор битов, которые составляют формат последовательных данных, называется байтом. Сначала, этот термин может казаться неточным, потому что байт составляет 8 битов, и формат последовательных данных может расположиться между 7 битами и 12 битами. Однако, когда последовательные данные хранятся на вашем компьютере, предельные биты сняты, и только биты данных сохраняются. Кроме того, восемь битов данных всегда используются независимо от количества битов данных, заданных для передачи с неиспользованными битами, присвоенными значение 0.

При чтении или записывании данные, вы можете должны быть задать значение, которое может состоять из одного или нескольких байтов. Например, если вы читаете одно значение из устройства с помощью int32 формат, затем то значение состоит из четырех байтов. Для получения дополнительной информации о чтении и записи значений, относитесь, чтобы Записать и Считать Данные о Последовательном порте.

Синхронная и асинхронная коммуникация

RS-232 и RS 485 стандартов поддерживают два типа протоколов связи: синхронный и асинхронный.

Используя синхронный протокол, все переданные биты синхронизируются с общим сигналом часов. Эти два устройства первоначально синхронизируют себя друг с другом, и затем постоянно отправляют символы, чтобы остаться синхронизируемыми. Даже когда фактические данные действительно не отправляются, постоянный поток битов позволяет каждому устройству знать, где другой в любой момент времени. Таким образом, каждый бит, который отправляется, является или фактическими данными или символом бездействия. Синхронные коммуникации позволяют более быстрые скорости передачи данных, чем асинхронные методы, потому что дополнительные биты, чтобы отметить начало и конец каждого байта данных не требуются.

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

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

Примечание

В этом руководстве термины, “синхронные” и “асинхронные”, относятся к или операции чтения, или операции записи блокируют доступ к командному окну MATLAB.

Как биты передаются?

По определению последовательные данные передаются один бит за один раз. Порядок, в котором передаются биты, выполняет эти шаги:

  1. Старт-бит передается со значением 0.

  2. Биты данных передаются. Бит First Data соответствует младшему значащему биту (LSB), в то время как последний бит данных соответствует старшему значащему биту (MSB).

  3. Бит четности (если задано) передается.

  4. Один или два стоп-бита передаются, каждый со значением 1.

Количество битов, переданных в секунду, дано скоростью в бодах. Переданные биты включают старт-бит, биты данных, бит четности (если задано), и стоп-биты.

Стартовый и стоповый биты

Как описано в Синхронной и Асинхронной Коммуникации большинство последовательных портов действует асинхронно. Это означает, что переданный байт должен быть идентифицирован стартовыми и стоповыми битами. Старт-бит указывает, когда байт данных собирается начаться, и стоп-бит указывает, когда байт данных был передан. Процесс идентификации байтов с форматом последовательных данных выполняет эти шаги:

  1. Когда контакт последовательного порта неактивен (не передача данных), затем это находится в “на” состоянии.

  2. Когда данные собираются быть переданными, контакт последовательного порта переключается на “от” состояния из-за старт-бита.

  3. Последовательный порт прикрепляет переключатели обратно к “на” состоянии из-за стоп-бита (стоп-битов). Это указывает на конец байта.

DataBits

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

Большинство последовательных портов использует от пяти до восьми битов данных. Двоичные данные обычно передаются как восемь битов. Основанные на тексте данные передаются или как семь битов или как восемь битов. Если данные основаны на наборе символов ASCII, то минимум семи битов требуется, потому что существует 27 или 128 отличных символов. Если восьмой бит используется, он должен иметь значение 0. Если данные основаны на расширенном наборе символов ASCII, то восемь битов должны использоваться, потому что существует 28 или 256 отличных символов.

Бит четности

Бит четности обеспечивает простую проверку ошибок (четности) для передаваемых данных. Эта таблица описывает типы проверки четности.

Типы контроля четности

Тип контроля четности

Описание

Даже

Биты данных плюс бит четности производят четное число 1 с.

Марк

Бит четности всегда равняется 1.

Нечетный

Биты данных плюс бит четности производят нечетное число 1 с.

Пробел

Бит четности всегда 0.

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

Процесс проверки четности выполняет эти шаги:

  1. Устройство передачи устанавливает бит четности на 0 или на 1 в зависимости от значений бита данных и типа выбранной проверки четности.

  2. Приемное устройство проверяет, сопоставим ли бит четности с передаваемыми данными. Если это, то биты данных приняты. Если это не, то ошибка возвращена.

Примечание

Проверка четности может обнаружить только однобитные ошибки. Несколько битных ошибок могут появиться как допустимые данные.

Например, предположите, что биты данных 01110001 передаются к вашему компьютеру. Если четность выбрана, то бит четности собирается в 0 устройством передачи произвести четное число 1 с. Если отрицательная четность выбрана, то бит четности собирается в 1 устройством передачи произвести нечетное число 1 с.

Найдите информацию о последовательном порте для своей платформы

Можно найти информацию о последовательном порте с помощью ресурсов, обеспеченных платформами UNIX и Windows.

Примечание

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

Используйте serialportlist Функция, чтобы найти доступные порты

serialportlist функция возвращает список всех последовательных портов в системе, включая виртуальные последовательные порты, обеспеченные USB-to-serial устройствами и Bluetooth Serial Port Profile устройствами. Функция предоставляет список последовательных портов, к которым вы имеете доступ на вашем компьютере и можете использовать для коммуникации последовательного порта. Например:

serialportlist
ans = 

  1×3 string array

    "COM1"    "COM3"    "COM4"

Примечание

serialportlist функция показывает и доступные и порты в использовании на Windows и macOS системах, но на Linux, это показывает только доступные порты и не порты в использовании.

Платформа Windows

Можно получить доступ к информации о последовательном порте через Device Manager.

  1. Открытый Device Manager.

  2. Расширьте список Ports (COM & LPT).

  3. Дважды кликните элемент Communications Port (COM1).

  4. Выберите вкладку Port Settings.

Платформа UNIX

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

На Linux устройства последовательного порта обычно называют ttyS0, ttyS1, и так далее. Можно использовать setserial команда, чтобы отобразиться или сконфигурировать информацию о последовательном порте. Например, чтобы отобразиться, какие последовательные порты доступны:

setserial -bg /dev/ttyS*
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A

Отобразить подробную информацию о ttyS0:

setserial -ag /dev/ttyS0
/dev/ttyS0, Line 0, UART: 16550A, Port: 0x03f8, IRQ: 4
        Baud_base: 115200, close_delay: 50, divisor: 0
        closing_wait: 3000, closing_wait2: infinte
        Flags: spd_normal skip_test session_lockout

Примечание

Если setserial -ag команда не работает, убедитесь, что вы читали и разрешение записи для порта.

Для всех поддерживаемых платформ UNIX, включая macOS, можно использовать stty команда, чтобы отобразиться или сконфигурировать информацию о последовательном порте. Например, чтобы отобразить свойства последовательного порта для ttyS0Ввод:

stty -a < /dev/ttyS0

Чтобы сконфигурировать скорость в бодах как 4 800 бит в секунду, введите:

stty speed 4800 < /dev/ttyS0 > /dev/ttyS0

Примечание

В этом примере показано, как установить tty параметры, не скорость в бодах. Чтобы установить скорость в бодах с помощью последовательного интерфейса MATLAB, относитесь, чтобы Сконфигурировать Коммуникационные Настройки Последовательного порта.