0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将软件上传到Arduino的两种方法

454398 来源:网络整理 作者:网络整理 2019-11-11 11:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:FTDI或串行上传

FTDI实际上是芯片品牌。 FTDI公司专门研究用于通过USB连接的芯片。在Arduino领域,USB转串口芯片用于将运行Arduino IDE的计算机连接到Arduino的主处理器,以上传新草图并通过串行监视器窗口与草图交互。 USB转串行芯片与Arduino上ATMEL处理器的UART接口连接。

为了使Arduino从串行接口接受草图,它运行了一个名为自举程序的程序,该程序接受该草图并将其写入闪存。引导加载程序实际上位于闪存地址较高范围内的一小部分,保留供引导加载程序使用。引导加载程序接收到草图后,它将存储到闪存的下部。

此串行编程使用称为TTL串行的协议。它基于称为RS-232的旧通信协议。 RS-232通信使用的电压会从3到25伏的正电压迅速变为-3到-25伏的负电压。个人计算机通常不再配备RS-232接口,但几年前就已使用。具有此类接口的PC通常使用在12至-12伏之间摆动的电压来发送RS-232信号。 Arduino上的ATMEL处理器使用0到5伏范围内的信号。与Arduino处理器可以处理的电压范围兼容的RS-232协议版本称为TTL串行,有时您可能会听到它称为TTL-232或仅串行。

大多数Arduino都内置有USB转串行适配器芯片,因此您可以将Arduino直接连接到计算机,而无需任何特殊接口或编程器。一些Arduino,例如LilyPad,Mini和Pro Mini,没有配备USB到串行适配器,您需要提供自己的外部适配器。即使芯片的品牌不是FTDI,外部适配器也经常被称为FTDI适配器。

串行通信涉及多条电线或连接。最重要的称为RX(接收的简称)和TX(发送的简称)。

顾名思义,RX导线或引脚从另一个设备接收。它侦听传入的通信。 TX导线或引脚将数据传输到另一个设备。 USB到串行适配器的TX线以一种模式在0伏至5伏之间快速切换,并将其连接到正在监听这些模式的Arduino处理器的RX引脚上。

通信是双向的,因此Arduino的处理器可以将信号发送回USB到串行适配器。处理器使用其自己的TX引脚将信号发送到USB到串行适配器的RX引脚。 USB到串行适配器通过USB电缆在Arduino和您的计算机之间来回转换信号。

计算机将草图发送到Arduino,并从Arduino接收回来,因此计算机可以验证程序是否加载正常。您在Arduino上运行的草图可以使用相同的串行连接,以通过串行监视器窗口与您通信。通常使用此方法调试草图,因为您可以在代码中的关键位置撒上Serial.print语句,以报告变量的值或告诉您代码当前正在做什么。然后,您可以将数据(例如传感器或输入引脚读数)发送回计算机。您还可以使用串行监视器将数据从计算机发送到在Arduino上运行的草图。

您可能想知道当串行通信试图将其发送给草图或仅进行通信时,Arduino如何知道通过串行监视器以及已经在Arduino上运行的草图?答案很简单。接受草图并重新编程Arduino的引导程序仅在Arduino的处理器复位后的最初几秒钟内运行。如果在Arduino上运行的bootloader程序未接收到一定的字符序列,表明正在尝试上传草图,则退出运行并启动先前加载的草图。

首次开发Arduino时,将草图上传到Arduino的人必须在上传过程开始时立即按Arduino上的Reset按钮,然后正确计时,或重试。更高版本的Arduino使用了另外一个称为DTR的串行协议线来自动重置Arduino。由于在开始与Arduino的新连接时DTR信号从5V变为0,因此如果将此信号发送到Arduino处理器的复位线,它将复位。如果要建立新的串行连接的原因是因为Arduino IDE正在向启动加载程序发送草图,则启动加载程序会继续并接受该草图并将其存储。如果要建立新的串行连接的原因是因为您正在打开Arduino IDE的串行监视器,则Arduino会重置,引导加载程序会运行足够长的时间以意识到IDE不会尝试发送草图,而您先前上传的开始运行。

