站内搜索
发作品签到
如何为你的Arduino及兼容板烧录BootLoader/修改CH343P配置

分类

技术干货

如何为你的Arduino及兼容板烧录BootLoader/修改CH343P配置

原创
8.7k
14
25
5

简介

为你的 Arduino 及兼容板烧录 BootLoader,并为 CH343P 芯片定制 USB 配置。内含 Arduino ISP 一些特点解读。

简介:为你的 Arduino 及兼容板烧录 BootLoader,并为 CH343P 芯片定制 USB 配置。内含 Arduino ISP 一些特点解读。
更新时间:2023-07-10 10:11:31

写在前面

本教程适合想要为你的基于 8 位 AVR 芯片的 Arduino 开发板及其第三方兼容板烧录 BootLoader 的人。以下是一些典型的 8 位 AVR Arduino 开发板:

  • Ardunio Uno R3,基于 ATmgea328P;注意 Uno R4 不是。
  • Ardunio Nano,基于 ATmgea328P;
  • Arduino Mega 和 Mega 2560,基于 ATmega 1280 和 ATmega 2560;
  • Arduino Leonardo 和 Micro,基于 ATmega 32U4;
  • 第三方支持的芯片,如各种 ATmega,ATtiny 等等。

本教程使用一块第三方制造的 Arduino Mega 2560 作为烧录器为一块基于 ATmgea 2560 的 Arduino 兼容板“冷饭开发板 Mod.A Rev.3”烧录官方版本的 BootLoader。软件使用 Arduino IDE 2.0.4,但是其他版本(比如 1.x 版本、其他 IDE)也都是一样的操作。

在这篇文章的最后部分,还有为 CH343P 定制 USB 信息的内容。该内容适用于 冷饭开发板 Mod.A Rev.3 和一切使用了 CH343P 的电路,但并不适合原版 Arduino 开发板。

准备工作:烧录器

烧录器是将程序烧写进空白开发板的工具,而 BootLoader 就是一个程序。如果你有一个专门的烧录器,可以跳过本章。这一章将会教你用一块可以正常工作的 Arduino 开发板作为烧录器时要做的事。

烧录 ArduinoISP

步骤一:打开 Arduino IDE,在菜单中找到“文件-示例”,选择 ArduinoISP。

img

步骤二:将你的正常使用的 Arduino 开发板插上电脑,并且选择这个开发板。特别注意:请使用 5V 电平的开发板,如果你使用的是 3.3V 电平的开发板,请自行添加必要的电平转换。

image.png

步骤三:烧录这个程序。你已经准备好了一个 ArduinoISP!

image.png

解读 ArduinoISP:那些网传教程没有告诉你的事情

烧录完程序,你的 ArduinoISP 已经准备好工作了。但是,这里还有一些迷惑性的细节是许多教程不会提及的:

引脚不一样?到底怎么连?

如果你要用一个 Arduino 为另一个 Arduino 烧录程序,你应该将它们的 ICSP 接口互相连接起来。然而,有些教程里会告诉你使用 11、12、13 号 GPIO,然后其他一些板子就会停止工作。官方代码注释中是这么说的:

> On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as digital pin 11, 12 and 13, respectively. That is why many tutorials instruct you to hook up the target to these pins. If you find this wiring more practical, have a define USE_OLD_STYLE_WIRING. This will work even when not using an Uno. (On an Uno this is not needed).

在一个 Arduino Uno R3 开发板上,ICSP 接口的 MOSI,MISO 和 SCK 引脚确实在物理上连接到数字端口 11、12、13,这也是为什么很多教程会直接让你使用这些端口;但是如果你和我一样使用的是一个 Mega 2560(或者其他)开发板,这些关系可就全被打乱了。具体各个开发板是如何将 ICSP 接口需要的信号和数字端口结合起来的,我们在下一章会详细解释;但是,直接使用 ICSP 接口的引脚做连接当然是最方便的。

如果你非得用 11、12、13 引脚输出 ICSP 信号,请在 ArduinoISP 的代码开头加上这句话:#define USE_OLD_STYLE_WIRING。然后请使用这三个引脚而不是 ICSP 引脚进行连接。

指示灯

img

是的,ArduinoISP 拥有三个指示灯。你并不需要连接它们就能正常使用,但它们向你提示了一些重要信息。以下是官方代码注释中的内容:

>Put an LED (with resistor) on the following pins:
9: Heartbeat - shows the programmer is running
8: Error - Lights up if something goes wrong (use red if that makes sense)
7: Programming - In communication with the target

这些引脚对应着这些内容。在将 LED 连接到引脚的时候,记得加上限流电阻!

  • Pin 9,心跳指示灯:一个呼吸灯,不断的变亮和变暗。它代表着 ArduinoISP 中的程序正在正常运行。如果它一段时间没有变化了,你也许应该重新复位一下。
  • Pin 8,错误指示灯:如果哪里出错了,它就会亮起来。官方建议你使用一个红色的 LED。
  • Pin 7,工作指示灯:这个灯代表正在与目标板通信。如果这个时候拔下连接线或者断电,目标板中的程序可能会损坏,甚至不能再被正常编程!

烧录 BootLoader

连接烧录器与目标板

将 ArduinoISP 和要烧写的开发板互相连接 ICSP 接口,除了 /RST 复位信号,将 ArdunioISP 的数字端口 10 连接到目标板的 /RST 脚。哪个都行。以下是 ICSP 接口的定义,请一对一连接,不用交换顺序:

