Не так давно, получив из Китая очередную партию чипов cp2102, я столкнулся с очень интересной проблемой, — внешне полученные чипы выглядели как обычно (вся маркировка на месте, чёткая, не спиленная), однако при запаивании в изделие (собственно, изделие — это вот такой USB-to-UART преобразователь) они отказывались работать, а в диспетчере устройств определялись как DW700 GPS Mini Card.
Откровенно говоря, я на китайцев очень разозлился и даже оставил продавцу на eBay гневный отзыв, поскольку буквально за несколько дней до этого у меня закончились последние запасы этих чипов и совершенно не осталось готовых преобразователей (кроме одного, которым я сам пользуюсь, но он не для продажи, поскольку слегка косячный). Однако, как оказалось, эта проблема вполне решаема и сегодня я расскажу и покажу, как именно её удалось решить.
Итак, мы впаяли микросхему cp2102, содержащую не оригинальную прошивку, в готовое устройство, подключаем это устройство к USB-порту и видим, что виртуальный COM-порт у нас не появился и ничего не работает. Что делать дальше?
ШАГ 1
Первым делом нужно установить на компьютер оригинальные драйвера, а также утилиту для кастомизации CP21xxCustomizationUtility. Всё это содержится в пакете «CP210x Software package for Windows, includes VCP drivers», который можно скачать прямо с сайта Silicon Labs (ссылка).
ШАГ 2
Следующий шаг, — нужно найти как наша микросхема определяется в диспетчере устройств и вручную установить для неё оригинальные драйвера от cp2102.
Сначала открываем диспетчер устройств и смотрим, какое устройство появляется в списке при подключении нашего устройства к USB-порту и исчезает из этого списка при отключении устройства от USB-порта. В моём случае оказалось, что cp2102 определяется как DW700 GPS Mini Card:
Далее нужно вручную установить для этого устройства оригинальный драйвер от cp2102.
Для этого, в диспетчере устройств щёлкаем правой кнопкой мыши на наше устройство и выбираем пункт «Обновить драйверы…»
Далее в открывшемся окне выбираем пункт «Выполнить поиск драйверов на этом компьютере»:
В следующем окне выбираем пункт «Выбрать драйвер из списка уже установленных драйверов»:
Далее выбираем пункт «Показать все устройства» и жмём кнопку «Далее»:
Теперь нужно дождаться пока в следующем окне появится список всех возможных устройств (построение списка может занять некоторое время, в течении которого окно будет оставаться пустым):
После этого нужно найти в списке слева производителя Silicon Labs (они все упорядочены в алфавитном порядке), а в списке вправа выбрать модель устройства «Silicon Labs CP210x USB to UART Bridge» и нажать кнопку «Далее»:
Должно появиться уведомление о том, что установка этого драйвера не рекомендуется, поскольку Windows не может проверить совместимость, бла-бла-бла, хотите продолжить установку этого драйвера? Но мы то знаем, что нам нужно, поэтому смело жмём кнопку «Да»:
В итоге появляется окно, в котором нам сообщают, что установка драйверов завершена:
В принципе после выполнения этого шага появляется индикация, микросхема оживает и ей уже можно пользоваться. Но в диспетчере она всё ещё определяется как DW700 GPS Mini Card и при подключении устройства к другому компьютеру все танцы с бубном придётся повторить. Поэтому для окончательного лечения нужен ещё один шаг.
ШАГ 3
На третем шаге нужно специальной фирменной утилитой (CP21xxCustomizationUtility) восстановить заводскую прошивку микросхемы cp2102 (без шага 2 выполнить шаг 3 невозможно, поскольку утилита в этом случае просто не увидит нашу микросхему).
Итак, — запускаем утилиту CP21xxCustomizationUtility, после чего она должна автоматически обнаружить наше устройство (которое у нас пока ещё DW700 GPS Mini Card). Далее мы заходим в меню «Settings» и выбираем Restore Silicon Labs Defaults:
В правой колонке жёлтым цветом подсвечивается, какие пункты конфигурации будут изменены (это, собственно говоря, VID/PID и Product Description). Нажимаем внизу кнопку «Program Device»:
После завершения прошивки значения в столбцах «Default» и «Value» будут совпадать и соответствовать заводским настройкам (если значения совпадают, — на ошибки в логе не обращайте внимания):
Вот и всё. Теперь устройство и на вашем компьютере, и на любом другом будет определяться как Silicon Labs CP210x USB to UART Bridge и для него автоматически будут использоваться оригинальные установленные в системе драйвера от cp2102: