通过 USB 转串行电缆对 Arduino 进行编程时,如何修复 AVRdude 不同步错误?

电器工程 Arduino USB 串行 rs232 面包板
2022-01-27 12:03:07

我正在尝试为 PC 构建这种环境照明。这在我的 Arduino Uno 上完美运行。我的下一步是使用“面包板上的 Arduino”来制作它。所以我买了一块空白的 ATmega328 芯片并使用 Arduino IDE 和 USBasp 将 Arduino 引导加载程序(用于开发板“Arduino Duemilanove w/ ATmega328”)烧录到它上面;我知道这已经正确加载,因为这个 ATmega 芯片在 Uno 上运行良好。

然后我使用FT232RL制作了 USB 转串口转换器但它的驱动程序没有安装在我的电脑上(Windows 7 x64)。我怀疑我使表面贴装 FTDI 芯片过热并在手工焊接时将其杀死。

所以,我把它放在一边,得到了这个USB 转串口转换器桥:(对不起,糟糕的图片)我在我的面包板上使用了一个额外的 ST232CN,将电压电平从 RS232 转换为 TTL,如下所示页正如我从环回测试中验证的那样,这很好用。我已将 ST232 的引脚 9 连接到 ATmega 的引脚 2,引脚 10 连接到引脚 3。

当我尝试从 Arduino IDE上传闪烁示例时,出现此错误:

Binary sketch size: 1026 bytes (of a 30720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

当我进行详细上传(Shift+Upload)时,我收到以下错误/消息:

avrdude: usbdev_open(): did not find any USB device "usb"

此外,我尝试在 ATmega 的引脚 2 和 3 上添加 1k 上拉电阻,但没有帮助。所以我想现在的问题是从 ST232 到 ATmega 的串行通信?ATmega的Reset引脚有什么特殊连接吗?我用一个 10k 的电阻把它拉到 5V。

4个回答

每当我收到“不同步”错误时,这与我刚刚错过了重置时间(或完全忘记了重置!)有关。对于我的面包板和 Eclipse/AVRDude,在我单击上传按钮之前或同时将复位引脚不接地是正确的时机。但还要检查你的电脑在插入时是否确实看到了适配器。

后来的 arduino 板被构建为在建立串行连接时重置,并由引导加载程序以编程方式进行。 这篇博客文章描述了它是如何工作的,更有趣的是,如何将它破解到早期的板上。如果你愿意,把它放在面包板上应该不会太难。当然,该芯片需要有一个兼容的引导加载程序(您已经将其放入您的引导加载程序)。对于面包板,我只做重置按钮/鼠标点击的舞蹈。

正如@JRobert 在评论中所说,将 ATmega 上的复位引脚接地和不接地的正确时机起到了作用。单击“上传”时,请继续将 ATmega 的复位引脚接地,就像显示“上传”一样,将其接地。

我在几个网站上看到了相同的错误 RE: Arduino message "avrdude: stk500_getsync(): not in sync: resp=0x00" 或类似的。

我发现,如果我移除了任何修补到 D0 中的东西([D0]DIGITAL 引脚零,距离 USB 和电源插孔最远,也显示为“RX”)。

我尝试了两台不同的计算机并得到相同的错误,发现如果: 1- 我从 [D0] 移除电线或打开电路 2- 上传到 Arduino 3- 重新修补移除的电线或关闭开路到 [ D0]

我只在上传时遇到了这个错误,这是我的解决方案。目前。

希望能帮助到你。

终于将一些有用的信息回馈给社区感觉很好!

修复“avrdude: stk500_getsync(): not in sync: resp=0x00”错误。只需安装 FTDI 驱动程序版本 2.8.24.0。新驱动 v2.8.28.0 存在一些问题。