了解这些信号(例如用于自动重置的DTR信号)很有用,尤其是当您要将USB串行适配器正确连接到未内置适配器的Arduino时,尤其如此,例如LilyPad,Mini或Pro Mini。或者,如果您想对Arduino问题进行故障排除,或使用另一个Arduino编程。我在上一段中提到,在建立新连接时,DTR信号将从5V变为0。好吧,这个信号变低,并在整个连接期间保持低电平。如果该信号直接连接到处理器的复位引脚,则处理器将保持复位状态,并且永远不会开始运行引导加载程序或您先前上传的草图。

所以,这就是窍门:DTR信号通过一个小电容器发送到处理器的复位引脚。电容器将来自DTR信号的电压(变为低电平并保持低电平)转换为一个临时尖峰,该尖峰变为0V,然后又回到5V。这将重置Arduino,并使其启动引导加载程序,随后引导加载程序开始绘制草图。

USB到串行适配器需要在计算机上加载驱动程序,因此计算机将了解如何与其通信。真正的Arduino使用USB到串行适配器的特定型号列表,因此IDE可以与您可能需要的所有驱动程序一起预先打包。如果您使用的是由arduino.cc或其合作伙伴制造商以外的其他人制作的克隆,假货,衍生产品,自制的或其他不受支持的开发板,那实际上很好,因为它是开源硬件和软件。任何人都可以做到。但是开发板可能会使用USB到串行适配器,该适配器需要用于您计算机的驱动程序,并且未包含在Arduino IDE的软件下载中。 CH340G USB转串口芯片就是一个例子,这种芯片在eBay和Amazon上销售的Arduino兼容板上非常常见。对此有所了解对您很有帮助,因此您可以使用正确的驱动程序来准备计算机。

这种与Arduino处理器发生的串行通信通常通过处理器上专用于TTL串行通信的专用引脚进行。该处理器具有称为UART的特殊硬件,该硬件可以处理从TX引脚发送数据或在RX引脚接收数据。处理这些信号的逻辑是非常基本的内置于处理器中的。如果您不使用处理器上的RX和TX引脚通过UART进行串行通信,则这些引脚可用于执行其他操作,例如激活继电器,晶体管LED或从传感器接收数字信号。如果不被串行信号占用,它们只是普通的数字引脚。一些处理器芯片具有多个UART,因此有几组RX和TX引脚。如果处理器的UART部分不使用这些引脚进行串行通信,这些引脚也是普通数字引脚。

引导加载程序可以设计为使用处理器上的几乎所有引脚通过任何协议接受草图。处理器具有多种引脚,它们是普通数字引脚,但可以选择将这些引脚用于特殊协议。例如,有一组引脚可用于IIC或I2C协议,这是一种能够与多个设备通信的特殊串行总线协议。还有另一组引脚可用于SPI协议,这是用于与设备通信的另一种不同的串行总线协议。处理器具有特殊的硬件,旨在在各种专用引脚上实现这些不同的协议,并且处理这些信号的逻辑在非常基本的层次上内置于处理器中。

Twister#1:各种协议(例如TTL串行,I2C和SPI)具有内置在处理器中的低级逻辑,用于在协议的特定引脚连接到另一台设备时处理协议,但是可以通过编写模拟处理器内置逻辑电路行为的软件来实现协议以在处理器的任何数字引脚上工作。这称为“敲打”。可以编写程序以符合协议要求或规范的方式驱动引脚。例如,可以编写使用处理器的非UART引脚的软件串行协议。然后,该软件将代替硬件UART电路。如果您原本会用于特定协议的引脚被占用,并且您需要使用其他引脚,则这很有用。或者,如果您想拥有多个内置串行接口。例如,ATmega328P处理器只有一个UART,并且使用数字引脚0和1。它通常一次只能与一个其他串行设备进行通信。如果要在引脚2和3上连接另一个串行设备,则可以使用位串行协议的软件串行程序来实现。可以编译Optiboot引导加载程序,以通过非UART引脚上的软件串行进行通信。