名称序号序号名称
MISO125V
SCK34MOSI
/RST56GND
  • 第一脚旁边往往有数字 1,或者一个小点或圆圈;
  • ICSP 有时也被写作 ISP。它们并不是一个东西,但因为本质上是同一种接口,所以经常被弄混。但如果你的板子上真的是 10 引脚的 ISP 接口而不是 6 引脚的 ICSP 接口,请按照 ISP 接口的定义去连接。信号线都是一样的,只是顺序不同。
  • RST 是 RESET 的缩写,上方的横线、前面的斜杠或波浪号都代表它是一个低有效逻辑,也就是当它和地接通时,单片机会复位。

如果你用的是一个专门的烧录器,请直接按照烧录器上的定义连接到目标板的 ICSP 接口。如果你的某个板子上没有 ICSP 接口,你可以按照下表的定义直接从数字端口找到这些信号线:

ICSP 信号Uno R3 中的数字端口Mega 2560 中的数字端口
MOSI1151
MISO1250
SCK1352

img

烧录引导程序(BootLoader)

以下步骤请按顺序进行。否则,可能找不到下一步的按钮在哪。

步骤一:在“工具-开发板”中选择你的目标板的型号(或者兼容型号)。这里,我的目标板正好也使用 Mega 系列的 BootLoader。

img

步骤二:如果你使用的是前文介绍的 ArduinoISP,在“工具-编程器”里选择“Arduino as ISP”。如果你的 ArduinoISP 使用的开发板是基于 ATmega32U4 的,例如 Leonardo,选择“Arduino as ISP (ATmgea32U4)”。如果你用的是其他编程器,就选择对应的名字。

img

步骤三:点击“工具-烧录引导程序”。

img

结束:在各种 LED 一通乱闪之后,如果看到这个提示,就表明成功为目标板烧录了 BootLoader。

image.png

你的目标板上的自带 LED (通常是数字端口 13,视各开发板具体定义而定)现在会开始闪烁,以提示你确实完成了一次烧录。你现在可以断开各连接线,并把你的目标板作为一个完整独立的 Arduino 使用了。如果没有...那就检查连线,然后按照上述步骤再烧录一次。

  • 有趣的事实:上面演示的步骤中,烧录的信息经过了三个 AVR 单片机:从电脑经过 USB 进入 ArduinoISP 的 USB 串口通信单片机 ATmega16U2(不是每个板子都有),然后再经过 UART 串口进入 ArduinoISP 的主控,这里是 ATmega2560,然后再经过 ICSP 进入目标板的主控,这里也是 ATmega2560。这导致 ArduinoISP 的工作效率和性价比并不高,但是临时用于烧录 BootLoader 这种小型程序还是挺好用的。

为 CH343P 自定义 USB 信息

本部分教程只适用于 冷饭开发板 Mod.A Rev.3不是必须步骤。但是对于需要的人来说,在自己的开发板上写上自己的名字是一件很有意义的事情。

在开始之前,请下载以下计算机软件。这些软件由沁恒微电子提供,本人不拥有其权利,也不对其安全性负责。

安装驱动。安装过的可以跳过。

打开第一个链接中下载的软件。这是 CH343 的驱动程序的安装程序。直接点击“安装”即可。

image.png

安装成功会有下列提示:

image.png

你可以关闭这个程序了。

配置 USB 信息

打开第二个链接中下载的压缩包,打开“CH34xSerCfg.exe”,并将开发板的 USB 连接到计算机上。即使没有安装驱动,此时电脑也应该提示有 USB 设备接入(比如有提示音),而且开发板上的电源指示灯(PWR 灯)也会亮起。

在软件左上角点击“刷新设备”,然后在右边的列表找到你要烧录的芯片。

image.png

如果右边的参数有“FFFF”之类的无效值,点击“恢复默认值”。否则不能上传修改。

image.png

在右边修改你需要的参数。这里我修改了制造商信息和产品信息,记得把对应的勾打上。建议选择上“CDC模式启用硬件流控”以使开发板在使用系统默认驱动的情况下正常工作。

然后点击“写入配置”。

image.png

如果左下变为“写入配置成功”或者“读取配置成功”而不是“请输入正确参数”什么的,就已经完成了。否则,检查你是不是选择/输入了无效参数。

  • 此压缩包中也有沁恒微电子提供的中文说明书和英文说明书。建议读一读。

其他信息

  • 本文中对于 Arduino 的描述是出于交流学习目的。其中涉及的软硬件资产之权利属于其原始拥有者,例如 Arduino 公司及 Arduino 开源社区。本人并不拥有和宣称 Arduino 的相关权利。“Arduino”是 Arduino 公司拥有的商标。
  • 本文中对于 CH343 的描述是出于交流学习目的。其中涉及的软硬件资产之权利属于南京沁恒微电子股份有限公司。链接中的计算机软件由沁恒微电子提供,本人不拥有其权利,也不对其安全性负责。
  • 本文中有参考和引用 Arduino IDE 中所提供的源代码(Copyright (c) 2008-2011 Randall Bohn,在 BSD-2-Clause 协议下开源)中的注释的部分。
  • 本文中有参考沁恒微电子所提供的说明书的部分。
  • 如果您对本文章有任何意见和建议,或认为本文章侵犯了其他个体的知识产权,请和作者联系。

联系作者

由于平台特性,立创开源平台私信和评论可能不一定能回复、或回复间隔很长,敬请谅解。

本文中使用的开发板之一是 冷饭开发板 Mod.A Rev.3 。正在寻找其他开发板?请查阅 星鸢黛小姐的开发板介绍

添加到专辑
0
0
分享
侵权投诉

评论

全部评论(1
按时间排序|按热度排序

底部导航