Эта статья - новый способ "разогнать" изолированный USB-порт. Здесь приведен частный пример, а так же немного дополнительной информации про скорость USB.
Если сильно постараться, то можно ужать данную статью до мема.
![Рис.1 Краткое содержание статьи Рис.1 Краткое содержание статьи](https://habrastorage.org/getpro/habr/upload_files/187/3c0/dce/1873c0dce7dcccb91558f75845de2831.png)
Общаться и с людьми бывает небезопасно - неосторожное слово и у кого-то полыхнет, сложная мысль заставит зависнуть, а упоминание матери вообще может напрочь закоротить весь обмен информацией. С цифровой электроникой почти то же самое. USB - один из самых популярных цифровых интерфейсов для подключения чего-бы-то-ни-было, и задача его обезопасить (== изолировать) возникает часто.
Практическая часть
В 2009м году миру явили ADuM4160 - USB-изолятор. Казалось бы, чего еще желать, однако, из трёх возможных скоростей USB 2.0 (1500 Кбит/c, 12 Мбит/с, 480 Мбит/с) микросхема поддерживает только две самые медленные. Обычно этого вполне достаточно, чтобы реализовывать HID-устройства, виртуальные COM-порты. Это перекрывает практически все потребности при работе с микроконтроллерами, но сегодня мы преодолеем это ограничение. Недавно (в ноябре 2021!), Texas Instruments выпустили партию инженерных образцов микросхемы ISOUSB211.
Мне повезло заполучить пару микросхем и протестировать их работоспособность. В схемотехнике я не выдумывал ничего за границами даташита и развёл небольшую платку с прицелом на имеющийся у меня на руках корпус. Я развёл собственный изолированный DC-DC преобразователь, но для того чтобы быстрее перейти к тестам я использовал старенький SBT01L-05
![Рис. 2 Печатная плата после монтажа компонентов. Динозавры передают пакеты через гальванический барьер Рис. 2 Печатная плата после монтажа компонентов. Динозавры передают пакеты через гальванический барьер](https://habrastorage.org/getpro/habr/upload_files/9d7/240/801/9d7240801f2bf20b067672c0e9d7a6bb.jpg)
В качестве первого теста я скопировал туда-обратно файлы на флешку, получив ~23 МБайт/с (184 МБит/с) для чтения и ~10 МБайт/с (80 МБит/с) для записи (см. Рис. 3)
![Рис. 3а Скорость чтения и скорость записи (SanDisk Cruzer Blade USB Device) через изолятор Рис. 3а Скорость чтения и скорость записи (SanDisk Cruzer Blade USB Device) через изолятор](https://habrastorage.org/getpro/habr/upload_files/d97/c4b/779/d97c4b7791f4ebaa0a8c6b6275c962ef.png)
![Рис. 3б Скорость чтения и записи (SanDisk Cruzer Blade USB Device) без изолятора Рис. 3б Скорость чтения и записи (SanDisk Cruzer Blade USB Device) без изолятора](https://habrastorage.org/getpro/habr/upload_files/c4a/db8/f48/c4adb8f48bfb79156d6e8775bc966cc5.png)
Я результатом доволен скорость High Speed взята! Ура! Спасибо за внимание! Фото поделки в сборе на рисунке 4.
![Рис. 4 Вид готового устройства Рис. 4 Вид готового устройства](https://habrastorage.org/getpro/habr/upload_files/ba7/789/b32/ba7789b32d544eba7333df9f11d63e6d.jpg)
Факультативная теоретическая часть
Тэкс, почему-то некоторые не расходятся... Дайте угадаю, у вас в голове сейчас что-то такое: "Так, @coolebyak, ты говорил про USB 2.0 High Speed, у которого 480 Мбит/с или 60 МБайт/c. А результаты-то у тебя на скриншотах меньше! Обман!"
Я рад, что вы остались, потому что это действительно может сбить с толку. Лаконичный ответ на этот вопрос лежит в сети уже с 2011-го. По сути, я сейчас повторю, что ответили вот в этом посте, но только переводя с английского.
USB 2.0 использует фреймы в 1 мс, а в режиме High Speed (480 Мбит/с) они делятся на 8 микрофреймов. Максимальный размер пакетов, используемых запоминающими устройствами USB, составляет 512 Байт. Согласно этому очень информативному документу теоретический максимум составляет 13 пакетов на микрофрейм. Итак, теоретическая максимальная скорость USB-накопителя 2 составляет:
1000 * 8 * 512 * 13 = 53248000 ~ = 53 МБайт/с
![Рис. 5 Таблица теоретических пределов скорости передачи Рис. 5 Таблица теоретических пределов скорости передачи](https://habrastorage.org/getpro/habr/upload_files/1fa/558/0ba/1fa5580baff060f89f4502527932e1f3.png)
![Рис. 6 USB-фрейм для массовой передачи данных Рис. 6 USB-фрейм для массовой передачи данных](https://habrastorage.org/getpro/habr/upload_files/0fe/895/cbd/0fe895cbd4062b5e40c1f40e99afa5c9.png)
На практике слабым местом, как правило, является сама флешка. В качестве примера приводят временную диаграмму записи в NAND Flash (Рис. 7). Время для каждого передаваемого пакета можно разбить на три участка: 1) время для выполнения USB-передачи, 2) первичные временные затраты операционной системы (или встроенного ПО) и 3) время программирования NAND Flash.
![Рис. 7 Пример узкого места для скорости передачи данных по USB Рис. 7 Пример узкого места для скорости передачи данных по USB](https://habrastorage.org/getpro/habr/upload_files/bfb/832/2ac/bfb8322acfaad87e7d4b9b2f3baf6a20.png)
Получается, для моей видавшей виды флешки результаты вполне достойные. Главное, что они выше 1.5 МБайт/с.
Результаты и выводы
Испытание высоким напряжением еще предстоит, пока что могу сказать лишь, что электрический разряд от шерстяного свитера микросхема выдерживает. Прототип изолятора получен и успешно испытан на флешках, камерах, внешних аудиокартах. Что очень меня радует, чем делюсь и хвастаюсь здесь. Надеюсь, Texas Instruments наладят производство и в скором времени эти микросхемы снова появятся в продаже и будут дешевле ~13$. Надеюсь, было полезно. Теперь точно Спасибо за внимание!
P.S.
Пример, как задачу изолирования USB 2.0 High Speed решить супер дорого. 2*ULPI, 2*ПЛИС, быстродействующие оптопары и не забывайте - кто-то это программировал.
![](https://habrastorage.org/getpro/habr/upload_files/ea5/2da/d29/ea52dad293c53216d4815441df95f170.jpg)
P.P.S.
Прикладываю схему. На ней отсутствует разработанный мною изолированный DC-DC, т.к. я его ещё не тестировал.
![Схема принципиальная Схема принципиальная](https://habrastorage.org/getpro/habr/upload_files/dde/057/adf/dde057adf6dbd26bd15e85f30221bb33.png)