Arduino通常会安装一个串行引导加载程序,该串行引导加载程序使用ATMEL处理器上的硬件UART,并且计算机上运行的Arduino IDE旨在与该引导加载程序进行通信。

Twister#2:您不需要引导程序!

第2步:ISP编程

ISP也称为ICSP。它是在线串行编程。与TTL串行相比,这是另一种串行。它是SPI(串行外围设备接口总线),并使用3条主线进行通信以进行编程。当您使用ISP对Arduino的处理器进行编程时,通常会擦除包括引导加载程序区域在内的整个处理器芯片内存,并写入您的草图。因此,当您使用ISP将草图上载到Arduino时,Arduino不再具有引导加载程序。这意味着您还必须使用ISP上传上传到下一个草图。您还可以使用ISP将引导加载程序放在Arduino上。这称为刻录引导加载程序。使用ISP上传草图后,您可能需要执行此操作以更改或升级引导加载程序,或将Arduino恢复为正常操作。

您可能想将草图上传到带有ISP的Arduino,因为您希望草图在上电或重置后立即开始,或者因为您不希望板载引导程序接受其他草图或尝试使用串行引脚或闪存引脚13。

要进行ISP编程,您需要ISP编程器。有许多与Arduino兼容的程序员,他们通常是插入USB或安装在USB电缆末端的小型设备,并且具有连接至Arduino的连接器或电线。通常将编程器连接到Arduino的ICSP接头,该接头是一组排成三排的2针公引脚。

您还可以使用Arduino作为ISP编程器来编程另一个Arduino。 Arduino IDE附带有一个名为ArduinoISP的示例草图,您可以将其上传到Arduino,然后成为ISP程序员。在Arduino IDE中的“工具”,“程序员”下的菜单中,选择“ Arduino as ISP”。由于您只需花几美元就可以得到克隆的Nano,Pro Micro或其他Arduino,因此除非有方便,否则几乎不需要购买专用的ISP编程器设备。

因此,如果您有两个Arduino,请继续并开始尝试ISP编程。您不太可能将任何事情弄糟,并且您将学习。为此,请打开ArduinoISP草图,必要时对其进行修改,然后将其上载到并准备程序员Arduino。然后将编程器Arduino连接到目标Arduino,并对目标Arduino进行编程。

步骤3:确定要使用的引脚

ISP编程的布线,您需要将编程器的MISO线连接到目标Arduino的MISO。将编程器的MOSI导线连接到目标的MOSI。将SCK连接到SCK。将5V连接至5V,并将GND连接至GND。将用于从机复位的任何引脚连接到目标的RST引脚。为了帮助您理解和理解所有这些,接下来的几段将提供很多详细信息。

请注意,在某些教程,原理图和数据表中,您可能会看到SCK或SCLK。这些标签都是同一功能“串行时钟”的缩写。在此Instructable中,我使用SCK。

从UNO开始,如果您查看电路板上和原理图上的UNO ICSP插头的引脚排列,您会发现引脚的编号是这样的:/p》 D12 MISO 1 。 。 2 VCC

D13 SCK 3 。 。 4 MOSI D11

RST 5 。 。 6 GND

板上应该有一个圆点或方形垫,用于显示ICSP接头连接器的针脚1是什么。在UNO上,即标题的左上角。在UNO上,ICSP接头连接器上的所有引脚都直接连接到板上,并且是板上其他地方可用的引脚的副本。标头的针脚1是数字针脚12的副本;引脚3与数字引脚13相同,依此类推。这就是为什么如果您在网上查看许多教程,就会发现它们显示的是引脚11、12和13的使用,而不是使用ICSP标头。

