USB-контроллер
USB-контроллер в составе платформы персонального компьютера обеспечивает коммуникацию с периферийными устройствами, подключенными к универсальной последовательной шине. USB-контроллер является интеллектуальным устройством, способным взаимодействовать с оперативной памятью в обход центрального процессора в режиме прямого доступа к памяти.
По способу интеграции контроллер для USB-шины может быть задействован в составе системной логики или в виде дискретного чипа как на самой на системной плате, так и на плате расширения. По способу подключения USB-контроллер может быть выполнен для PCI-шины, либо для шины PCI Express.
В рамках спецификации USB 1.1 существуют две реализации контроллера для USB-шины: UHCI (Universal Host Controller Interface, создан Intel для USB 1.0) и OHCI (Open Host Controller Interface), которые отличаются методом доступа к регистрам. Регистры UHCI находятся в пространстве портов ввода-вывода, а регистры OHCI адресуются в пространстве памяти. Контроллер OHCI более интеллектуален по сравнению с UHCI. Это касается его способности освободить центральный процессор от выполнения рутинных операций по передаче данных по USB-шине. Оба контроллера используют 32-х битную адресацию в пределах младших 4 Гб адресного пространства, ни один из них не поддерживает 64-битный режим адресации.
Для USB 2.0 был разработан EHCI (Enhanced Host Controller Interface), который поддерживает только работу на высокой скорости (high speed, 480 Мбит/с). В EHCI-контроллере с помощью разделенных транзакций (Split Transaction) реализована также поддержка низкоскоростных интерфейсов USB 1.1 для работы с более медленными устройствами [1] .
Для USB 3.0 используется универсальный интерфейс XHCI (eXtensible Host Controller Interface), который поддерживает все скорости обмена данными. [2]
USB Host контроллер VinculumII. Запись на Flash.
Связь по USB происходит по принципу Главный-Подчинённый. В качестве подчиненных (USB Slave) обычно выступают периферийные устройства такие ка флешки, принтеры, клавиатуры, разрабатываемые электронщиками устройства и прочее. В качестве Главного (USB Host) обычно выступают компьютеры.
Если нам нужно передать информацию от нашего устройства на компьютер, то для реализации USB протокола подойдут как внешние микросхемы преобразователей, так и собственные средства самого контроллера. Но вот если данные нужно передать на флешку, то тут уже необходимо воспользоваться USB-Host контроллером. Можно воспользоваться контроллерами с внутренним USB-Host (например PIC24), ну или воспользоваться специальной микросхемой. Одну такую микросхему и рассмотрим — FTDI VinculumII.
- 16-разрядное процессорное ядро, выполненное по Гарвардской архитектуре;
- два блока USB, которые могут выполнять функции периферийного устройства или хост-контроллера;
- 256 кбайт флэш-памяти размером (128к х 16бит);
- 16 кбайт ОЗУ (4к х 32бита);
- набор интерфейсных модулей (UART, 2 SPI slave, SPI master, параллельный 8? разрядный FIFO, ШИМ, отладочный интерфейс);
- внешний кварц на 12МГц (частота ядра 12, 24, 48 МГц);
- мультиплексор, предназначенный для коммутации внутренних блоков контроллера и внешних выводов;
- микросхемы доступны в корпусах LQFP и QFN с количеством выводов для каждого типа 32, 48 и 64.
Здесь хотелось бы поподробнее остановиться на мультиплексоре выводов микросхемы. Он позволяет подключать интерфейсные линии от различных протоколов к различным ногам контроллера (например одну и туже линию можно подключить с разных сторон контроллера). Это очень упрощает разводку платы. Да и к тому же если каждую интерфейсную линию выводить на отдельную ногу, то понадобилось бы слишком много ног, учитывая обилие интерфейсов в данном контроллере. Второй особенностью мультиплексора является работа с портами ввода-вывода, которые можно настроить не только как вход/выход, но и установить рабочий ток вывода, Pull-up или Pull-down, и даже Триггер Шмидта.
Что же имеем в сухом остатке. Отличная микросхема имеющая большОе количество различных интерфейсов, позволяющая построить различные комбинации преобразователей (мостов) интерфейсов. Главная особенность микросхемы наличие USB-Host, позволяющей работать с флешками.
И вот теперь, когда мы такие радостные, думаем сколько удивительных девайсов можно на ней сделать, пора вкусить правду-матку.
Тут нужно упомянуть еще один момент — модуль имеет выходной разъем PBS-2.0, а на своей плате я использовал более родной PLS-2.54. Поэтому пришлось изготовить небольшой переходник.
Изолентой заклеен один маленький, но ОЧЕНЬ мерзкий светодиодик.
Сюрприз номер два — микруха работает на собственной операционной системе реального времени (RTOS VOS), соответственно и все прошивки для нее необходимо писать с использованием этой RTOS.
Сюрпризик номер три — напрямую работать с ресурсам и контроллера не возможно. Чтобы обратиться к чему либо необходимо использовать API-функции и драйверы, поставляемые производителем в закрытом виде. Все что нам доступно — это файлы инклудов, в которых можно посмотреть какие есть функции и как к ним обратиться.
Ну и самый большой сюрприз (и самый большой минус) это среда разработки (IDE). Более убогой, тупой, и неудобной среды я не видел уже давно. Если бы компания FTDI располагалась в России, то «программистами» там бы работали внучатые племянники главного бухгалтера и начальника отдела кадров, этакие «супер-пупер-школоло-программеры». Это отличный пример того как хорошую аппаратную часть наглухо губит программное обеспечение. Сам от себя не ожидал сколько новых матерных оборотов могу я придумать пока не увидел ЭТО IDE.
- полностью неудобный вкладочный интерфейс. Имея такое небольшое количество функций можно было их расположить на одной панели, чтобы не приходилось бегать по вкладкам;
- минимальное количество настроек самой программы, и отсутствие необходимых настроек (например постоянный запрос на пере-сохранение файлов);
- на редкость тормознутый интерфейс, например вызов меню по правой кнопки мыши (для COPY/PASTE) занимает от 1 до 2 секунд;
- постоянные и многочисленные запросы на сохранение файлов и прочее. Причем не все из них срабатывают по кнопке Enter, хотя кнопка и подсвечена все равно придется клацать по ней мышкой;
- при отладке не отображается место выполнения программы. Даже если поставить на паузу выскочит дизасемблинг программы, а не место останова программы в си-листинге;
- просмотр значений переменных возможно только в месте ее обработки, что становится проблематичным, так как нет отображения места выполнения программы. Для того чтобы поймать переменную нужно постоянно нажимать Старт-Пауза и надеяться на то что переменная отобразится, а учитывая общую тормознулось интерфейса этот процесс мягко говоря ……………………….
- просмотр переменных возможен только в HEX и DEC виде. Просмотр переменной в двоичном виде ОЧЕНЬ БЫ НЕ ПОМЕШАЛ.
- вероятность того что сработает установленный Breakpoint крайне мала. Например, в программе которая просто мигает светодиодом я наставил 3 бряка и так и не дождался их отработки хотя светодиодик исправно себе моргал. Опять же данная фишка сводит на нет все попытки посмотреть значение переменных. Единственную закономерность для срабатывания бряков которую удалось уловить — так это расстановка бряков с последующей компиляцией проекта (даже если ничего не менялось, а просто добавился новый бряк). Бряки поставленные во время отладки не срабатывают, да и просто иногда не ставятся и не отключаются;
- ввиду всего вышесказанного невозможно определить состояние переменных во время зависания прошивки или при выполнении «вечного цикла» в конце программы;
- ну и самое интересное — настройка вывод производится через wizard (IOMUX). Результат настройки записывается в специальный файл. Так вот если закрыть программу, запустить, снова зайти в wizard, то настраивать все выводы придется по новой. Поэтому либо настраивать все ноги изначально правильно и больше туда не лезть, либо при попытке, например, изменить направление одного пина, придется все настройки производить по новой.
- имеющиеся примеры прошивок мало применимы в реальной жизни, так как неполноценны и однобоки. Но с этим еще можно мириться ведь это примеры. Но вот с тем, что примеры содержат ошибки мириться нельзя.
Плюсуем сюда еще кучу мелких и тупых недочетов на которые уже тупо забиваеш со временем.
Вот такая вот «среда разработки».
Просто эксперимент.
Перед началом хотелось рассказать еще об одной забавной фиче. Не буду рассказывать как я дошел до проведения данного опыта, но я решил проверить реальную частоту работы ядра микросхемы.
Для примера возьмём контроллер PIC16F876A, с внешним кварцем на 16 МГц. Как известно PIC16 делит внешнюю частоту на 4. Получаем частоту работы ядра — 4 МГц.
Закинем в контроллер программу-мигалку:
Подключив осциллограф к RB2 получим вот такую картинку.
Частота переключений светика — 666653 Гц. Получается что на переключение требуется 6 тактов, Ну или 24 относительно кварца на 16 МГц.
Получаем частоту переключений светика — 126142 Гц. Уж не знаю делит ли VinculumII частоту или нет, но получается что относительно внутренней частоты в 48 МГц на мигалку требуется 380 тактов О_о. Даже если рассчитывать относительно внешнего кварца в 12 МГц то потребуется 95 тактов. Это просто «ППЦ» какой-то.
После данного опыта отпал вопрос «Почему на такой большой скорости работы минимальная функция временной задержки 1 мС?».
Так что не только «средство разработки» тормозное, но и сам контроллер, по крайней мере в вопросе выполнения программы. Возможно аппаратные средства интерфейсов не такие тормознутые.
Пишем Firmware.
Первоначально я бы посоветовал пройти на сайт http://www.ftdichip.com/ и накачать оттуда даташитов, апнотов, примеров и прочего. Оттуда же тянем Vinculum II Toolchain 2.0 (SP1).
- Vinculum II — новый хост-контроллер USB от FTDI.
- Vinculum II — с чего начать.
- Vinculum II — с чего начать 2.
Для первоначального вкатывания в тему разберем процесс создания нового проекта и опробуем процесс записи на флешку на примере HelloWorld.
Для начала рассмотрим процесс создания нового проекта.
Запускаем Vinculum II IDE. Делаем New -> App Wizard Project.
Во вкладке New Project указываем Название проекта, Папку для сохранения, И название прибора (допустим).
На вкладке Target Module можно выбрать одну из отладочных плат, ну или как в нашем отдельную микросхему Discrete -> 32 Pin.
На вкладке Driver подключаем необходимые драйвера — USBHost2, GPIO Port A, FAT File System, BOMS (USBHost 2), stdio, string.
А вот и самая интересная вкладка IOMUX — управление мультиплексором портов. Выводы USB портов и питания помечены серым и не могут быть изменены. А вот линии портов или же каких-нибудь интерфейсов могут быть распределены по соответствующим ногам микросхемы.
Для примера закинем PORT_A.0 на 23 ногу, а PORT_A.2 на 31. Обе ноги настроим на выход (к ним подключены светодиоды) и подключим Pull-Up. Кроме направления здесь также можно задать его рабочий ток, скорость переключения, триггер Шмидта, подтяжки к питанию.
ВАЖНО. Лучше всего сразу все настроить правильно и не открывать больше данного Wizard’а. Так как если переоткрыть программу и зайти сюда опять, то все настройки портов сбрасываются и придется все настраивать заново. ХОТЯ ВСЕ ЭТИ НАСТРОЙКИ СОХРАНЯЮТСЯ В ОТДЕЛЬНЫЙ ФАЙЛ.
На вкладке Kernel ничего не трогаем. Объяснение здешних параметров есть в указанных ранее русскоязычных статьях.
Один момент — параметр CPU Speed устанавливает внутреннюю частоту микрухи. Основное назначение снижения внутренней частоты — это снижение тока потребления.
На вкладке Threads опять же ничего не трогаем.
Так как внутренняя RTOS многозадачная, то тут можно создать потоки и настроить из приоритет.
На вкладке Summary отображается результат всех наших действий.
Нажимаем кнопку Finish.
Если по какой то причине вы решите все же еще раз попасть в Wizard, то это можно сделать нажав кнопку Modify на панели File.
Открыв файл Project_2.c мы увидим ОЧЕНЬ много автоматически сгенерированного кода, созданного на основе настроек Wizard’a. Если вкратце то автоматом создаются функции настройки RTOS, создания потоков, настройка периферии, работы с драйверами. Некоторое объяснение можно найти в упомянутых статьях.
ВАЖНО: Important: Sections between markers «FTDI:S*» and «FTDI:E*» will be overwritten by the Application Wizard. Это означает, что нельзя ничего писать между тегами «/* FTDI:S* */» и «/* FTDI:E* */» ибо все что находится между ними может в любой момент переписано Wizard’ом. По личному опыту скажу что не только им — я так однажды большого куска кода недосчитался, хотя wizard я не запускал и код был расположен за пределами данных тегов.
Сейчас нас интересует место в конце файла.
Именно в этой функции будет располагаться наш код. Название функции firmware() может быть и другим, оно указывается в wizard’е на вкладке Threads в столбце function.
Для начала переопределим переменную tx_buf, заменив на:
Ну вот потому что надо мне записывать по 65 байт )))). Вы можете это и не делать.
На основе примера HelloWorld запишем следующее содержание функции. От оригинала она будет отличаться только работой со светодиодами и дополнительными комментариями.
- пока флешка не подключена, мигает светодиод на ноге PORT_A.2 (красный), с частотой 2 Гц;
- когда подключается флешка происходит монтирование устройства, подключение раздела FAT, подключение библиотеки stdio, создание/открытие файла TEST.TXT (с установкой курсора в конец файла), производится запись тестовой строки в файл (для определения времени записи мигает белый светодиод на PORT_A.0), далее закрывается файл, размонтируется FAT и BOMS. В конце этого цикла белый светодиод зажигается на 100 мС. Потом следует пауза в три секунды и все повторяется по новой.
- если флешку отключить, то опять включается мигалка красным светодиодом.
Компилируем, запускаем, проверяем, радуемся процессу, проверяем более углубленно, недоумеваем, тупим, разбираемся.
А разбираться приходится вот в чем — если подключить флешку и дождаться прохождения 1 цикла записи, и сразу отключить, то выясняется что файл создался только вот записей в нем нет. После десяти таких проверок файл был по-прежнему пуст.
Можно конечно долго рассказывать как именно я извращался над программой, но не буду. Важно то, что удалось выяснить. А именно то не записывается именно первая строчка, а точнее она записывается только при следующем проходе цикла (это удалось выяснить только запись номера строки в файл). Опять же путем долгих и неистовых пыток программно-аппаратных средство получилось что хоть как то гарантировать только путем ПОВТОРНОГО ПЕРЕМОНТИРОВАНИЯ BOMS. Однако хоть это и редкостная тупость, но пришлось добавить в код вот такие вот две строки:
Ок! С тупостью разобрались, переходим к маразму.
Для записи информации в файл существует несколько функций. Одна из них — fwrite() — была рассмотрена в примере. Но дабы познать все прелести форматированного вывода строк в библиотеке имеется такая замечательная функция как fprintf(), кстати именно с ее помощью удалось вывести нумерованные строки и определить «тупость». Эта функция так же была подвержена «тупости», но сейчас не об этом.
Индикация процесса записи была сделана тоже не просто так! Чисто эксперимента ради, было записано время записи функцией fwrite() и fprintf(), дабы определить самую быструю (потому что так надо)))).
Первый график показывает процесс записи с помощью функции fwrite().
Как видно все пики одинаковые и длительность записи (65 байт) составляет 4-6 мС. Для сравнения широкий импульс слева это тот самый импульс в 100 мС в конце цикла.
Вторая группа графиков показывает процесс записи с помощью функции fprintf() (те же 65 байт).
Вот тут то маразм крепчает. Из графиков видно, что импульсы записи не равномерны, каждый пятый импульс в 8.5 раз шире других. А именно обычный процесс записи длится 300 мС. А каждый пятый цикл записи длится
2.5 СЕКУНДЫ. Повторюсь за один цикл записывается строка длинной 65 байт. Для сравнения импульс слева это тот самый импульс в 100 мС в конце цикла.
Что это за маразм такой и как он лечится я так и не понял, скажу только то что эти опыты повторялись неоднократно и с различным временем подключения флешки. Результаты были идентичные.
Вот так вот весело и неоднозначно происходит запись информации на флешку с помощью микросхемы VinculumII.
Еще небольшая ложка дегтя в бочку дегтя!
Для этой микросхемы на сайте производителя имеет большое количество примеров. Вот только вряд ли они пригодятся кому-то в первозданном виде, так что придется все равно лезть в потроха этого «кода». Качество этих примеров тоже не на высоте, например в одном из примеров не производилась проверка длинны входного массива данных, и послав на 1 байт больше удалось наглухо повесить микросхему до ребута.
В другом примере обработка подключения флешки производилась только в начале программы и больше туда не возвращалась — в итоге повторно вставив флешку ничего не происходило. Чтобы добиться от этого примера хоть какой то внятной работы пришлось в конец программы добавить варварский сброс программы при извлечении флешки (vos_reset_vnc2();).
Так же чего мне никак до сих пор не удалось добиться — так это передачи от SPI_Slave, хотя прием вроде работает. Опять же в примерах SPI_Slave описан только для приема, а для передачи по SPI есть пример только для SPI_Master. От Slave не удалось добиться хоть какого нибудь дерганья ножками. Пока буду обходиться без него, ибо задачи позволяют.
Так что приводимые производителем примеры можно рассматривать ТОЛЬКО КАК ОЗНАКОМИТЕЛЬНЫЕ.
Что такое USB контроллер, для чего он нужен и какая от него польза
Наверное каждый человек дома имеет компьютер. В последнее время компьютер для многих людей стал важнее, чем телевизор или даже холодильник. Действительно, с приходом в нашу жизнь различных новых технологий мы не представляем свою жизнь без нашего железного друга.
Компьютер значительно упрощает нам жизнь. Ведь при помощи компьютера можно делать все. Платить за коммунальные услуги, делать покупки узнавать разные новости, общаться с друзьями и родственниками, которые живут за границей, ну и конечно же любимое дело которых в наше время это играться в игры.
Многие используют компьютер как носитель информации, именно для них придумали контроллер чпу Mach3. Это обычный USB контролер который позволяет передавать информацию с планшета, телефона или флешки на компьютер. Mach3 является очень полезным для тех, кому необходимо работать с большим количеством информации на каждый день. Например, крупные бизнесмены или программисты не могут представить свою жизнь без такой штуки как USB контроллер.
Кстати, для любителей игр эта вещь также будет очень полезной. Раньше, чтобы перебросить игру, которая занимала бы много памяти, необходимо было снимать жесткий диск идти к товарищу вставлять этот жесткий диск в компьютер, и таким вот методом отдавались игре. Сейчас же все намного проще. Взяли флешку на 32 Гб подключили ее к контроллеру, сбросили игру, пришли домой распаковали ее и все готово.
Как вы уже поняли USB контролер — это незаменимая вещь для всех, кто как-то связан с переносом информации. Самое приятное то, что стоимость этого контролера низкая, поэтому его себе может позволить себе практически каждый. Так что купите себе эту замечательную вещь и все проблемы с передачей данных отпадут сами собой.
Контроллер универсальной последовательной шины USB
Раньше порт USB нужен был в основном для подключения к ПК или ноутбуку клавиатуры, компьютерной мыши, а также различной офисной техники – принтеры, сканеры. Сегодня же никого не удивить джойстиками, смартфонами и планшетами, подключенными к компьютерной технике. Но по разным причинам происходит так, что ни смартфон, ни планшет, ни другие устройства, подключаемые к ПК по USB-порту, не работают из-за разъема. Нередко к этому приводит контроллер универсальный последовательной шины USB Windows 7. Прежде чем переходить к решению конкретной проблемы, необходимо разобраться, что такое контроллер шины и почему с ним возникают неисправности.
- Что такое контроллер шины USB
- Устанавливаем драйвер
- Другой способ поиска драйвера
- Поиск программами
- Заключение
Что такое контроллер шины USB
Универсальная последовательная шина – распространенный интерфейс. Подключаемые через USB устройства способны питаться через шину, отсюда отпадает необходимость использовать сторонние блоки питания. Контроллер входит в число платформы персонального компьютера. По способу подключения отличают такие его разновидности – PCI и для шин PCI Express. В целом, это интеллектуальное устройство, способное в режиме сквозного доступа взаимодействовать с оперативной памятью без участия процессора. Для его исправной работы требуется драйвер – управляющая программа. Если такой программы не будет в системе, то и подключать устройства к USB будет бессмысленным занятием.
Понять о наличии проблем с ним можно через «Диспетчер устройств». Для этого зайдите в «Мой компьютер», нажмите правой кнопкой мыши по пустой области и выберите «Свойства». Откроется отдельное окно, в левой колонке которого нужно выбрать нужный нам раздел.
После открытия диспетчера проверьте вкладку «Контроллеры универсальной последовательной шины», чтобы в ней не было компонентов, напротив которых фигурирует желтый восклицательный знак. Если для контроллера не установлен драйвер, он может находиться в списке «Другие устройства» с желтым восклицательным значком.
Также можно по нему нажать ПКМ и выбрать свойства. В открывшемся окне появятся сведения об ошибке.
Это значит, что если не работает ни один USB-порт на лицевой и задней панели компьютера, в первую очередь следует проверять наличие установленного в системе драйвера. То есть, неработающий разъем еще не означает его физическую неисправность. Ситуации бывают разные, может не работать как всего один USB, так и все вместе сразу.
Мы разобрались с тем, что такое контроллер универсальной последовательной шины USB, теперь перейдем к способам устранения неисправностей, связанных с его работой.
Устанавливаем драйвер
Если драйвер не установлен в Windows, то верным решением проблемы станет его инициализация. Чтобы найти нужную программу, необходимо узнать модель чипсета. Соответствующая информация указана в документации к материнской плате. Но может быть так, что документации уже давно не осталось. Тогда используем интерфейс Windows.
Запускаем программу «Выполнить» нажатием Win+R и в строку вводим cmd, после жмем Enter.
Откроется командная строка. В ней поочередно нужно выполнить следующие команды :
wmic baseboard get Manufacturer
Спустя несколько секунд система должна дать ответ на запрос о производителе:
Чтобы узнать точную модель, выполним другую команду:
wmic baseboard get product
Нужные сведения мы получили. Теперь можем открыть браузер, зайти в поисковую систему и набрать точное название модели. На первой позиции видим нужный нам сайт со страницей, посвященной конкретной модели устройства.
Интерфейс сайта отличается от производителя к производителю, но в целом нужно искать раздел чипсет, где находятся драйверы для загрузки.
Жмем кнопку «Загрузить» и дожидаемся окончания загрузки. В папке, куда загружаются все файлы с интернета, находим инсталлятор или архив. Дальше просто запускаем его или разархивируем в зависимости от того, файл с каким расширением был скачан. Если архив, то разархивировав его, находим setup и запускаем его.
Другой способ поиска драйвера
Найти нужную программу можно и другим способом. Возвращаемся в «Диспетчер устройств», находим наш контроллер с желтым восклицательным знаком, открываем его свойства и переходим во вкладку «Сведения».
Дальше под свойствами из разворачивающегося списка выбираем «ИД оборудования».
Переходим на крупнейший ресурс поиска драйверов по ИД оборудования. В поисковую строку вставляем сначала первый ИД из списка – нет результата, копируем и ищем по второму и так по порядку до получения нужного результата.
Здесь нужно выбрать нашу операционную систему и нажать кнопку «Скачать».
Постарайтесь найти самый последний доступный драйвер для устройства. Как только нашли, загрузите его на свой компьютер. После загрузки на ПК компоненты будут находиться в архиве. Нужно достать их оттуда. Вот только они будут не в привычном виде установочного файла. Два отдельных компонента устанавливаемых вручную. Но сделать это одним щелчком мыши не получится. Придется приложить немного больше усилий.
Возвращаемся к диспетчеру, жмем ПКМ на контроллере и выбираем «Обновить драйверы».
В новом открывшемся окне выбираем второй вариант:
Теперь жмем кнопку «Обзор» и находим папку или отдельные файлы, которые были скачаны с сайта.
Если система распознает установочные файлы, пройдет их инициализация, после чего контроллер исчезнет из списка других устройств и окажется на своем месте. В редких случаях устройство с ошибкой не исчезает. Тогда удаляем его из списка, опять же, нажав предварительно по его названию ПКМ, потом «Удалить» и в верхнем меню жмем «Действие» > «Обновить конфигурацию оборудования».
Теперь контроллер должен обратно появиться в списке, но уже без ошибки. Как правило, этих действий достаточно, чтобы решить проблему и вернуть портам USB работоспособное состояние. Если этого не происходит, то проблема может скрываться глубже, то есть на аппаратном уровне. Это уже неисправность другого значения, а значит, для ее устранения потребуется помощь опытного компьютерного специалиста.
Поиск программами
Пользоваться автоматическим поиском управляющих программ следует в редких случаях. Все дело в том, что система может отыскать и установить не самую актуальную версию драйвера. В результате контроллер не будет работать или же возникнут другие трудности с ним. Но когда ничего не помогает, автоматический поиск может решить проблему. Чтобы воспользоваться им, необходимо установить одну из программ, способную отыскивать в сети драйверы и устанавливать их. Такой утилитой является, например, DriverPack Solution. У нее одна из самых крупных баз поддерживаемых устройств и софта. Поэтому с помощью этой программы вам наверняка удастся отыскать драйвер для чипсета и контроллера. Пользоваться ей просто, но если возникли трудности, стоит ознакомиться с инструкцией по работе с DriverPack Solution. Также есть другие альтернативы, но они менее распространены среди пользователей. Но, опять же, скачать драйвер контроллера универсальной последовательной шины USB лучше всего самостоятельно.
Заключение
После прочтения материала должно быть понятно, что такое контроллер последовательной шины и почему он может не работать. Если в системе не будет нужного драйвера, то работа портов USB прекратится. Правильный вариант решения – отыскать управляющую программу по ИД оборудования или на сайте производителя материнской платы. После его скачивания и установки будут обеспечены необходимые условия для нормальной работы компьютерного оборудования.