Разное

Последовательный разъем ide: Для чего нужен разъем IDE

Содержание

SCSI, SAS, Firewire, IDE, SATA

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

Содержание статьи

  • Предназначение
  • SCSI — Small Computer System Interface
  • SAS — Serial Attached SCSI
  • Firewire — IEEE 1394
  • IDE — Integrated Drive Electronics
  • SATA — Serial ATA
  • eSATA — External SATA
  • Заключение

Предназначение

Интерфейсы жестких дисков (или строго говоря, интерфейсы внешних накопителей, поскольку в их качестве могут выступать не только жесткие диски, но и другие типы накопителей, например, приводы для оптических дисков) предназначены для обмена информацией между этими устройствами внешней памяти и материнской платой. Интерфейсы жестких дисков, не в меньшей степени, чем физические параметры накопителей, влияют на многие рабочие характеристики накопителей и на их производительность. В частности, интерфейсы накопителей определяют такие их параметры, как  скорость обмена данными между жестким диском и материнской платой, количество устройств, которые можно подключить к компьютеру, возможность создания дисковых массивов, возможность горячего подключения, поддержка технологий NCQ и AHCI, и.т.д. Также от интерфейса жесткого диска зависит, какой кабель, шнур или переходник для его подключения к материнской плате вам потребуется.

SCSI — Small Computer System Interface

Интерфейс SCSI является одним из самых старых интерфейсов, разработанных для подключения накопителей в персональных компьютерах. Появился данный стандарт еще в начале 1980-х гг. Одним из его разработчиков был Алан Шугарт, также известный, как изобретатель дисководов для гибких дисков.

Внешний вид интерфейса SCSI на плате и кабеля подключения к нему

Стандарт SCSI (традиционно данная аббревиатура читается в русской транскрипции как «скази») первоначально предназначался для использования в персональных компьютерах, о чем свидетельствует даже само название формата – Small Computer System Interface, или системный интерфейс для небольших компьютеров. Однако так получилось, что накопители данного типа применялись в основном в персональных компьютерах топ-класса, а впоследствии и в серверах. Связано это было с тем, что, несмотря на удачную архитектуру и широкий набор команд, техническая реализация интерфейса была довольно сложна, и не подходила по стоимости для массовых ПК.

Тем не менее, данный стандарт обладал рядом возможностей, недоступных для прочих типов интерфейсов. Например, шнур для подключения устройств Small Computer System Interface может иметь максимальную длину в 12 м,  а скорость передачи данных – 640 МБ/c.

Как и появившийся несколько позже интерфейс IDE, интерфейс SCSI является параллельным. Это означает, что в интерфейсе применяются шины, передающие информацию по нескольким проводникам. Данная особенность являлась одним из сдерживающих факторов для развития стандарта, и поэтому в качестве его замены был разработан более совершенный, последовательный стандарт SAS (от Serial Attached SCSI).

SAS — Serial Attached SCSI

Так выглядит интерфейс SAS серверного диска

Serial Attached SCSI разрабатывался в усовершенствования достаточно старого интерфейса подключения жестких дисков Small Computers System Interface. Несмотря на то, что Serial Attached SCSI  использует  основные достоинства своего предшественника, тем не менее, у него есть немало преимуществ. Среди них стоит отметить следующие:

  • Использование общей шины всеми устройствами.
  • Последовательный протокол передачи данных, используемый  SAS, позволяет задействовать меньшее количество сигнальных линий.
  • Отсутствует необходимость в терминации шины.
  • Практически неограниченное число подключаемых устройств.
  • Более высокая пропускная способность (до 12 Гбит/c). В будущих реализациях протокола SAS предполагается поддерживать скорость обмена данными до 24 Гбит/c.
  • Возможность подключения к контроллеру SAS накопителей с интерфейсом Serial ATA.

Как правило, системы Serial Attached SCSI строятся на основе нескольких компонентов. В число основных компонентов входят:

  • Целевые устройства. В эту категорию включают собственно накопители или дисковые массивы.
  • Инициаторы – микросхемы, предназначенные для генерации запросов к целевым устройствам.
  • Система доставки данных – кабели, соединяющие целевые устройства и инициаторы

Разъемы Serial Attached SCSI могут иметь различную форму и размер, в зависимости от типа (внешний или внутренний) и от версий SAS. Ниже представлены внутренний разъем SFF-8482 и внешний разъем SFF-8644, разработанный для SAS-3:

Слева — внутренний разъём SAS SFF-8482; Справа — внешний разъём SAS SFF-8644 с кабелем.

Несколько примеров внешнего вида шнуров и переходников SAS: шнур HD-Mini SAS и шнур-переходник SAS-Serial ATA.

Слева — шнур HD Mini SAS; Справа — переходной шнур с SAS на Serial ATA

Firewire — IEEE 1394

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

FireWire — IEEE 1394 — вид на ноутбуке

Интерфейс Firewire был разработан в середине 1990-х гг. Начало разработке положила небезызвестная фирма Apple, нуждавшаяся в собственной, отличной от USB, шине для подключения периферийного оборудования, прежде всего мультимедийного. Спецификация, описывающая работу шины Firewire, получила название IEEE 1394.