在所有基于ATmega328P的Arduino(例如Pro Mini,Mini,Nano,Duemilanove和RedBoard,Metro328等衍生产品上),都应用了相同的引脚分配。如果您的Arduino没有ICSP接头,请使用引脚10、11、12和13。

看看Leonardo,您必须比原理图和电路板更深一些。该示意图有点混乱,因为在两个位置显示了处理器,而未显示MOSI,MISO和SCK线的Arduino引脚号。您需要查看IDE应用程序目录中的variants/leonardo/pins_arduino.h文件,以找出引脚号。

D14 MISO 1 。 . 2 VCC

D15 SCK 3 。 . 4 MOSI D16

RST 5 。 . 6 GND

当您环顾一下Leonardo上的引脚时,您会看到除了ICSP接头连接器之外,其他任何地方都没有数字引脚14、15和16。因此,如果您有Leonardo,则不能完全按照所找到的教程来说明与外部边缘插针11、12和13的连接,并且必须使用ICSP接头。这意味着要适应您尝试使用的教程,使用从阅读本Instructable中获得的足够知识,并进行大量研究和阅读以熟悉Leonardo。

在基于ATmega32U4的Arduino(例如Micro,Pro Micro,Esplora)上,如果Arduino没有ICSP接头,则使用引脚10、16、14和15。

如果您使用的是Arduino IDE 1.6.5或更早版本随附的ArduinoISP草图,则在使用Leonardo时,默认情况下从复位引脚未设置为10。阅读此步骤的其余部分以获取详细信息。如果您使用的是arduino.cc上的Arduino IDE的1.6.6版或更高版本,您会注意到该草图只是将从属重置引脚设置为引脚10,因此您可以跳过阅读此步骤的其余部分,然后继续进行步骤4

在深入研究Leonardo原理图和pins_arduino.h文件时,您会发现有些东西是SS引脚为数字引脚17,并且到达RXLED,并且在任何插头上均不可用。当您在Arduino IDE中加载ArduinoISP示例草图并对其进行查看时,这一点很重要的原因显而易见。 RESET线设置为SS,这是UNO上的引脚10,但是Leonardo上的引脚17。这是您需要连接到目标Arduino的RST引脚的电线。因此,为了在Leonardo上使用此草图,您需要使用可以实际连接的可用引脚。将行更改为:

#define RESET SS

#define RESET 10

,而不是使用名称为SS的引脚,而是将其分配给特定的引脚号。使用引脚10,这样您就可以在任何Arduino上使用修改后的草图。我认为也许应该编写草图以从引脚10而不是从SS引脚发送复位信号。

步骤4:从Uno到Leo

让我们研究一下如何使用UNO作为ISP程序员对Leonardo进行编程。将UNO上ICSP接头连接器的所有引脚连接到Leonardo上ICSP接头连接器,除了引脚5,即RST引脚。将UNO的引脚10连接到Leonardo的RST引脚(ICSP接头的引脚5)。这样做时,您将得到以下连接:

在编程器UNO上将11 MOSI引脚固定到目标Leonardo上的16 MOSI引脚

在编程器UNO上将引脚12 MISO固定到目标UNO上14目标对象Leonardo

上的MISO引脚13编程器UNO上的SCK固定到引脚15 Leon编程对象UNO上的SCK固定到目标Leonardo上的RST引脚

编程器UNO上的VCC到目标Leonardo上的VCC

GND上编程器UNO上的VCC到目标Leonardo上的GND

通过USB将UNO连接到计算机。 将ArduinoISP草图上传至UNO,然后在串行连接时通过在RST和GND之间连接一个10uF或更大的电容器来禁用自动复位。电容器的带状或负极引线连接至GND。当计算机通过UNO将程序数据发送到Leonardo时,这将防止UNO重置和中断ISP编程过程。

