• 跳至主要导航
  • 跳到主要内容
  • 跳到主要侧边栏
  • 跳到页脚

单片机技巧

微控制器工程资源,微控制器新产品和电子工程新闻

  • 产品展示
    • 8-bit
    • 16-bit
    • 32-bit
    • 64-bit
  • 应用领域
    • 汽车行业
    • 连接性
    • 消费类电子产品
    • 产业
    • 医疗类
    • 安全
  • EE论坛
    • EDABoard.com
    • Electro-Tech-Online.com
  • 影片
    • TI单片机视频
  • EE资源
    • 快速设计
    • 电子书/技术提示
    • 常见问题
    • LEAP奖
    • 播客
    • 网络研讨会
    • 白皮书
  • EE学习中心

使用Arduino ISP对AVR和Arduino微控制器进行编程

十二月3,2018 通过 斯科特·桑顿 6条留言

所有微控制器(MCU)都需要某种机制来对其进行编程,即使它们仅被编程一次。通常,程序代码是在主机上编写的,然后 编译或翻译,然后使用电缆(通常为USB或RS232)(通常与某些软件一起)从PC(“主机”)将目标(机器可读)代码下载到PC(“主机”)中的MCU(“目标”)。 “程序员。”编程后,MCU将按编码功能运行。

一家非常受欢迎的MCU开发板制造商是 Arduino的 的 ,总部位于意大利。许多Arduino开发板都装有 AVR微控制器,这还要求程序员将在主机上创建的程序保存到目标MCU的内存中,例如AVR微控制器。外部编程器通常用于AVR微控制器,并且价格昂贵。

大多数目标MCU在项目开发过程中必须进行多次编程,因此从电路中移除MCU进行编程是不可行的。可以使用系统内编程器(ISP)对许多MCU(包括AVR处理器)进行编程,因此不必从电路板上卸下它们。 [一世]

默认情况下,Arduino开发板具有MCU驻留代码,称为引导加载程序。 引导程序 是您上电时第一个驻留在MCU上的程序。引导加载程序指示MCU加载什么或下一步做什么。借助集成开发环境(IDE),Arduino使从PC主机到板载MCU(目标)的通信变得易于使用。 IDE是驻留在主机上的,并且包含开发人员可以用来编程,编译和调试目标MCU的工具。

引导加载程序还有助于使用USB通过Arduino IDE与Arduino开发板进行通信。引导加载程序负责在代码从Arduino IDE到达时在芯片上编写代码。

Arduino的 的 开发板的整体设计使其易于使用,包括免费软件工具。 Arduino的 控制器板非常适合启动嵌入式编程,并且经常用于教学环境。 Arduino的 开发板(目标)和主机之间的简单USB连接使Arduino适用于开发嵌入式项目,而无需了解 怎么样 将程序代码放入MCU并从那里运行代码。 (Arduino将程序或代码称为“草图”。)Arduino开发板最适合于小型项目。

但是,如果目标是设计一种经济的产品,然后在定制设计的印刷电路板上使用AVR微控制器创建大批量,生产质量的板,比购买成百上千个装有相同AVR MCU的Arduino板要便宜。不过,如果避免便宜地创建和填充少量PCB,则许多人已经将Arduino(及类似产品)低成本开发板用作已安装的最终产品。

Arduino的 的 开发板具有少量的通用I / O,可用于许多不同目的。例如,Arduino开发板可以用作使用Arduino ISP的其他AVR微控制器的编程器工具,并且是对AVR MCU进行编程的最简单,最便宜的方法之一。 Arduino的 系统内编程器是免费Arduino IDE中提供的内置功能。 ISP允许您使用另一个专用的Arduino板对Arduino板和其他AVR微控制器进行编程。 [ii]

但是,使用全功能的Arduino板(作为程序员Arduino)对新开发的Arduino板进行编程有一些规定。首先,必须将“ programmer-Arduino”(您已配置为程序员的Arduino) 已配置 作为ISP。默认情况下,草图(代码)在Arduino IDE的“文件”菜单中的示例代码中可用。 [iii] Arduino的 ISP 草图 将所需的指令传递给Programmer-Arduino,以将其设置为编程模式。

  Arduino的  ISP
