自制 USBasp
本文将
STEP BY STEP
介绍如何制作一个 USBAsp 烧录器,如果在制作过程中遇到问题,请先检查焊接是否有问题,再检查是否与本教程的操作是否有出入
准备材料
- Arduino UNO
- USBasp 根据 PCB 打板,并准备好上面的所有元器件
- ArduinoIDE
- AVRDUDE 软件
- Zadig 驱动安装器
- usbasp 固件
要点提醒
- 电路中的 3V3、68Ω 相当重要,不能随意更换为其他参数
- 仅支持 Atmega8、Atmega48、Atmega88 系列单片机制作 USBasp
- 如果你对你的焊接水平不够自信,那么最好先焊接好 USBasp 上的 Type-C 接口,然后再用万用表检查是否短路和虚焊,避免烧毁 PC 的 USB 接口
开始制作
给 Arduino UNO 烧写 ArduinoISP 程序
- 打开 ArduinoISP 示例代码
- 并将其编译上传到 Arduino UNO
- 打开 ArduinoISP 示例代码
将两块板子按以下表格连接
Arduino UNO USBasp(SPI2) 5V(OUT) VCC GND GND D13 SCK D12 MISO D11 MOSI D10 RST 先烧录一个测试代码以保证 USBasp 上的单片机工作没有问题
首先短接 USBASP、SELF_PROG 跳线
如果是全新的芯片,有可能会无法写入,在烧录之前需要用镊子短接一下 SLOW_SCK编译并上传 GPIO 检测代码
1
2
3
4
5
6
7
8
9
10
11
12
13void setup()
{
DDRC = 0xFF;
PORTC = 0xFF;
}
void loop()
{
PORTC = 0xFE;
delay(500);
PORTC = 0xFD;
delay(500);
}等待写入完成后,PC0、PC1 这两个 IO 口连接的 LED 将会开始交替闪烁(如果没有输出,那你就得检查下焊接了)
通过 AVRDUDE 配置 USBasp
如果是全新的芯片,有可能会无法写入,在烧录之前需要用镊子短接一下 SLOW_SCK
打开 AVRDUDE,并烧录固件,我这里使用的是 Atmega8a
设置熔丝位(千万千万要小心,设置错误会导致锁芯片)
- 这里提供几个芯片的熔丝设置
TARGET LFUSE HFUSE Atmega8 0xEF 0xC9 Atmega48 0xFF 0xDD Atmega88 0xFF 0xDD
如果你的芯片与我使用的不一样,那就需要参考芯片手册,并在 https://www.engbedded.com/fusecalc 先尝试熔丝位设置
- 这里提供几个芯片的熔丝设置
断开 SELF_PROG 跳线
安装驱动
- 断开两块板子的连接,将 USBasp 连接到 PC
- 打开设备管理器,没问题的话将会显示 USBasp,如果显示的是 libusb 那就需要安装驱动
- 打开 Zadig,在 Options 中勾选 “List ALL Devices”
- 在第一个下拉框中选中 libusb 设备
- 在驱动选择中选中 WinUSB,然后点击 Install WCID Diver
- 安装完成后设备管理器应该就正常显示 USBasp 了
在 ArduinoIDE 中使用 USBasp 给其他芯片烧写 bootloader
这里以 Atmega328P-AU 为例
题外话
这块板子也可以作为最小板使用,只需要断开 USBASP 跳线,一些外围电阻、稳压管可以去掉
- 标题: 自制 USBasp
- 作者: CListery
- 创建于 : 2024-07-18 17:04:41
- 更新于 : 2024-11-15 15:53:32
- 链接: http://clistery.github.io/2024/07/18/mcu/make-a-usbasp-for-atmel-avr-mcu/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论