一、说明
本文是在整理相关资料的基础上,系统地介绍使用ATmega328p芯片制作Arduino Uno R3开发板的过程。请注意,所有操作指引未经过实践验证,请自行判断正误。
本文的下个更新版本将展示完整的实践过程,敬请期待!
以下将ATmega328p芯片简称为"芯片",将Arduino Uno R3开发板简称为"Arduino"。
二、判断Bootloader的有无
Bootloader是一种小型程序,预先写入微控制器或微处理器的存储空间中,用于在设备上电或复位时加载和启动主要程序。它相当于一个"启动加载程序",可以帮助设备执行自我启动和固件升级。
在制作Arduino之前,需要判断所购买的芯片是否已经带有Bootloader,建议购买已经烧录Bootloader的芯片。
如果不确定所购买的芯片是否已经烧录Bootloader,可以通过以下方式判断。
1、连接电路
将一个 LED(加限流电阻,如 220Ω)连接到芯片的第 19 引脚(D13),并将 LED 的负极接地。
2、上电测试
使用5V电源,并将芯片的正负极和电源的正负极相连接。
如果 Bootloader 已正确烧录,当芯片上电或复位时,D13 引脚的 LED 会闪烁几次。这是因为 Arduino Bootloader 默认配置会在启动时闪烁 D13 引脚,表示芯片已经加载 Bootloader。
三、正式制作
1、为芯片烧录Bootloader
对于没有配置Bootloader的芯片,需要使用另一块能够正常工作的Arduino开发板,为芯片烧录Bootloader。
所需准备的材料包括:++面包板、芯片、Arduino、杜邦线++。
(1)将 Arduino设置为ISP
打开 Arduino IDE,选择 文件 -> 示例 -> 11.ArduinoISP -> ArduinoISP。
在 Arduino IDE 中,选择 工具 -> 开发板 -> 您所用的 Arduino(如 Arduino Uno)。
选择相应的端口。
上传 ArduinoISP 示例代码到您的 Arduino 开发板,使其作为 ISP 编程器。
(2)连接 Arduino和芯片
断开 Arduino 的 USB 连接。
使用面包板和跳线,按照以下方式将 Arduino的ISP接口与芯片连接:
|-------------|--------|
| Arduino | 芯片 |
| D10(SS) | 1号引脚 |
| D11(MOSI) | 17号引脚 |
| D12(MISO) | 18 号引脚 |
| D13(SCK) | 19号引脚 |
| 5V | VCC |
| GND | GND |
(3)打开烧录Bootloader选项
将 Arduino 再次通过 USB 连接到电脑。
在 Arduino IDE 中,选择"工具 -> 开发板 -> Arduino Uno"。
选择"工具 -> 编程器 -> Arduino as ISP"。
然后选择"工具 -> 烧录引导加载程序"。
(4)等待烧录完成
烧录过程中,Arduino 的 LED 会闪烁。
Arduino IDE 的底部会显示烧录完成的提示("完成烧录引导加载程序")。
2、使用芯片搭建Arduino
(1)所需材料
|--------------|--------|
| 零件 | 数量 |
| ATmega328p芯片 | 1 |
| 16 MHz 晶振 | 1 |
| 22 pF 电容 | 2 |
| 0.1 µF 电容 | 1 |
| 10 kΩ 电阻 | 1 |
| 5V电源及稳压模块 | 1 |
| 面包板 | 1 |
| USB-TTL转换器 | 1 |
(2)准备工作
将芯片正确插入面包板。
(3)连接晶振
将 16 MHz 晶振连接到 ATmega328 的 9 号引脚(XTAL1)和 10 号引脚(XTAL2),晶振的两端各连接一个 22pF 的电容,电容的另一端接地。
(4)电源滤波
使用 0.1 µF 电容在 Vcc 和 GND 之间进行电源滤波。
0.1 µF 电容可以滤除电源上的高频噪声和瞬态干扰,稳定芯片的供电电压,防止供电波动对芯片工作产生不良影响。
当芯片内部电路切换状态时,会产生微小的电流波动,滤波电容能够提供瞬时电流,减少这种波动,避免电源电压短暂下降。
(5)上电电路
使用 10kΩ 电阻将 ATmega328 的 1 号引脚(复位引脚)连接到 5V,以确保微控制器复位引脚高电平。
(6)稳压供电
使用5V电源及稳压模块,接入到 ATmega328 的 7 号引脚(Vcc)和 20 号引脚(AVcc)。同时,将地线接入 8 号引脚和 22 号引脚(GND)。
(7)连接 USB-TTL 转换器
使用 USB-TTL 转换器连接到 ATmega328 的 RX(2 号引脚)和 TX(3 号引脚)引脚,用于烧录代码。
确保 USB-TTL 转换器的 GND 接地,VCC 接 5V(部分转换器可以用 3.3V,视转换器情况而定)。
(8)测试
打开 Arduino IDE,选择 Arduino Uno 作为开发板。
通过 USB-TTL 转换器连接到电脑,将代码上传到芯片中,如果上传的程序能够正常运行,说明Arduino制作已经完成。