图1:Arduino ISP草图选项。 (来源:作者截图)
图2:Arduino ISP草图(来源:作者截图)

如图所示,可以通过连接的LED来监视Programmer-Arduino的状态。 Arduino的 ISP 草图已为此功能进行了预编程。

图3:Arduino-LED连接(来源:作者截图)

引脚7 =编程(在编程期间打开)

引脚8 =错误(在编程错误时亮起)

针脚9 =心跳(一旦打开编程器电源,它将保持打开状态)

配置Programmer-Arduino之后,Programmer-Arduino与Arduino目标之间的连接建立。的 引脚配置 需要完全按照Arduino ISP草图中所述进行。

Arduino的 ISP 使用 串行外设接口(SPI)协议 用于对AVR微控制器进行编程。 SPI通信使用4个逻辑信号:MOSI,MISO,SCLK和SS。以外 I2CSPI是MCU最常用的通信模式之一。 SPI遵循主从结构,这意味着一个主设备可以使用相同的数据引脚与多个从设备进行通信,并且使用从选择线选择目标从设备。如果有存储卡,则从选择用于从多个芯片中选择特定芯片。但是,当您将Arduino用作编程工具时,从选择信号仅用于重置微控制器。重置微控制器会进入接受来自编程器Arduino的命令的状态。 [iv]

在Programmer-Arduino上,引脚10、11、12和13用作数据引脚。具体配置如下:

引脚10 = RESET

引脚11 = MOSI

针脚12 = MISO

引脚13 = SCK

5v和接地引脚可以从Programmer Arduino的 连接。连接两个Arduino的参考地非常重要,以避免遇到毛刺并保持安全。

在线串行编程(ICSP)是在不断开电路连接的情况下对微控制器进行编程的能力。 ICSP接头可通过6针形式在Arduino板上实际使用。将目标Arduino的引脚11、12和13与编程器Arduino的引脚11、12和13连接。请注意,程序员Arduino的引脚10应该连接到目标Arduino的复位引脚。另外,ICSP插头引脚可用于SPI通信。 (请参见图4)。

图4:Arduino ICSP标头(来源:作者截图)

完成以上所有内容的接线后,您需要定义您正在使用主机PC上的Programmer模式。转到菜单中的工具,然后在“程序员”选项中选择“ Arduino的 作为ISP”。 (请参见图5)。

图5:将Programmer Arduino的 设置为ISP(来源:作者屏幕截图)

接下来,将引导加载程序加载到目标Arduino的内存中,然后定义“保险丝”。在Arduino领域,保险丝是用于定义微控制器中多个功能的一组指令。例如,芯片频率和时钟源在保险丝中定义。微控制器对工作电压敏感,如果电压水平降到定义的水平以下,则微控制器可能会发生故障。保险丝内部也规定了最低工作电压。 [v]

如果要配置Programmer-Arduino,使其与Arduino IDE兼容以直接上传草图,则上述步骤至关重要。 “ burn bootloader”选项也在工具菜单中,并将Bootloader刻录到目标Arduino(请参见图6)。

图6:Burn Bootloader选项(来源:作者屏幕截图)

如果微控制器或Arduino开发板可以与Arduino IDE程序通信,则具有多种优势,例如能够使用Arduino IDE的串行监视器在运行时检查结果。 (“串行监视器”在一个单独的窗口中打开,充当接收和发送串行数据的独立终端。)

如果引导加载程序未加载到微控制器中,则它将无法使用Arduino的功能,也无法与Arduino IDE进行通信。 六  引导加载程序会占用一部分内存。在某些情况下,不需要使用Arduino IDE,因此不需要对引导加载程序进行编程。如果未对引导加载程序进行编程,则可以为主程序草图释放更多的内存。例如,在Arduino UNO中,整体内存大小为32 KB,并且为引导加载程序分配了0.5KB的内存。 七 如果未安装引导加载程序,则可用于主程序草图的总内存更大。

Arduino的 的 非常适合学习和尝试新想法。由于Arduino是开源的,包括硬件设计原理图和Gerber文件,因此任何人都可以复制Arduino,对其进行修改并在需要时在商业环境中使用它。 Arduino的 并非完全是摇钱树,而是爱的劳动,它重新定义了嵌入式硬件的传输方式。

