用USBISP/USBasp编程器给ATmega32U4下载Arduino bootloader引导程序
ATmega32U4

ATmega32U4是一个低功耗Microchip 8位AVR RISC微控制器,具有32KB自编程闪存、2.5KB SRAM、1KB EEPROM、USB 2.0全速/低速设备、12通道10位A/D转换器和JTAG接口,用于芯片调试。该设备在16 MHz下实现了高达16 MIPS的吞吐量。可在2.7-5.5v的条件下工作。Arduino Leonardo开发板用到正是ATmega32U4这款MCU。
bootloader引导程序是什么
类似电脑主板的BIOS,开机或重启时先自动进行BIOS设置。有些单片机出厂时芯片厂商已经烧录好了引导程序,例如串口方式下载的引导程序。单片机复位或重新上电时先从引导程序执行代码检测是否有其他命令需要执行,再跳转到用户程序代码执行。
Arduino开发板预先写入了bootloader,通过USB转串口芯片下发下载命令给Arduino开发板使其复位进入bootloader,bootloader识别到下载命令后接着引导新的用户程序下载到单片机内部flash,若没有识别到下载命令则跳转到原来的用户应用程序继续执行。
对于新出厂的ATmega32U4芯片内部是没有arduino引导程序的,需要用户预先下载bootloader后才能用串口下载自己的应用程序.在某些罕见情况下旧的bootloader会导致一些bug,这个时候写入新版本bootloader可能会解决问题。本文将会讲解ATmega32U4烧录Arduino Leonardo的bootloader。
引导程序下载接口与连接
本次bootloader烧录为了方便会用到ATmega32U4的一个简单的外围电路板。 
它已经把ATmega32U4的ICSP(in-circuit serial programmming)接口引出,如上图圈起来的几个SPI引脚。 有了ATmega32U4的工作电路和找出了ICSP接口后,我们还需要一个下载器(USBASP下载器)  下载器引脚定义:
引脚序号 | 定义 |
---|
1 | MOSI | 2 | VCC | 3 | NC | 4 | GND | 5 | RST | 6 | GND | 7 | SCK | 8 | GND | 9 | MISO | 10 | GND |
开发板与下载器接线:
下载器 | ATmega32U4开发板 |
---|
MOSI | MOSI | MISO | MISO | VCC | 5V | GND | GND | RST | RES | SCK | SCK |
 安装好下载器的驱动后,下载器连接电脑 
配置熔丝位与bootloader烧写
连接好下载器和ATmega32U4开发板,检查好设备管理器有正确识别到下载器后,打开ProgISP下载软件 
熔丝位配置如下:  熔丝位配置非常重要,如果设置错误,就会锁死单片机,而且USBASP无法连接单片机,按照上图配置好熔丝位,注意熔丝位一定要配置正确。 配置好熔丝后点配置熔丝位窗口的叉叉关闭这个串口,进行第4、5步调入FLASH然后烧录。 点击调入FLASH  然后找到Arduino IDE 的安装目录(X:XX\arduino\hardware\arduino\avr\bootloaders\caterina)前面的“X”是根据您的电脑实际安装目录而定。选择下图框着的文件打开
 选择好文件后点击自动,开始烧录。  烧录成功后界面与提示  检验bootloader是否烧录成功: 把开发板插到电脑的usb口上打开设备管理器,查看端口是否出现了Arduino Leonardo(XX) 
 ATmega32U4的bootloader烧录完成。
注意
特别需要注意的是熔丝位的设置,熔丝位设置错了,很有可能会把单片机锁死导致USBASP无法连接单片机 。
|