На сегодняшний день Firewire представляет собой один из наиболее часто используемых форматов высокоскоростной последовательной внешней шины. К основным особенностям стандарта можно отнести:

  • Возможность горячего подключения устройств.
  • Открытая архитектура шины.
  • Гибкая топология подключения устройств.
  • Меняющаяся в широких пределах скорость передачи данных – от 100 до 3200 Мбит/c.
  • Возможность передачи данных между устройствами без участия компьютера.
  • Возможность организации локальных сетей при помощи шины.
  • Передача питания по шине.
  • Большое количество подключаемых устройств (до 63).

Для подключения винчестеров (обычно посредством внешних корпусов для жестких дисков) через шину Firewire, как правило, используется специальный стандарт SBP-2, использующий набор команд протокола Small Computers System Interface. Существует возможность подключения устройств Firewire к обычному разъему USB, но для этого требуется специальный переходник.

Более подробно рассмотрена в статье стандарт IEEE 1394 — fireWire.

IDE — Integrated Drive Electronics

Аббревиатура IDE, несомненно, известна большинству пользователей персональных компьютеров. Стандарт интерфейса для подключения жестких дисков IDE был разработан известной фирмой, производящей жесткие диски – Western Digital. Преимуществом IDE по сравнению  с другими существовавшими в то время интерфейсами, в частности,  интерфейсом Small Computers System Interface, а также стандартом ST-506, было отсутствие необходимости устанавливать контроллер жесткого диска на материнскую плату. Стандарт IDE подразумевал установку контроллера привода на корпус самого накопителя, а на материнской плате оставался лишь хост-адаптер интерфейса для подключения приводов IDE.

Интерфейс IDE на материнской плате

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

Новая технология первоначально получила название Integrated Drive Electronics (Встроенная в накопитель электроника). Впоследствии был разработан описывающий ее стандарт, названный ATA. Это название происходит от последней части названия семейства компьютеров  PC/AT посредством добавления слова Attachment.

Для подключения жесткого диска или другого устройства, например, накопителя для оптических дисков, поддерживающего технологию Integrated Drive Electronics, к материнской плате, используется специальный кабель IDE. Поскольку ATA относится к параллельным интерфейсам (поэтому его также называют Parallel ATA или PATA), то есть, интерфейсам, предусматривающим одновременную передачу данных  по нескольким линиям, то его кабель данных имеет большое количество проводников (обычно 40, а в последних версиях протокола имелась возможность использовать 80-жильный кабель).  Обычный кабель данных для данного стандарта имеет плоский и широкий вид, но встречаются и кабели круглого сечения. Кабель питания для накопителей Parallel ATA имеет 4-контактный разъем и подсоединен к блоку питания компьютера.

Ниже приведены примеры кабеля IDE и круглого шнура данных PATA:

Внешний вид интерфейсного кабеля: cлева — плоский, справа в круглой оплетке — PATA или IDE.

Благодаря сравнительной дешевизне накопителей Parallel ATA, простоте реализации интерфейса на материнской плате, а также простоте установки и конфигурации устройств PATA для пользователя, накопители типа Integrated Drive Electronics на длительное время вытеснили с рынка винчестеров для персональных компьютеров бюджетного уровня устройства других типов интерфейса.

Однако стандарт PATA имеет и ряд недостатков. Прежде всего, это ограничение по длине, которую может иметь кабель данных Parallel ATA – не более 0,5 м. Кроме того, параллельная организация интерфейса накладывает ряд ограничений на максимальную скорость передачи данных. Не поддерживает стандарт PATA и многие расширенные возможности, которые имеются у других типов интерфейсов, например, горячее подключение устройств.

SATA — Serial ATA

Вид интерфейса SATA на материнской плате

Интерфейс SATA (Serial ATA), как можно догадаться из названия, является усовершенствованием ATA. Заключается это усовершенствование, прежде всего, в переделке традиционного параллельного ATA (Parallel ATA) в последовательный интерфейс. Однако этим отличия стандарта Serial ATA от традиционного не ограничиваются. Помимо изменения типа передачи данных с параллельного на последовательный, изменились также разъемы для передачи данных и электропитания.

Ниже приведен шнур данных SATA:

Шнур передачи данных для SATA интерфейса

Это позволило использовать шнур значительно большей длины и увеличить скорость передачи данных. Однако минусом стало то обстоятельство, что устройства PATA, которые до появления SATA присутствовали на рынке в огромных количествах, стало невозможно напрямую подключить в новые разъемы. Правда, большинство новых материнских плат все же имеют старые разъемы и поддерживают подключение старых устройств. Однако обратная операция – подключение накопителя нового типа к старой материнской плате обычно вызывает куда больше проблем. Для этой операции пользователю обычно требуется переходник Serial ATA to PATA. Переходник для кабеля питания обычно имеет сравнительно простую конструкцию.

Переходник питания Serial ATA to PATA:

Слева общий вид кабеля; Cправа укрупнено внешний вид коннекторов PATA и Serial ATA

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

