如何通过 ISP 引脚安装新的 ATmega 固件?

3D打印 固件
2021-05-07 02:23:31

虽然将.hex 固件直接上传到允许通过 CURA 进行此操作的板上,但这并不总是适用于所有机器的选项(例如,缺少可正常使用的 USB 连接端口)。

在我的 TronXY X1 板(带有 的 Melzi 2.0 V5 ATMEGA1284P)和 Creality Ender 3(带有 的 Creality 3D v.1.1.2 Δ ATMEL ATMEGA1284P AU 1726)上,我发现了这 6 个标记的引脚ISP,它们应该允许连接 Arduino 或类似的闪存固件。根据 RepRap Wiki,Melzi 是Sanguinololu的衍生物,两者都是Sanguino Compatible

Arduino IDE 中创建新固件并确保它为板上的正确芯片编译后,如何使用 Arduino Uno 或其他微控制器通过 ISP将新固件刷 入我的打印机?

这是专门询问基于 ATmega 的控制器板,使用 Arduino 工具链。

1个回答

考虑基于 AVR 的控制器板...

您可能不需要额外的 Arduino 来充当 ISP。这真的取决于董事会。基本上有以下三种情况:

  1. 基于 Arduino 的控制器板 - 带有 RAMPS 1.4 的 Arduino Mega 2560 -带有引导加载程序
  2. 基于 Arduino 的控制器板 - 带有 RAMPS 1.4 的 Arduino Mega 2560 -没有引导加载程序
  3. 控制器板是基于 AVR 的板(没有单独的 Arduino 板) - 与 Ender-3 和 TronXY 板1 的情况一样-没有引导加载程序

选项 1 是最简单的,您只需使用 USB 电缆直接从 Arduino IDE 上传。

选项 2 和 3 是您需要在线串行编程器 (ISP) 的地方。例如 USBasp:USBasp - Atmel AVR 控制器的 USB 编程器

USBasp

或者您可以使用另一个 Arduino,将Arduino 视为 ISP 和 Arduino Bootloaders

ISP 设备基本上将 USB 信号转换为 TTL 信号(以及串行协议(JTAG 或衍生协议)),然后连接到控制器板上的 ICSP 2接口:

ICSP连接器

场景一

如上所述,您只需使用 USB 电缆将开发板连接到 PC/Mac,然后在 Arduino IDE 中点击上传- 确保您工具菜单中选择了正确的开发(即 Mega2560)和端口

场景二

对于 Mega2560,MOSI、MISO 和 SCK 的引脚分为:

Arduino / Genuino Board    MOSI            MISO             SCK       Level
Mega1280 or Mega2560    51 or ICSP-4    50 or ICSP-1    52 or ICSP-3    5V

要使用 Uno 对 Mega2560 进行编程,请按如下方式连接:

Uno 作为 ISP 编程 Mega

或使用 ISP 连接器(在此图中未显示电解电容器3):

Uno 作为 ISP 编程 Mega 通过 ICSP 连接器

注意烧录器上的电解电容3

10 µF 电解电容连接到编程板的 RESET 和 GND,仅用于在微控制器和计算机的 USB 之间有接口的板,如 Mega、Uno、Mini、Nano。像 Leonardo、Esplora 和 Micro 这样的板子,USB 直接由微控制器管理,不需要电容器。

或使用来自Atmega 引导加载程序编程器的 Mega 的 ICSP 连接器(参见原始图像):

Uno 为 Mega 编程

注意使用的是 D10,而不是RESET4

场景3

因此,要在您的控制器板上使用 Arduino Uno,即场景 3(基于 AVR 的板,但本身不是 Arduino 板),您需要像这样将 Uno 连接到控制器板的 ICSP:

ICSP     Uno

MOSI     D11
MISO     D12
SCK      D13
GND      GND
5V       5V
RESET    D10

或者,像这样,来自Chaos Drucker - CREALITY ENDER3 MIT MARLIN AUSSTATTEN (见原图):

图像中有错误,红线应该转到D10而不是D9如图所示

Uno 到控制器板的连接

再次注意,RESETArduino Uno 的 ISP 连接器上的使用(而是使用引脚 10 连接到控制器的 ICSPRESET引脚)4

配置 Arduino IDE

然后在 Arduino IDE 中,您需要选择要使用的 Programmer,在本例中选择Uno 作为 ISP,如下所示:

Uno 作为 ISP

一旦您正确连接并选择了编程器,那么您应该可以像往常一样点击编译和上传。


脚注

1两者使用相同的板-看到这个答案,以什么电压确实在Creality安德-3运行?

2如果您想知道,请参阅ICSP 与 ISP 之间的区别是什么?

ISP 和 ICSP 之间的区别是一个连字符。

ISP 代表在线串行编程,ICSP 代表在线串行编程。

任何允许您在使用串行协议的电路中对微控制器进行编程的安排都可以称为 ISP 或 ICSP。

另请参阅维基百科 - 在系统编程

3请参阅将 Arduino 用作 ISP 时,是否需要电容器?

4为什么?Arduino Uno 能否成为 AVR 程序员并使用 ICSP 头对目标板进行编程

首先,根据配置,RESET 引脚不能用作输出引脚。要将其用作 I/O 引脚,您必须对 RSTDISBL 熔丝进行编程。但是一旦你这样做了,正如 jippie 所说,重新编程你的 Arduino 几乎是不可能的(如果你有 MCU 的插口式通孔类型,你可以把它拉出来放进高压编程器;在所有其他情况下,这实际上是不可能的)。

因此,理论上,您可以按照建议的方式使用 ICSP 标头。实际上,在几乎任何可以想象的情况下,这都是一个可怕的想法。