avrdude:stk500v2_ReceiveMessage():超时

这是我尝试运行 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 灯闪烁。我几乎试遍了网上所有的方法。问题出在哪里?

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

造成这种情况的原因可能多种多样,其中包括一些可能的问题:

1.UART 通信

  • 闪烁正在发生,希望你没有用错端口。 不过还是值得再检查一下,有时 USB COM 设备会安装在奇怪的端口号上。

  • 连接 TX 和 RX(如果可能,断开它们与 AVR 的连接),然后在 COM 端口上打开终端,如果输入字符,应该会看到字符回音。 如果没有,说明芯片上游出了问题,可能是通信芯片(我认为 Arduino 2560 使用的是辅助 AVR,而不是 FTDI,这可能是软件或硬件出了问题)。

1.ATmega* 引导加载程序

  • AVR 因某种原因无法执行引导加载程序。 如果编程器在尝试连接之前没有重置微型机,可能就是这个原因。 在编程器尝试连接时,尝试重置 AVR(按下并松开按钮)。 有时,在紧密循环中运行的软件会阻止引导加载程序连接。

  • 除此以外,保险丝可能被弄乱或代码被擦除。 您需要重新刷新引导加载程序和正确的保险丝,请再次参阅设备的相关信息页面。

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

  • 可能无法工作,需要重新编程。 请参阅信息页面上的编程部分,您需要在计算机上安装固件和兼容 Atmel 的 DFU(设备固件更新)软件来重新刷新目标机。

1.电路板、AVR 或 FTDI 芯片的硬件损坏

  • 您的设备已损坏,需要更换新芯片。

请查看 论坛帖子 了解更多信息。

评论(1)

我出现这个错误是因为我没有在 avrdude 命令行中指定正确的编程器。如果使用的是 Arduino 板,则必须指定 "-c arduino"。

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

avrdude -c arduino -P /dev/ttyACM0 -p atmega328p -U hfuse:r:-:h
评论(0)

这并不是一个真正的修复方案,但可能会对其他人有所帮助。与尼克所说的不同,我的问题是由于程序中的代码造成的。我使用的是巨型 ADK 模型。问题与处理和解析从 USB 连接到 Android 的返回字节[]的开关语句有关。这非常奇怪,因为它每次都能完美编译,但却会像 OP 所说的那样失败。我将其注释掉后,它就能正常工作了。

评论(0)