为ATMega328pb芯片烧录Arduino bootloader


摘要

通过将一块Arduino Uno设置成ISP模式,从而实现为空白的ATMega328Pb芯片烧录bootlaoder。烧录了bootlaoder的芯片可以用usb-ttl转换器进行简单快捷的程序下载。


烧录Bootloader的作用

新买的芯片是空白的,需要通过专门的烧录器进行烧录,麻烦且不稳定。通过Bootloader可以让自己设计的程序下载像市售模块一样简单,通过一根串口线即可搞定。

一般情况下微处理器写入程序时都通过专门的编程器进行烧写,但是也可以通过在MCU中预先写入一些程序来实现某些基本功能,这些预先写入的程序代码就是bootloader。这样每次复位时MCU就不是从程序存储器起始位置开始读取命令,而是先加载bootloader,实现一些设置和功能,再开始执行代码。

arduino通过预先写入的bootloader,每次通过串口给arduino板下载程序时,首先会令arduino板复位一次,这样就先进入了bootloader,接着向arduino板发送特定的下载指令,bootloader识别到这些指令后就会紧接着开始接收剩下的新的程序代码写入到内部flash中,如果没有进行下载,bootloader没有识别到下载指令,那么它就会跳转到程序区正常工作。


烧录方式

查阅资料,常见的烧写方式有三种

  1. 使用USBtinyISP编程器烧录
  2. AVR USB编程器烧录
  3. 使用Arduino 作为ISP烧录

这里仅介绍最简单直观的Arduino 作为ISP烧录方式


操作过程

准备工作

需要用到的东西有:

  • 一块arduino开发板(本文使用uno)
  • USB type B线缆(给uno)
  • 自己画的板子
  • usb-ttl转接线
  • 杜邦线若干
将arduino切换至ISP模式

将红框中例程烧录至Arduino UNO
在这里插入图片描述

接线

一共五根线: VCC GND MOSI MISO SCK 注意线序(这里的图片主要说明接线顺序,你得找到自己新板子对应的位置)
在这里插入图片描述

添加三方库

对328p的bootloader烧录可以直接百度到教程,因为这是和uno同款芯片只是封装不同
对于328PB,参考github中minicore教程:

  1. 安装新的开发板(对应328pb芯片的开发板)

*请使用 Arduino IDE 1.6.4 或以上版本。
打开 “文件 > 首选项” 菜单,在 “附加开发板管理器网址” 中添加以下URL

https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json

打开 “工具 > 开发板 > 开发板管理器” 窗口,在列表中找到 “MiniCore”, 选中并安装

稍等片刻,下载安装完成后即可关闭“开发板管理”窗口

Note: If you plan to use the *PB series, you need the latest version of the Arduino toolchain. This toolchain is available through IDE 1.8.6 or newer. Here’s how you install/enable the toolchain:

Open the Tools > Board > Boards Manager… menu item.

Wait for the platform indexes to finish downloading.

The top is named Arduino AVR boards. Click on this item.

Make sure the latest version is installed and selected

Close the Boards Manager window.

设置参数

根据实际情况设置参数,本文中使用16MHz晶振,对应输入电压为5V
在这里插入图片描述

烧录引导程序

点击“烧录引导程序”,一切顺利的话几秒钟就全部完成,arduino IDE显示烧录引导程序完成,uno板子上L指示灯闪烁

烧录正式程序

拆除之前接线,按照上图中“Bootloader:“Yes,UART0””将328PB的VCC、GND、UART0tx\rx连接到usb-ttl,注意本次选用的16MHz晶振要用5V,修改端口至ttl对应串口,编译下载即可。

注意ide提示上传中时需要手动按reset


需要注意的几个事项

  • 晶振的选择与电压有关,16Mhz需要5V,8MHz需要3.3V,板子上空间实在不足可以用内部晶振不过不推荐
  • 板子在设计时要注意留好烧录管脚
  • 仔细阅读github文档,除了没提要先把arduino烧成isp模式外非常详细
  • 刷好bootloader后第一次烧程序可能不需要按reset,后面的都需要
  • 有在usb-ttl芯片RST管脚和329RESET管脚见连一个100nf电容实现自动reset的记载未经核实仅供参考

参考文献

基本上看前三个就够

GitHub - MCUdude/MiniCore: Arduino hardware package for ATmega8, ATmega48, ATmega88, ATmega168, ATmega328 and ATmega328PB

https://blog.csdn.net/feiduoxuetang/article/details/122264992

https://www.jianshu.com/p/2f274f8b3dab

https://www.cyqsd.cn/8770.html、

https://www.basemu.com/comparison-of-three-methods-of-bootloader-for-atmega328p.html

https://blog.csdn.net/qq_42731705/article/details/115741187 作者:苏格兰曲协


本文转载自:https://www.bilibili.com/read/cv20992270

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值