avrdude ser_open() can't set com-state

При попытке загрузить скетч мигания на мою (неофициальную) Arduino Uno я получаю следующую ошибку:

avrdude ser_open() can't set com-state for "\\.\COM3"

Я программировал эту Arduino до того, как начал использовать этот же ноутбук, но не так давно. За это время я ничего не менял в Arduino IDE.

Я пробовал следующее:

Ни один из вышеперечисленных способов не устранил проблему, и все выдавали одну и ту же ошибку, как показано выше (за исключением попыток использовать разные USB-порты, которые показывали ошибку только для разных COM-портов).

РЕДАКТИРОВАТЬ: только что попробовал и Uno, и Nano на другом компьютере, и оба работали нормально. Это подтверждает, что и Arduino, и кабели, которые я использую, работают правильно.

, 👍11

Обсуждение

Драйверы Ch340 решили проблему., @Clowers Paranormal ITC


4 ответа


Лучший ответ:

10

Возможно, проблема с драйвером Windows. Используют ли ваши uno и nano ch340? (Это компонент, переводящий USB в uart (последовательные контакты atmega328). В Windows нет программного способа различать платы с помощью этого компонента. Это обычное использование дешевых клонов для снижения цены. Официальные ардуино используют второй atmega (atmega16u2 изначально поддерживает usb) вместо ch340. Разрешение Windows идентифицировать модель Arduino.

Попробуйте обновить драйвер ch340, так как у вас та же проблема с двумя платами. здесь находится страница загрузки производителя (ch341ser.exe — это пакет, который вам нужен)

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

,

Это был водитель. Для справки, я удалил драйвер с помощью диспетчера устройств, затем снова подключил Uno, и он автоматически установил правильный драйвер CH430 для меня, что именно то, что он должен был сделать на другом компьютере, поскольку к нему никогда не подключался Arduino. это раньше., @rozzy

У меня тоже сработало, я просто удалил драйвер и проверил на наличие изменений, @Nesar

Точно! Обновление Windows может стереть существующий драйвер CH341, поэтому повторная установка его исправит. Просто 1. удалите из диспетчера устройств, установив флажок, чтобы включить драйвер, затем 2. Он будет автоматически переустановлен через несколько секунд (или при следующем подключении клона Arduino)., @automorphic


2

У меня была такая же проблема, откройте порт COM и LPT в диспетчере устройств. Затем откатите драйвер, чтобы компьютер удалил все обновления драйвера. В этот момент загрузка кода выдаст «Windows не распознает драйвер» или какую-то подобную ошибку. Теперь просто отключите и снова подключите UNO и обновите драйвер. Это решило проблему для меня. Надеюсь, это поможет :)

,

Для записей, драйверы по умолчанию/ванильные [должны](https://github.com/arduino/ArduinoCore-avr/tree/master/drivers/FTDI%20USB%20Drivers) быть от FTDI. Они *могут* автоматически устанавливаться Windows, но не поставляются с [ними](https://www.catalog.update.microsoft.com/Search.aspx?q=ftdi%20driver) из коробки (поэтому вы должен быть в сети и иметь включенные обновления)., @mirh


-1

У меня такая же проблема. Я обнаружил, что это связано с картой, а не с ПК. Плата-нарушитель использует процессор ATMEGA328P_U_TH (Изображение 1). Удачная карта использует другой процессор ATMEGA328P_U (Изображение 2). Я НЕ нашел способ использовать карту ATMEGA328P_U_TH. Он не будет правильно подключаться к ПК и не позволит загрузить код из IDE на карту.

Изображение 1 Изображение 1

Изображение 2 Изображение 2

,

кстати более важным отличием является чип USB. у одного чип FTDI или CH340, у другого Atmega16u2, @Juraj

Юрай, Спасибо. Проблема, с которой я сталкиваюсь, заключается в том, что карта с FTDI не связана ни с одним ПК. Я убедился, что код драйвера CH340G загружен. Все равно безуспешно. Я хотел бы узнать, почему и внести исправления. Но у меня нет времени самостоятельно выполнять шаги по устранению неполадок., @StanB


0

У меня была такая же проблема. Мне удалось загрузить простой пример Blink, но не мою собственную программу. И я подумал, что в моей программе нет проблем, так как до этого я успешно тестировал ее на другом Arduino. Но на самом деле в этом была проблема. У меня в программе было это (для журналов консоли):

void setup() {
  Serial.begin(9600);
}

Потом я прочитал, что разные Arduino используют разную скорость передачи данных. Изначально я тестировал его на Arduino Mega, но на этот раз захотелось загрузить на «неофициальный» сайт. Arduino Nano (для которого при загрузке необходимо использовать опцию ATmega328P (Old Bootloader)).

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

Краткая статья на эту тему

,