Внешний вид универсального двунаправленного переходника между интерфейсами SATA — IDE

В настоящее время интерфейс Serial ATA практически вытеснил Parallel ATA, и накопители PATA можно встретить теперь в основном лишь в достаточно старых компьютерах. Еще одной особенностью нового стандарта, обеспечившей его широкую популярность, стала поддержка технологий NCQ и AHCI.

Вид переходника с IDE на SATA

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

Вид переходника с SATA на IDE

Для использования NCQ необходима поддержка технологии со стороны жесткого диска, а также хост-адаптера материнской платы. Практически  все адаптеры, поддерживающие AHCI, поддерживают и NCQ. Кроме того, NCQ поддерживают и некоторые старые проприетарные адаптеры. Также для работы NCQ требуется ее поддержка со стороны операционной системы.

eSATA — External SATA

Отдельно стоит упомянуть о казавшемся многообещающим в свое время, но так и не получившем широкого распространения формате eSATA (External SATA). Как можно догадаться из названия, eSATA представляет собой разновидность Serial ATA, предназначенную для подключения исключительно внешних накопителей. Стандарт eSATA предлагает для внешних устройств большую часть возможностей стандартного, т.е. внутреннего Serial ATA, в частности, одинаковую систему сигналов и команд и столь же высокую скорость.

Разъем eSATA на ноутбуке

Тем не менее, у eSATA есть и некоторые отличия от породившего его стандарта внутренней шины. В частности, eSATA поддерживает более длинный кабель данных (до 2 м), а также имеет более высокие требования к питанию накопителей. Кроме того, разъемы eSATA несколько отличаются от стандартных разъемов Serial ATA.

По сравнению с другими внешними шинами, такими, как USB и Firewire, eSATA, однако, имеет один существенный недостаток. Если эти шины позволяют осуществлять электропитание устройства через сам кабель шины, то накопитель eSATA требует специальные разъемы для питания. Поэтому, несмотря на сравнительно высокую скорость передачи данных, eSATA в настоящее время не пользуется большой популярностью в качестве интерфейса для подключения внешних накопителей.

Заключение

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

Порекомендуйте Друзьям статью:

MB Socket SuperMicro X7DWN+ | Хламада

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ

Производитель — SuperMicro

Модель — X7DB3

Тип оборудования — cерверная материнская плата

Чипсет мат. Платы — Intel 5400 + 6321ESB (ESB-2)

Гнездо процессора — Socket  LGA771 x2

Формат платы: Extended E-ATX

Габаритные размеры: 12″ x 13″ (347×330 мм)

ПИТАНИЕ

Требуется источник питания ATX мощностью 550W (минимум)

Питание материнской платы: 20-pin

Питания процессора: 8-pin + 4-pin

ПРОЦЕССОР

Макс. кол-во процессоров на материнской плате — 2

Поддержка процессоров: 

Intel Xeon 54XX/53XX (Harpertown/Clovertown) до 3,20 GHz

Intel Xeon 52XX/51XX/50XX (Wolfdale/Woodcrest/Dempsey) до 3,40 GHz

ПОДДЕРЖКА ПАМЯТИ

Тип поддерживаемой памяти: FB-DIMM (Fully Buffered DIMM) DDR800 (PC2-6400), DDR667 (PC2-5300), DDR533 (PC2-4200) с поддержкой ECC

Количество слотов памяти: 16x FBD DDRII; четырехканальный контроллер памяти, модули памяти устанавливаются только парами одинакового объема

Поддерживаемые стандарты памяти: 800*/667/533 МГц FB-DIMM (DIMM с полной буферизацией) ECC DDR2 SDRAM 72-битные, 240-контактные позолоченные модули DIMM

Напряжение памяти: 1. 8V или 1.5V

Поддерживаемые объеёмы DIMM: 512MB, 1GB, 2GB, 4GB, 8GB**

Максимальное ко-во памяти: до 128 GB 800*/667/533MHz DDR2 ECC FB-DIMM

Эти модули памяти еще не тестировались**

Только для CPU c FSB 1600MHz *

Поддержка ECC:

Исправляет однобитовые ошибки

Обнаруживает двухбитовые ошибки (с использованием памяти ECC)

Поддерживает коррекцию данных на одном устройстве Intel x4 и x8 (SDDC)

ГРАФИКА

ATI ES1000 32MB

ВВОД/ВЫВОД

IDE: один канал EIDE поддерживает до двух устройств UDMA IDE (IDE-M, IDE-S), включая карту CF (Compact Flash)

Слот для Compact Flash (40-контактный разъем, IDE 1, одноканальный)

Поддерживает UDMA Mode 5, PIO Mode 4 и ATA / 100

SATA:6x SATA 3Gb/s; контроллер Intel ESB2 SATA 3.0Gbps; поддержка RAID 0, 1, 5, 10

Floppy: 1 контроллер гибких дисков; 1,44 MB

LAN: 2x RJ45 LAN

USB: 2x USB-порта на задней панели; 3 внутренних разъема USB; всего 5 USB 2.0

VGA: 1x VGA

Клавиатура/Мышь: 2x PS/2 