您的接线将如上图所示。

在Arduino IDE菜单中,转到“工具”,“开发板”,然后选择“ Leonardo”。转到工具,程序员,然后选择Arduino作为ISP。转到“工具,端口”,并确保已选择要用作ISP编程器的UNO的端口。打开示例眨眼草图。在菜单上转到“草图”(或IDE 1.6.4及更高版本上的“文件”),然后单击“使用编程器上传”。几秒钟后,眨眼草图应上传到莱昂纳多,并且LED应该开始闪烁。您所做的全部操作将删除Leonardo,并使用ISP安装眨眼草图。莱昂纳多不再拥有引导加载程序。

如前所述,这意味着您还必须使用ISP上载到下一个草图。从现在开始,您必须使用ISP对Leonardo进行编程。为了验证这一点,您可以继续断开Leonardo的连接,并用USB电缆将其连接起来,然后尝试使用上传过程将草图上传到其中。您会发现它不起作用。

如果您错过了拔掉USB电缆并上传草图的功能,则可以使用ISP将引导加载程序放回Leonardo。这称为刻录引导加载程序。这将使Leonardo恢复正常运行。

将您作为ISP程序员使用的UNO连接到Leonardo,就像上传眨眼草图之前一样。这次,在菜单上依次选择工具,刻录引导程序。几秒钟后,您应该在IDE底部附近看到消息Done Burning Bootloader。新的Bootloader已安装在您的Leonardo上。现在,您可以使用USB电缆连接莱昂纳多,并使用上传过程将草图上传到莱昂纳多。

步骤5:Leo to Uno

现在,使用Leonardo作为ISP程序员对UNO进行编程,来研究相反的情况。将Leonardo上ICSP接头连接器的所有引脚连接到UNO上的ICSP接头连接器,除了引脚5(RST引脚)外。将Leonardo的引脚10连接到UNO的RST引脚(ICSP接头的引脚5)。完成此操作后,您将得到以下连接:

在编程器Leonardo上将16 MOSI引脚固定到目标UNO上的11 MOSI

在编程器Leonardo上的引脚14 MISO引脚上的固定目标UNO上的12 MISO

将编程器Leonardo上的15 SCK引脚固定到目标UNO上的13 SCK

编程器Leonardo上的引脚10到目标UNO上的RST引脚

编程器Leonardo上的VCC到目标UNO上的VCC

GND上编程器Leonardo上的VCC到目标UNO上的GND

,它看起来像上图。

从UNO卸下电容器。您不再需要了。

通过USB将Leonardo连接到计算机。将ArduinoISP草图上载到Leonardo。如果使用的是Arduino IDE 1.6.5或更早版本附带的ArduinoISP草图,请m 确保已将示例草图修改为如步骤3所述,将引脚10用作RESET发送引脚。使用Leonardo作为ISP程序员时,您无需禁用自动复位。

在Arduino IDE菜单中,转到在“工具”上,然后选择“ UNO”。转到工具,程序员,然后选择Arduino作为ISP。转到“工具,端口”,并确保已选择您要用作ISP编程器的Leonardo的端口。打开示例眨眼草图。在菜单上转到“草图”(或IDE 1.6.4及更高版本上的“文件”),然后单击“使用编程器上载”。几秒钟后,闪烁的草图应上载到UNO,并且LED应该开始闪烁。您所做的全部工作将删除UNO,并使用ISP安装眨眼草图。 UNO不再具有引导加载程序。

要将引导加载程序放回UNO并恢复到正常运行,请转到“工具,刻录引导加载程序”菜单。

Windows用户需要包括一个额外的一次性步骤。为Leonardo创建一个作为ISP的自定义programs.txt条目,以便您可以指定arduino协议而不是stk500v1协议。 PeterVH在此处讨论了此细节:https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo/

步骤6: ISP

