36

这是我尝试运行我的 ARDUINO 程序时遇到的主要错误。完整的错误列表如下:

avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_ReceiveMessage(): timeout
avrdude: stk500v2_getsync(): timeout communicating with programmer

我的代码如下:

int led=13;
void setup()
{
    pinMode(13,OUTPUT);
}

void loop()
{
    digitalWrite(13,HIGH);
    delay(1000);
    digitalWrite(13,LOW);
    delay(1000);
}

我已尝试更新驱动程序(它们已完全更新)并下载了一些程序。我有 Windows 7,我的 arduino 是 MEGA 2560。它显示在设备管理器中,我的所有连接都是正确的。绿色 PWR 灯亮,闪烁的 L 灯也亮。更新时 RX 和 TX 灯闪烁。我几乎尝试了网络上的所有内容。问题是什么?

4

14 回答 14

20

Mega 2560 出现此错误的另一个可能原因是您的代码连续三个感叹号。也许在最近添加的字符串中。

连续 3 个爆炸标记会导致 Mega 2560 引导加载程序进入无法完成编程的监控模式。

“!!!” <--- 破坏 Mega 2560 引导加载程序。

要修复,请拔下 Arduino USB 以重置 COM 端口,然后仅使用两个感叹号或之间的空格或其他任何内容重新编译。然后像往常一样重新连接 Arduino 和编程。

是的,昨天被我咬了,今天我找到了罪魁祸首。这是一个包含更多信息的链接:http: //forum.arduino.cc/index.php?topic=132595.0

于 2015-03-19T00:16:06.143 回答
15

该错误消息基本上意味着编程器无法联系设备上的引导加载程序;您尝试上传的代码与问题无关。

导致这种情况的原因可能多种多样,一些可能的问题:

  1. UART通信

    • 正在闪烁,所以希望您没有使用错误的端口。不过,可能值得再次检查,有时 USB COM 设备安装在奇怪的端口号上。

    • 将 TX 连接到 RX(如果可能,将它们与 AVR 断开)然后在 COM 端口上打开一个终端,如果您键入字符,您应该会看到回显的字符。如果你不这样做,芯片的上游有问题,它可能是通信芯片(我认为 Arduino 2560 出于某种原因使用辅助 AVR 而不是 FTDI,因此它的软件或硬件)

  2. ATmega*引导加载程序

    • 由于某种原因,AVR 没有执行引导加载程序。如果程序员在尝试连接之前没有重置 micro,这可能是原因。在程序员尝试连接时尝试重置 AVR(按下并释放按钮)。有时,在紧密循环中运行的软件会阻止引导加载程序连接。

    • 除此之外,保险丝可能已经弄乱或代码被删除了。您需要重新刷新引导加载程序和适当的保险丝,再次查看您设备的相应信息页面。

  3. 仅限 Arduino Mega 2560:ATmega8U/16U 软件

    • 可能无法正常工作,需要重新编程。请参阅信息页面上的编程部分,您将需要计算机上的固件和与 Atmel 兼容的 DFU(设备固件更新)软件来重新刷新目标。
  4. 电路板、AVR 或 FTDI 芯片的硬件损坏

    • 你被冲洗了;需要一个新的芯片。

查看此论坛帖子以获取更多想法。

于 2013-10-28T22:00:06.467 回答
7

我收到此错误是因为我没有在 avrdude 命令行中指定正确的程序员。如果您使用的是 Arduino 板,则必须指定“-c arduino”。

此示例命令读取 hfuse 的状态:

avrdude -c arduino -P /dev/ttyACM0 -p atmega328p -U hfuse:r:-:h
于 2014-02-05T11:29:14.530 回答
4

据我所知,这个错误出现在不同的场景中

  1. 您选择了错误的端口,或者根本没有。转到工具>端口并选择与您的 Arduino 连接的 com 端口
  2. 您选择了错误的板。转到工具>板并寻找合适的板
  3. 你有这些 arduino 的副本之一,或者你没有在微控制器上安装引导加载程序。我不知道这个问题的解决方案!如果您知道,请编辑我的帖子并添加说明。
  4. (仅限 Windows)您没有安装正确的驱动程序。您需要手动更新它们。
  5. 有时当您将电线连接到电路板时,会发生这种情况。您需要将电路板与已安装的任何面包板或电线分开,然后再次尝试上传。可用于串行通信的引脚 0 (RX) 和 1 (TX) 似乎存在问题,最好在上传代码时保持空闲。

  6. 有时它是随机发生的,没有特定的原因!