Последовательный порт: 1 последовательный порт Fast UART 16550; 1 последовательный разъем Fast UART 16550

Параллельный порт: 1 параллельный порт ECP / EEP

СЛОТЫ РАСШИРЕНИЯ

PCI-E:

3x (x8) PCI-e (2 w/ Gen 2. 0)

1x (x4) PCI-e (с использованием x8)

PCI-X:

2x 64-битных разъема PCI-X 133MHz (3,3V)

1x слот UIO

СЕТЕВЫЕ КОНТРОЛЛЕРЫ

Двухпортовый гигабитный сетевой контроллер Intel (ESB2/Gilgal) 82563EB

Поддерживает выход 10BASE-T, 100BASE-TX и 1000BASE-T, RJ45

Поддержка Intel I / OAT для быстрой, масштабируемой и надежной сети

УПРАВЛЕНИЕ

Поддерживается плата управления (приобретается отдельно). Intelligent Platform Management Interface v.2.0 при установке приобретаемой отдельно платы AOC-SIMSO или AOC-SIMSO+

Тип BIOS: EEPROM 8Mb; Phoenix BIOS

ВЕНТИЛЯТОРЫ

4x 4-pin разъема

4x 3-pin разъема

Установить последовательное соединение с ESP32 — ESP32

[中文]

Установить последовательное соединение с целевым устройством ESP32 можно с помощью моста USB-UART.

На некоторых макетных платах установлен мост USB-UART. Если на плате нет моста, можно использовать внешний мост.

Мост USB-UART на макетной плате

Для плат с установленным мостом USB-to-UART соединение между персональным компьютером и мостом — USB, а между мостом и ESP32 — UART.

Макетная плата с мостом USB-UART

Внешний мост USB-UART

Иногда мост USB-UART является внешним. Это часто используется в небольших макетных платах или готовых продуктах, когда пространство и стоимость имеют решающее значение.

Внешний мост USB-UART

Flash с использованием UART

В этом разделе приведены инструкции по установке последовательного соединения между ESP32 и ПК с помощью моста USB-UART, установленного на макетной плате или внешнего.

Подключить ESP32 к ПК

Подключите плату ESP32 к ПК с помощью USB-кабеля. Если драйвер устройства не устанавливается автоматически, определите мост USB-UART на плате ESP32 (или внешнем ключе-преобразователе), найдите драйверы в Интернете и установите их.

Ниже приведен список микросхем преобразователя USB в последовательный порт, установленных на большинстве плат ESP32 производства Espressif вместе со ссылками на драйверы:

  • CP210x: CP210x Драйверы VCP для моста USB-UART

  • FTDI: Драйверы виртуального COM-порта FTDI

Пожалуйста, проверьте руководство пользователя платы для конкретной используемой микросхемы моста USB-UART.

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

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

 idf.py -p ПОРТ [-b БОД] flash
 

Вы можете изменить скорость передачи данных флешера, заменив BAUD на нужную вам скорость передачи данных. Скорость передачи данных по умолчанию составляет 460800 .

Примечание

Если устройство не поддерживает режим автоматической загрузки, вам необходимо войти в режим загрузки вручную. Для этого нажмите и удерживайте кнопку BOOT , а затем один раз нажмите кнопку RESET . После этого отпустите кнопку BOOT .

Проверить порт на Windows

Проверьте список идентифицированных COM-портов в диспетчере устройств Windows.

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

На рисунках ниже показан последовательный порт для ESP32 DevKitC и ESP32 WROVER KIT

.

Мост USB-UART ESP32-DevKitC в диспетчере устройств Windows

Два последовательных порта USB ESP-WROVER-KIT в диспетчере устройств Windows

Проверить порт в Linux и macOS

Чтобы проверить имя устройства для последовательного порта вашей платы ESP32 (или внешнего ключа-преобразователя), запустите эту команду два раза, сначала с отключенной платой / ключом, а затем с подключенным. Порт, который появляется во второй раз, это тот Вам нужно:

Линукс

 лс /dev/tty*
 

macOS

 лс /dev/cu.*
 

Примечание

Пользователи macOS: если вы не видите последовательный порт, проверьте, установлены ли драйверы USB/последовательного порта. Ссылки на драйверы см. в разделе «Подключение ESP32 к ПК». Для macOS High Sierra (10.

13) вам также может потребоваться явно разрешить загрузку драйверов. Откройте «Системные настройки» -> «Безопасность и конфиденциальность» -> «Основные» и проверьте, отображается ли здесь сообщение о «Системном программном обеспечении от разработчика…», где имя разработчика — Silicon Labs или FTDI.

Добавление пользователя в

дозвон в Linux

Текущий зарегистрированный пользователь должен иметь доступ для чтения и записи к последовательному порту через USB. В большинстве дистрибутивов Linux это делается путем добавления пользователя в группу dialout с помощью следующей команды:

.
 sudo usermod -a -G dialout $USER
 

в Arch Linux это делается путем добавления пользователя в группу uucp с помощью следующей команды:

 sudo usermod -a -G uucp $USER
 

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

Проверить последовательное соединение

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