我的希望是在阅读了有关ISP流程的这些详细信息以及引脚的详细说明以及如何连接Arduino之后,您将获得足够的信息以适应ISP流程。这个Instructable并不是要遵循的食谱,盲目地钩住别针,并希望获得最好的结果。现在,您可以弄清楚如何将任何Arduino连接到任何其他Arduino,以及刻录新的Bootloader或上传草图。我希望我的解释方法能够成功并让您满意。

您能找出如何刻录引导程序或使用ISP将草图上传到Pro Micro的方法吗?Pro Micro是与Leonardo一样的基于ATmega32U4的Arduino吗?它没有ICSP头,但是确实有分别标记为14、15和16的引脚。

如何使用UNO作为ISP程序员来烧写引导程序或将草图上传到Nano或Pro Mini,就像UNO一样,它们都基于ATmega328P? Nano具有ICSP接头,但是如果接头上没有焊接引脚,可以改用11、12和13引脚进行适配吗?

使用Mega2560作为ISP程序员或目标如何? Mega板基于ATmega2560处理器。 ISCP标头的排列方式如下:

50 MISO 。 . VCC

52 SCK 。 . MOSI 51

RST 。 . GND

如果在使用Mega2560作为编程器时使用修改后的ArdinoISP草图,则可以将引脚10用作RESET发送引脚。连接到目标Arduino的RST引脚。如果使用未经修改的ArduinoISP草图,则需要知道Mega2560上的SS是53针。详细信息在ArduinoISP草图中的注释中。 arduino.cc的Arduino IDE 1.6.6或更早版本随附的ArduinoISP草图已将RESET-send引脚设置为10。有关版本1.6.5和更早版本的详细信息,请参见步骤3。

第7步:其他协议CDC串行

还记得我说过两种将软件上传到Arduino的方法吗?好吧,我可能有点颤抖了。这是第三。某些Arduino模型(例如Leonardo,Pro Micro,Micro,Robot,Esplora)具有ATmega32U4处理器。它具有用于USB协议的引脚,并具有专为与USB接口而设计的低级逻辑。这意味着根本没有USB到串行适配器或芯片,并且ATmega32U4直接连接到计算机的USB。

信息使用模拟或代表TTL串行的协议在计算机和Arduino之间传递,,但是没有涉及RX和TX的裸露引脚。引导加载程序或上载过程完全不涉及Leonardo和其他基于ATmega32U4的Arduino上的RX和TX引脚。 USB连接是一种固件实现的UART0,可在草图中使用诸如Serial.print之类的语句。 RX和TX引脚连接到辅助UART(即UART1),并在您的草图中用于诸如Serial1.print之类的语句。

由于USB CDC串行接口没有物理引脚,例如RX和TX以及其他相关的TTL-232引脚,我们无权使用DTR引脚来重置Arduino并使其运行自举程序。 USB引脚只是D +和D-。我们该怎么办?莱昂纳多的设计师对此进行了漫长而艰苦的思考,并提出了一个有趣的解决方法。尽管ATmega32U4处理器中的CDC串行接口并没有像串行线那样真正使用波特率,但是它可以知道计算机何时请求设置特定的波特率。他们对Arduino IDE进行了编程,仅将波特率更改为1200秒钟,然后将其更改为57600。这称为1200bps_touch,如果您研究属于Arduino IDE的boards.txt文件,则可以看到设置。软件包。 Leonardo检测到此情况,并使用看门狗方法重置处理器。然后,引导程序将运行。该引导程序称为Caterina。它与基于ATmega328P的Arduino的不同之处在于,它不接受使用RX和TX线的草图。 Caterina使用USB D +和D-线。

因此,当您打开串行监视器或使用它们启动一些其他串行过程时,莱昂纳多和其他基于ATmega32U4的Arduino不会重置。仅当IDE在上传草图之前执行1200bps_touch时,它们才会重置。这就是为什么当您将其用作编程器时不需要禁用电容器自动复位的原因。