互联网上有各种各样的解决方案,有时很难用魔法来区分!也许 Arduino 团队应该考虑更好的编译器错误,帮助用户区分这些不同的原因。

同样的问题发生在我身上,上面的解决方案都没有奏效。发生的事情是我使用的是 Arduino uno,一切都很好,但是当我购买 Arduino Mega 2560 时,无论我尝试上传什么草图,我都得到了错误:

avrdude: stk500v2_ReceiveMessage(): timeout

它只是在我的一台 Windows 计算机上,而另一台开箱即用。

解决方案:

解决我的问题是转到工具>板>板管理器...然后在打开的窗口的左上方选择“类型”部分中的“可更新”。然后选择列表中的项目并按右侧的更新。

我不确定这是否会解决每个人的问题,但它至少解决了我的问题。

于 2017-07-18T12:59:40.500 回答
0

如果使用 ino 命令行:

ino upload

可能是因为您同时使用了arduino软件,尝试将其杀死。

于 2014-11-18T20:01:30.050 回答
0

我从 Arduino setup 运行此代码,将
串口更改为 COM13后得到相同的错误解决
GO TO Option
tool>> serial port>> COM132

于 2014-08-21T09:24:38.350 回答
0

这不是一个真正的解决方案,但它可以帮助其他人。不像尼克对我说的那样,这是由于我的程序中的代码。我有大型 ADK 模型。该问题与用于处理和解析从 USB 连接到 Android 的返回字节 [] 的 switch 语句相关联。它非常奇怪,因为它每次都能完美编译,但正如 OP 所说的那样会失败。我评论了它,它工作得很好。

于 2014-02-02T01:38:45.447 回答
0

打开终端并输入:

$ sudo usermod -a -G dialout 

(此命令是可选的)

$ **sudo chmod a+rw /dev/ttyACM0** 

(此命令必须成功)

于 2020-02-16T17:09:39.937 回答
0

我遇到了同样的问题,就我而言,解决方案是使用 Windows 10 设备管理器上的 Windows 更新更新 USB 串行驱动程序。不需要下载特定的驱动程序,我只是让 windows update 找到合适的驱动程序。

于 2019-12-09T13:39:05.393 回答
0

确保串行监视器没有运行并且没有读取/写入dev/tty/S0(或您正在使用的任何端口),这可能会导致上传干扰。

于 2019-01-14T23:10:13.183 回答
0

我已直接在笔记本电脑中连接到 USB 端口,超时问题已得到解决。

以前通过端口复制器尝试过,但它甚至无法识别 arduino,因此我选择了错误的端口 - 导致超时消息。

因此,请确保它对您的操作系统可见。

于 2017-06-19T20:50:42.587 回答
0

还没有提到的是,当波特率设置不正确时也会出现此消息......对于Arduino,它通常是115200。

于 2021-12-08T23:23:56.447 回答
0

我遇到了同样的问题。但问题的根本原因。设置了不正确的通信,这就是我发生通信超时的原因。

解决方案:如果您通过 USB 端口连接到笔记本电脑。将端口更改为 USB。请按照步骤

  1. 打开 Arduino-IDE
  2. 转到菜单“工具->端口”并选择选项“USB”{对我来说它显示为/dev/ttyUSB0}

它对我来说很好。

于 2021-06-08T16:39:15.977 回答
-1

我的 aurdino mega 2560 返回了同样的错误。似乎问题存在于非官方克隆中。该问题通过在上传开始前按重置按钮解决,如以下视频中所述。

https://www.youtube.com/watch?v=tAzjO4v7oF4&list=LLDn5ewJDzz53IiwWmZTgQnQ&index=1

于 2017-02-19T06:44:36.863 回答