Скорость передачи данных консоли по умолчанию на ESP32 составляет 115200.

Windows и Linux

В этом примере мы будем использовать клиент PuTTY SSH, доступный как для Windows, так и для Linux. Вы можете использовать другие последовательные программы и установить параметры связи, как показано ниже.

Запустите терминал и установите идентифицированный последовательный порт. Скорость передачи = 115200 (при необходимости измените ее на скорость передачи данных по умолчанию для используемого чипа), биты данных = 8, стоповые биты = 1 и четность = N. Ниже приведены примеры скриншотов настройки порта и таких параметров передачи ( кратко описывается как 115200-8-1-N) в Windows и Linux. Не забудьте выбрать точно такой же последовательный порт, который вы указали в шагах выше.

Настройка последовательной связи в PuTTY в Windows

Настройка последовательной связи в PuTTY в Linux

Затем откройте последовательный порт в терминале и проверьте, не видите ли вы какой-либо журнал, распечатанный ESP32. Содержимое журнала будет зависеть от приложения, загруженного в ESP32, см. пример вывода.

Примечание

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

macOS

Чтобы избавить вас от необходимости устанавливать программу последовательного терминала, macOS предлагает экран команда.

  • Как обсуждалось в разделе Проверка порта в Linux и macOS, введите:

     лс /dev/cu.*
     
  • Вы должны увидеть аналогичный вывод:

     /dev/cu.Входящий порт Bluetooth /dev/cu.SLAB_USBtoUART /dev/cu.SLAB_USBtoUART7
     
  • Выходные данные зависят от типа и количества плат, подключенных к вашему ПК. Затем выберите имя устройства вашей платы и запустите (при необходимости измените «115200» на скорость передачи по умолчанию используемого чипа):

     экран /dev/cu. device_name 115200
     

    Замените имя_устройства найденным именем ls /dev/cu.* .

  • То, что вы ищете, это какой-то журнал, отображаемый на экране . Содержимое журнала будет зависеть от приложения, загруженного в ESP32, см. пример вывода. Чтобы выйти из сеанса экрана , введите Ctrl-A + \ .

Примечание

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

Пример вывода

Пример журнала показан ниже. Сбросьте плату, если ничего не видите.

 Июн 8 2016 00:22:57
первый: 0x5 (DEEPSLEEP_RESET), загрузочный: 0x13 (SPI_FAST_FLASH_BOOT)
июн 8 2016 00:22:57
первый: 0x7 (TG0WDT_SYS_RESET), загрузочный: 0x13 (SPI_FAST_FLASH_BOOT)
конфигурация: 0, SPIWP: 0x00
clk_drv: 0x00, q_drv: 0x00, d_drv: 0x00, cs0_drv: 0x00, hd_drv: 0x00, wp_drv: 0x00
режим: DIO, часы div: 2
нагрузка: 0x3fff0008, длина: 8
нагрузка: 0x3fff0010, длина: 3464
нагрузка: 0x40078000, длина: 7828
нагрузка: 0x40080000, длина: 252
запись 0x40080034
I (44) загрузка: ESP-IDF v2. 0-rc1-401-gf9fba35 загрузчик 2-й стадии
I (45) загрузка: время компиляции 18:48:10
...
 

Если вы видите читаемый вывод журнала, это означает, что последовательное соединение работает, и вы готовы продолжить установку и, наконец, загрузить приложение в ESP32.

Примечание

Для некоторых конфигураций проводки последовательного порта необходимо отключить последовательные контакты RTS и DTR в терминальной программе, прежде чем ESP32 загрузится и выдаст последовательный вывод. Это зависит от самого оборудования, большинства плат разработки (включая все платы Espressif) у нет этой проблемы. Проблема возникает, если RTS и DTR подключены напрямую к контактам EN и GPIO0. См. документацию esptool для более подробной информации.

Если вы перешли сюда с шага 5. Первые шаги по ESP-IDF при установке программного обеспечения для разработки ESP32, то вы можете продолжить с шага 5. Первые шаги по ESP-IDF.

Использование USB Serial с Teensy в Arduino IDE

Магазин PJRC
Teensy 4. 1, 31,50 долл. США
Teensy 4.0, 23,80 долл. США
Тинси
Главная страница
Аппаратное обеспечение
Начало работы
Учебное пособие
Практические советы
Библиотека кода
Проекты 902 902 902

Teensy

Основной
Загрузка+Установка
Базовое использование
Цифровой ввод/вывод
ШИМ и тональный сигнал
Синхронизация
Код безопасности
Запуск
USB Serial
USB Keyboard
USB Mouse
USB Джойстик
USB MIDI
USB Flight Sim
Serial
Библиотеки

Артикул

Teensyduino предоставляет объект Serial, совместимый с Серийный объект на стандартных платах Arduino. Обычно используется последовательный для вывода информации на серийный монитор Arduino IDE.
недействительная установка () {
  Серийный номер  .begin(9600); // USB всегда 12 или 480 Мбит/сек
}
недействительный цикл () {
  Серийный номер  .println("Hello World...");
 задержка(1000); // не печатайте слишком быстро!
}
 
