考虑基于 AVR 的控制器板...
您可能不需要额外的 Arduino 来充当 ISP。这真的取决于董事会。基本上有以下三种情况:
- 基于 Arduino 的控制器板 - 带有 RAMPS 1.4 的 Arduino Mega 2560 -带有引导加载程序
- 基于 Arduino 的控制器板 - 带有 RAMPS 1.4 的 Arduino Mega 2560 -没有引导加载程序
- 控制器板是基于 AVR 的板(没有单独的 Arduino 板) - 与 Ender-3 和 TronXY 板1 的情况一样-没有引导加载程序
选项 1 是最简单的,您只需使用 USB 电缆直接从 Arduino IDE 上传。
选项 2 和 3 是您需要在线串行编程器 (ISP) 的地方。例如 USBasp:USBasp - Atmel AVR 控制器的 USB 编程器
或者您可以使用另一个 Arduino,将Arduino 视为 ISP 和 Arduino Bootloaders。
ISP 设备基本上将 USB 信号转换为 TTL 信号(以及串行协议(JTAG 或衍生协议)),然后连接到控制器板上的 ICSP 2接口:
场景一
如上所述,您只需使用 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 进行编程,请按如下方式连接:
或使用 ISP 连接器(在此图中未显示电解电容器3):
注意烧录器上的电解电容3:
10 µF 电解电容连接到编程板的 RESET 和 GND,仅用于在微控制器和计算机的 USB 之间有接口的板,如 Mega、Uno、Mini、Nano。像 Leonardo、Esplora 和 Micro 这样的板子,USB 直接由微控制器管理,不需要电容器。
或使用来自Atmega 引导加载程序编程器的 Mega 的 ICSP 连接器(参见原始图像):
注意使用的是 D10,而不是RESET
4
场景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
如图所示
再次注意,RESET
Arduino Uno 的 ISP 连接器上的未使用(而是使用引脚 10 连接到控制器的 ICSPRESET
引脚)4。
配置 Arduino IDE
然后在 Arduino IDE 中,您需要选择要使用的 Programmer,在本例中选择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 标头。实际上,在几乎任何可以想象的情况下,这都是一个可怕的想法。