步骤8:UNO和Mega2560

好的,因为我以前有过轻描淡写的经历,所以我会整理一下,再描述另一个。如果UNO和Mega2560是正版或克隆的,则将ATmega16U2处理器用于USB到串行芯片。这只是为了在计算机和主处理器之间进行草图上传和其他串行通信。这就是ATmega16U2上的常规固件。 UNO上的主处理器是ATmega328,Mega2560上的主处理器是ATmega2560。主处理器是草图运行的地方。

让我们稍微备份一下,再谈一些用作USB到串行芯片的ATmega16U2处理器。它与用作Leonardo主处理器的ATmega32U4非常相似。高级用户可以对其进行编程,以执行Leonardo可以做的有趣的事情,例如在连接的计算机上移动鼠标光标,或模拟键盘并在连接的计算机上键入内容。关键是,它是可编程的。

ATmega16U2具有引导加载程序。该引导加载程序不能直接从Arduino IDE进行编程,因此为了使此ATmega16U2发挥作用而进行黑客攻击的人们可以使用命令行,或向IDE添加自定义项,或使用名为FLIP的程序。引导加载程序协议称为DFU,它是ATMEL为该芯片提供的默认引导加载程序。您可以使用称为FLIP的Windows程序或名为dfu-programmer的Mac/Linux程序将其上传到该文件。

或者,您可以使用ISP编程将其上载到它,这将擦除芯片并安装您的程序或替换的引导程序。您可能已经注意到UNO和Mega2560上USB连接器旁边的另一个ICSP接头连接器。我介绍了ISP对ATmega16U2进行编程的概念,以将ATmega16U2的库存固件还原到另一个Instructable中。

步骤9:其他杂项

前面提到过,引导加载程序位于闪存高端范围的一小部分。 Flash存储器的引导加载程序部分设置在称为熔丝的特殊寄存器中,该寄存器告诉处理器引导加载程序有多大,以及在启动或复位时可以找到引导加载程序的位置。引导加载程序接收到草图后,它将存储到闪存的下部。您已加载到闪存中的草图通常不能更改自身或引导加载程序,也不能写入闪存中未使用的部分。只有在保留的引导加载程序区域中运行的程序才能写入闪存。高级用户可以将一小段代码放入内存的引导加载程序区域中,并与引导加载程序共存,并在其中运行,然后从运行在闪存下部的程序中调用该代码,从而使他们的程序可以写入闪存。

由于真正或克隆的UNO和Mega 2560带有可编程的USB串行处理器,因此可以将程序上载到该处理器以充当ISP编程器并进行连接。到UNO或Mega的主处理器,然后重新刻录引导程序或通过ISP加载草图。或者,您可以将草图上传到主处理器,该主处理器通过ISP重新编程USB到串行处理器。有时称为UNO自助ISP。

您还可以使用FTDI USB串行转换器作为ISP编程器,使用计算机上的程序将ISP协议与FTDI转换器的针脚进行对接。