В отличие от Arduino Uno и Mega, которые используют низкую скорость последовательной передачи данных, объект Teensy USB Serial всегда обменивается данными на исходной скорости USB, либо 12, либо 480 Мбит/с. Параметр скорости передачи с помощью Serial.begin(baud) игнорируется для последовательного порта USB (но конечно используется с аппаратным серийным номером). В Teensy 4.x рекомендуется откладывать, чтобы избежать печати. так быстро, что прокрутка последовательного монитора требует слишком много обработки власть.

В этом примере «Hello World…» печатается один раз в секунду.

На самом деле Teensy не станет серийным устройством, пока ваш скетч не будет запущен. поэтому вы должны выбрать последовательный порт (меню Tools -> Serial Port) после начинается ваш эскиз.

Стандартные последовательные функции

Поддерживаются все стандартные последовательные функции.

Последовательный.начало()

Serial.begin() является необязательным для Teensy. Аппаратная инициализация USB выполняется перед запуском setup().

Ввод скорости передачи игнорируется и используется только для совместимости с Arduino. Последовательная связь USB всегда происходит на полной скорости USB. Однако, см. функцию baud() ниже.

Serial.begin() может ждать до 2,5 секунд для последовательной связи USB быть готовым. Для быстрого запуска программы просто не используйте этот ненужная функция. Его единственная цель — совместимость с программы, написанные для Arduino. Задержка предназначена для программ которые не проверяют логическое значение Serial.

(логический) Серийный номер

Проверьте, открылся ли последовательный монитор Arduino. Обычно это используется с циклом while для ожидания, пока последовательный монитор Arduino не будет запущен. готов к приему данных.
недействительная установка () {
  Серийный номер  .println("Это может быть отправлено до того, как ваш ПК сможет получить");
 в то время как (!  серийный номер ) {
 // ждем, пока Arduino Serial Monitor будет готов
 }
  Serial  .println("Эта строка обязательно появится в последовательном мониторе");
}
 
Если вы будете использовать Teensy в автономном приложении без серийный монитор, не забудьте удалить это ожидание, чтобы ваша программа не оставаться вечно ждать серийный монотор.

В качестве альтернативы ожидание может быть выполнено с тайм-аутом.

 в то время как (!  серийный номер  && миллис () < 15000) {
 // ждем до 15 секунд для серийного монитора Arduino
 }
 

Serial.print() и Serial.println()

Напечатайте число или строку. Serial.print() печатает только число или строку и Serial.println() печатает его с символом новой строки.
 // Serial.print() может печатать множество разных типов
 целое число = 1234;
  Серийный номер  . println("строка"); // нить
  Серийный номер  .println('a'); // один символ
  Серийный номер  .println(номер); // число (база 10, если 16 или 32 бита)
  Серийный номер  .println(номер, DEC); // число, основание 10 (по умолчанию)
  Серийный номер  .println(номер, HEX); // число, основание 16/шестнадцатеричное
  Серийный номер  .println(номер, OCT); // число, основание 8/восьмеричное
  Серийный номер  .println(номер, БИН); // число, основание 2/двоичное
  Серийный номер  .println(3.14); // число с плавающей запятой, 2 цифры
 
На стандартном Arduino эта функция ожидает, пока данные передаются. С Тинсидуино, Serial.print() и Serial.println() обычно возвращаются быстро, когда сообщение помещается в пределах USB-буферы. См. «Буферизация передачи» ниже.

Серийный.write()

Передать байт. Вы также можете использовать Serial.write(buffer, length) для отправки более один байт за раз, для очень быстрой и эффективной передачи данных.

Серийный.

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

На стандартном Arduino Serial. available() имеет тенденцию сообщать об отдельных байтах, тогда как большие блоки могут быть мгновенно доступны с Teensyduino. Подробности см. в разделе «Буферизация приема» ниже.

Обычно возвращаемое значение из Serial. available() следует проверять как логическое значение либо есть или нет данных. Только байты, доступные из самого последнего полученный USB-пакет виден. Видеть Подробнее о неэффективных однобайтовых USB-пакетах см. ниже.

Последовательный.чтение()

Прочитать 1 байт (от 0 до 255), если доступно, или -1, если ничего не доступно. Обычно Serial.read() используется после Serial.available(). Например:
 если ( серийный номер  .доступно()) {
 incomingByte =  Serial  .read(); // не будет -1
 // делаем что-то с incomingByte
 }
 

Серийный.flush()

Подождите, пока все переданные данные все еще находятся в буферах, чтобы начать передачу. Если в буфере нет данных, ожидающих передачи, функция flush() немедленно возвращается.

Arduino 0022 и 0023: flush() отбрасывает любые полученные данные, которые не были прочитаны.

Последовательные расширения Teensy USB

Teensyduino предоставляет расширения для стандартного последовательного объекта Arduino, поэтому вы можете получить доступ к функциям, специфичным для USB.

Serial.send_now()

Передайте любые буферизованные данные как можно скорее. См. «Буферизация передачи» ниже.

Серийный.dtr()