i //ieeexplore.ieee.org/document/8005274

ii //www.arduino.cc/en/Guide/ArduinoISP

ii i //www.arduino.cc/en/Tutorial/ArduinoISP

iv //www.arduino.cc/en/Reference/SPI

v //www.arduino.cc/en/Hacking/MiniBootloader

六 //www.arduino.cc/en/Tutorial/ArduinoISP

七 //en.wikipedia.org/wiki/Arduino_Uno#Technical_specifications

你也许也喜欢:

  • STM8 Nucleo开发板
    用于8位MCU的开发板包括Arduino Uno连接器
  •  Arduino的 扩展板
    Arduino的 的 扩展板可快速设置传感器环境

  • 新的Arduino板包含u-blox无线技术
  •  Uno WiFi
    Arduino的 的 宣布推出带有ATmega4809 MCU的Uno WiFi Rev 2
  •   阿杜伊诺 板
    Arduino的 的 开发板包括WiFi,最新的窄带IoT标准

提起下: 常问问题 , 精选 , 微控制器 标签: 阿杜伊诺 , 基本 , 常问问题

读者互动

评论

  1. 范德米尔(Ruud van der Meer) 说

    七月7,2019在8:18下午

    只是想知道是否有一种方法来编程arduino链’s…

    回复
  2. 沙 说

    九月10,2019在11:40上午

    先生,非常感谢您的出色解释。

    回复
  3. 居里·古普塔 说

    March 23, 2020年at 8:31 am

    很好的解释。谢谢!继续写更多这样的文章。

    回复
  4. 射线 说

    August 7, 2020年at 5:56 am

    一个不错的入门包

    回复
  5. 路易斯坦尼奥 说

    December 3, 2020年at 10:46 am

    我可以将ICSP端口用作SPI(10、11、12和13)引脚吗?

    回复

引用

  1. 使用Arduino ISP对AVR和Arduino微控制器进行编程-imtalking.org 说:
    March 22, 2020年at 11:00 pm

    […] Source […]

    回复

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

主侧边栏

快速设计

组件选择变得简单。

今天尝试
设计快速的globle

EE培训中心教室

“ee

“ee

“ee

“ee

订阅我们的新闻

订阅每周行业新闻,新产品创新等等。

立即订阅

 的RSS 当前的EDABoard.com讨论

  • 开关转换器的尖峰问题
  • 4-20mA电流回路测量保护
  • 用于升压PFC电感器绕组的李兹线?....提供参考数据表?
  • 即使有最大的可用磁芯,500W全桥也提供了过高的增量B
  • 带有MCU的运算放大器电路

 的RSS 当前Electro-Tech-Online.com讨论

  • 4岁的McIntosh前置放大器上闪烁的静音照明LED
  • 寻找两晶体管正向SMPS中的有源铁电感器的电感和铁芯损耗?
  • PIR到Arduino和LED#2
  • 用于升压PFC电感器绕组的李兹线?....提供参考数据表?
  • 小型商机!!!

在推特上关注我们

MicroContrlTips的推文

页脚

单片机技巧

EE World在线网络

  • 快速设计
  • EE World在线
  • EDA董事会论坛
  • 电子技术在线论坛
  • 连接器提示
  • 模拟IC技巧
  • 电力电子提示
  • 传感器提示
  • 测试和测量技巧
  • 电线电缆技巧
  • 5G技术世界

单片机技巧

  • 订阅我们的新闻
  • 与我们一起做广告
  • 联系我们
  • 关于我们
在推特上关注我们在Facebook上添加我们在YouTube上关注我们 在Instagram上关注我们

版权© 2020 ·WTWH Media LLC及其许可方。版权所有。
未经WTWH Media事先书面许可,不得复制,分发,传播,缓存或以其他方式使用本网站上的资料。

隐私政策

<input id="t7AHUhH"><i class="uZwpT2U"></i></input>


  1. <input id="MfmhhtB" class="MgWJzNc"></input>



    <article class="dA9bZxl"></article>



        • <base class="MKCVBsU"></base>