这些备用ISP方法大多是学术上的追求,因为使用ISP编程器设备或将另一个Arduino用作ISP编程器更加容易且便宜。他们是怎么做到的?
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Arduino
    +关注

    关注

    190

    文章

    6527

    浏览量

    197477
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCUX SDK LIN 堆栈集成到 Zephyr OS 中,是否有一种方法可以自动生成它们从 .ldf 文件?

    MCUX SDK LIN 堆栈集成到 Zephyr OS 中,现在正在 S32K344-wb 板上对其进行测试,但我想更改 cfg 文件,我想知道是否有一种方法可以自动生成它们从 .ldf 文件。
    发表于 04-24 06:33

    用PLC实现卷径计算的两种算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法两种,一种是根据机列速度(产线速度)和和被测卷的转动角速度求得;另一种是根据被测卷的转动圈数和测长
    的头像 发表于 11-14 16:54 2569次阅读
    用PLC实现卷径计算的<b class='flag-5'>两种</b>算法

    有多少种方法可以进行频响曲线测量?

    APx500软件提供了频响曲线的多种测量方法,对一个音频产品的频响特性进行测量分析。如果只用一个测量对一个音频产品进行评价,那这个测量就是频响曲线,APx500软件提供了多种方法可以进
    的头像 发表于 11-14 11:29 1223次阅读
    有多少<b class='flag-5'>种方法</b>可以进行频响曲线测量?

    mcs文件烧到板子上以及利用IDE上传软件程序过程中遇到的问题以及解决方法

    关了,然后再Auto connect,就可以了,如果还有jsn2和jsn3的错误,重复上述步骤,jsn1改成jsn2和jsn3即可。 2.利用IDE上载软件程序遇见错误: 错误如下: 这里感谢胡灿老师给出
    发表于 10-31 09:10

    使用 LinkBoy 程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板

    以下是使用 LinkBoy 程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板的详细步骤指南: 一、准备工作 ✅ 硬件需求: 项目 要求 开发板 Arduino ESP32(支持
    发表于 10-16 12:41

    商品图片批量上传接口设计与实现

    ? 在电商平台或内容管理系统中,商品图片的高效管理是核心需求之一。批量上传接口允许用户一次性上传多张图片,显著提升操作效率。本文逐步介绍如何设计并实现一个可靠的商品图片批量上传接口,
    的头像 发表于 10-13 15:25 566次阅读

    两种散热路径的工艺与应用解析

    背景:两种常见的散热设计思路 在大电流或高功率器件应用中,散热和载流能力是PCB设计中必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高),增强导热
    的头像 发表于 09-15 14:50 978次阅读

    产品图片上传API接口

    ​ 在电商平台、内容管理系统或移动应用中,产品图片上传API接口是核心功能之一。它允许用户或第三方应用通过HTTP请求图片文件上传到服务器,实现产品图像的快速添加和管理。本文逐步介
    的头像 发表于 07-25 14:30 853次阅读
    产品图片<b class='flag-5'>上传</b>API接口

    make sence成的XML文件能上传到自助训练模型上吗?

    make sence成的XML文件能上传到自助训练模型上吗
    发表于 06-23 07:38

    视频怎么上传到服务器?

    1.视频怎么上传到服务器 2.有什么办法把视频上传到网上,可以回看的?不用实时观看,只要回看
    发表于 06-18 06:42

    六相永磁同步电机串联系统控制的两种方法分析研究

    /simulink环境下,分别用这两种方法台电机串联系统的运行特性进行仿真研究。当其中一台电机转速、负载变化时,分析两种方法下另外一台电机独立运行的情况,脸证分析这两种方法的可行性
    发表于 06-10 13:09

    鸿蒙开发实现图片上传上传用户头像)

    目录 使用 fs 模块将上一步的文件,拷贝到 cacheDir 目录下 import fs from \'@ohos.file.fs\'; // 三.文件保存到缓存目录(只能上传在缓存目录中的文件
    发表于 05-24 23:09

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    国王Arduin的名字命名的,为了纪念这个地方,他这块电路板命名为Arduino。随后,Banzi、Cuartielles和Mellis把设计图放到了网上。版权法可以监管开源软件,却很难用在硬件上
    发表于 05-13 09:28

    电源效率测量方法

    本课程讲义用于向大家介绍测量开关电源 转换效率的两种不同方法。 第一种方法使用一个瓦特表和个万用表; 第二
    发表于 05-12 16:13

    是否可以通过3014数据从pc传输到FPGA?

    多少图像,连接到 FPGA 的 DDR3 是否已满等)上传到 PC,以及一种方法让 PC 向 FPGA 发送命令询问状态。 我的想法是 1.PC通过3014(USB3.0)下载图片到FPGA 模式) 2.
    发表于 05-08 06:56