Прочитайте состояние сигнала DTR. По умолчанию DTR имеет низкий уровень, когда нет программного обеспечения. последовательное устройство открыто, и оно становится высоким, когда программа открывает порт. Некоторые программы переопределяют это поведение, но для обычного программного обеспечения вы можете использовать DTR, чтобы знать, когда программа использует последовательный порт.
недействительная установка () {
}
недействительный цикл () {
 pinMode(6, ВЫХОД); // Светодиод, показывающий, использует ли программа последовательный порт
 цифровая запись (6, ВЫСОКИЙ); //   (активный низкий уровень сигнала, ВЫСОКИЙ = светодиод не горит)
 в то время как (!  серийный номер  . dtr()) {
 // ждем, пока пользователь запустит последовательный монитор
 }
 цифровая запись (6, НИЗКИЙ);
 задержка(250);
  Serial  .println("Привет, новый сеанс последовательного монитора");
 в то время как ( Серийный номер .dtr()) {
  Серийный номер  .print('.'); // ждем, пока пользователь покинет последовательный монитор
 задержка(500);
 }
}
 
На стандартном Arduino сигналы DTR и RTS присутствуют на контактах платы. Чип FTDI, но они ни к чему не подключены. Вы можете паять провода между контактами ввода-вывода и чипом FTDI, если вам нужны эти сигналы.

Серийный.rts()

Прочитайте состояние сигнала RTS. USB автоматически включает управление потоком, поэтому вам не нужно читать этот бит, чтобы узнать, готов ли ПК к приему ваши данные. Независимо от того, насколько быстро вы передаете, USB всегда управляет буферами поэтому все данные доставляются надежно. Тем не менее, вы можете вызвать перегрузку ЦП. использование принимающей программой является приложением Java с графическим интерфейсом как серийный монитор Arduino!

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

Драйвер Windows USBSER.SYS имеет известная ошибка где изменения, внесенные в RTS, не сообщаются Teensy (или любым другим доскам с использованием протокола CDC-ACM) до тех пор, пока не будет записан DTR. Некоторые программы, такие как CoolTerm, обойти эту ошибку.

Последовательный.бод()

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

Последовательный.стопбиты()

Считайте настройку стоповых битов с ПК или Mac. USB никогда не использует стоп биты.

Serial.paritytype()

Считайте настройку типа четности с ПК или Mac. USB использует проверку CRC на всех пакетах данных в массовом режиме и автоматически ретранслирует поврежденные данные, поэтому биты четности никогда не используются.

Серийный.numbits()

Считайте настройку числа битов с ПК или Mac. USB всегда общается 8-битные байты.

Сведения о буферизации и синхронизации USB

Обычно объект Serial используется для передачи и приема данных без беспокоясь о более тонких деталях синхронизации. Это "просто работает" в большинстве случаев. Но иногда важны детали времени связи, особенно передачи на ПК.

Буферизация передачи

На Arduino Uno и Mega при передаче с помощью Serial.print() байты медленно передаются через аппаратный последовательный порт на преобразователь USB-Serial чип.

На Teensy Serial.print() записывает непосредственно в буфер USB. Если все ваше сообщение помещается в буферную память, Serial.print() возвращается к вашему эскизу очень быстро.

И Teensyduino, и микросхема USB-Serial содержат частично заполненный буфер. если вы хотите передать больше данных. Обычно после короткого перерыва 3-5 мс в Teensyduino, запланирована передача частично заполненного буфера на USB.

Teensyduino немедленно планирует любой частично заполненный буфер для передачи когда вызывается функция Serial. send_now().

Вся пропускная способность USB управляется чипом хост-контроллера на вашем ПК или Мак. Когда полный или частично заполненный буфер готов к передаче, фактическая передача происходит, когда позволяет хост-контроллер. Обычно это Чип хост-контроллера запрашивает передачу данных много тысяч раз за во-вторых, хотя на синхронизацию могут влиять другие USB-устройства, потребляющие большую часть доступной полосы пропускания USB.

Когда хост-контроллер получает данные, операционная система затем планирует выполнение принимающей программы. В Linux открыты последовательные порты с опцией «низкая задержка» пробуждаются быстро, другие обычно ждут до нормальной "галочки" запускать. Windows и MacOS, вероятно, добавят процесс задержки в расписании. Сложные среды выполнения (например, Java) также могут добавить существенную задержку.

Буферизация приема

Когда ПК передает, обычно хост-контроллер отправляет как минимум первый USB-пакет в течение следующей 1 мс. И Teensyduino, и Чип FTDI на Arduino получает полный USB-пакет (и проверяет его проверку CRC). Затем чип FTDI отправляет данные на стандартный Arduino через медленный последовательный порт. Скетч, многократно вызывающий Serial.available() и Serial.read(), будет имеют тенденцию видеть каждый байт, тогда многие вызовы Serial.availble() вернутся false, пока следующий байт не прибудет через последовательную связь.
недействительный цикл () {
 // В Arduino с последовательным интерфейсом байты обычно приходят по одному
 // так что этот цикл while обычно обрабатывает только 1 байт, прежде чем разрешить
 // остальная часть функции цикла выполняет свою работу
 в то время как ( серийный номер  .доступно()) {
 incomingByte =  Serial  .read();
 // делаем что-то с incomingByte
 }
 // делаем другие несвязанные вещи
 время_чувствительная_задача1();
 другая_срочная_вещь();
 все еще_еще_даже_больше_вещей();
}
 
На Teensy, весь пакет, до 64 байт на Teensy 2 и 3 со скоростью 12 Мбит/с, до 512 байт на Teensy 4 со скоростью 480 Мбит/с, все становится доступным сразу. Эскизы, выполняющие другую работу во время получения данных, могут зависеть от медленное поведение приема, когда последовательные вызовы Serial.available() очень маловероятно, чтобы вернуться true. О получении Тинси крупных сумм данных, может потребоваться добавить переменную для подсчета количества байт обработано и ограничивает задержку перед выполнением другой важной работы. быть сделано.
недействительный цикл () {
 // На Teensy большие группы байтов имеют тенденцию поступать одновременно.
 // Этот счетчик байтов позволяет не тратить слишком много времени на их обработку.
 беззнаковое целое число байтов = 0;
 в то время как (  Серийный номер  .доступно () && количество байтов < 10) {
 incomingByte =  Serial  .read();
 // делаем что-то с incomingByte
 количество байт++;
 }
 // делаем другие несвязанные вещи
 время_чувствительная_задача1();
 другая_срочная_вещь();
 все еще_еще_даже_больше_вещей();
}
 

Неэффективные однобайтовые пакеты USB

При передаче Serial. write() и Serial.print() группируют байты из последовательных записывает вместе в пакеты USB, чтобы наилучшим образом использовать пропускную способность USB. Ты можно переопределить это поведение с помощью Serial.send_now(), но по умолчанию несколько записей объединяются в пакеты.

Microsoft Windows и Linux, к сожалению, НЕ предоставляют подобную функцию, когда передача данных. Если приложение записывает неэффективно, например, один байт за раз каждый байт отправляется в одном USB-пакете (который мог содержать 64 или 512 байт). Хотя это плохо использует полосу пропускания USB, больше беспокоит то, как это влияет на буферизация, как это видно из Serial.available().

Аппаратное обеспечение USB, присутствующее в Teensy, может буферизовать 2 пакета USB. Серийный.доступный() сообщает количество непрочитанных байтов только из первого пакета. Если пакет содержит только 1 байт, Serial.available() вернет 1, независимо от сколько байтов может присутствовать во 2-м пакете или сколько байтов может быть ожидание большего количества пакетов, все еще буферизованных хост-контроллером USB ПК.

Этот код не будет работать на Teensy, когда ПК передает ожидаемое 11-байтовое сообщение. более чем в 1 USB-пакете.

// Это может не работать на Teensy, если USB-пакеты имеют размер менее 11 байт!
логическое значение getNumbersFromSerial() {
 while (  Serial  . available() < 11) { ;} // ожидание 11-байтового сообщения
 если ( серийный номер  .read() == '@') {
  time_t  pctime = 0;
 для (целое я = 0; я < 10; я ++) {
 char c =  Серийный номер  .read();
 если (с >= '0' && с <= '9') {
 pctime = (10 * pctime) + (c - '0') ; // преобразовать цифры в число
 }
 }
 компьютерное время += 10;
 DateTime.sync (время ПК); // Синхронизируем часы с полученным временем
 вернуть истину; // вернуть true, если получено сообщение о времени
 }
 вернуть ложь; //если нет сообщения, возвращаем false
}
 

Этот код можно переписать так, чтобы он всегда считывал байт, когда Serial. available() возвращает ненулевое значение.

// Это всегда будет работать на Teensy, не зависит от размера буфера
логическое значение getNumbersFromSerial() {
 целое число = 0;
 char buf[11];
 в то время как (количество < 11) {
 if (  Serial  .  available()) { // получаем все 11 байт в "buf"
 buf[count++] =  Серийный номер  .read();
 }
 }
 если (buf[0] == '@') {
  time_t  pctime = 0;
 for(int i=1; i < 11; i++) {
 char c = buf[i];
 если (с >= '0' && с <= '9') {
 pctime = (10 * pctime) + (c - '0') ; // преобразовать цифры в число
 }
 }
 компьютерное время += 10;
 DateTime.sync (время ПК); // Синхронизируем часы с полученным временем
 вернуть истину; // вернуть true, если получено сообщение о времени
 }
 вернуть ложь; //если нет сообщения, возвращаем false
}
 

Конечно, всегда есть много способов написать программу. Версии выше выглядят для символа '@', чтобы начать сообщение, но не обрабатывать случай, когда дополнительный байты (неправильно) появляются перед 10-значным числом. Также не обязательно хранить все сообщение в буфере, так как работа может выполняться по мере того, как байты читать. Вот более надежная и эффективная версия.

 // Эта версия более надежная
логическое значение getNumbersFromSerial() {
 количество счетчиков = 0;  time_t  pctime = 0;
 в то время как (количество < 10) {
 если ( серийный номер  .

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

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