当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]过去几个月里,我一直在设计自己的开发板,以充分发挥其性能。如今,我正在使用WCH的CH32V003F4P6芯片,对这款微控制器所提供的功能和性能感到非常惊叹。我之所以从Arduino转而选择它,是因为这是一款32位RISC-V微控制器,价格仅约0.10美元(十美分),是目前市面上最便宜的32位MCU之一。但我知道Arduino的魅力,正因如此,我便围绕这款芯片设计了一款完全定制的开发板,并采用了Arduino Nano的外形尺寸。

过去几个月里,我一直在设计自己的开发板,以充分发挥其性能。如今,我正在使用WCH的CH32V003F4P6芯片,对这款微控制器所提供的功能和性能感到非常惊叹。我之所以从Arduino转而选择它,是因为这是一款32位RISC-V微控制器,价格仅约0.10美元(十美分),是目前市面上最便宜的32位MCU之一。但我知道Arduino的魅力,正因如此,我便围绕这款芯片设计了一款完全定制的开发板,并采用了Arduino Nano的外形尺寸。

但这次我改进了这个版本,加入了内置的USB转串口、3.3V LDO稳压器、编程接口头、指示LED灯,以及所有GPIO引脚均拆分到2.54mm接口上。其设计理念很简单:制作一个极简、低成本、开源的开发板,任何人都可以自行制造和组装。CH32V003F4P6主频为48MHz,配备16KB闪存和2KB SRAM。

这已经足够用于学习嵌入式编程、读取传感器、驱动显示屏以及制作小型原型。未来,我将开发出与CH32V003兼容的库,使其功能类似于Arduino。尽管底层架构完全不同,但这款板子仍能带来类似Arduino的即时体验。在本文中,我将带你一步步完成整个硬件设计原理图、元器件选型、PCB布局以及闪烁测试代码的编写。整个项目均为开源,你可以下载设计文件并自行搭建。我使用EasyEDA完成了PCB设计,并通过JLCPCB以仅2美元的价格完成制造。此外,我还订购了模板,以便为测试目的组装几块电路板。

CH32V003F4P6是什么?

CH32V003F4P6 是 WCH(南京清恒微电子)基于 QingKe RISC-V2AA 处理器核心的通用型微控制器。与基于 ARM Cortex-M 的 MCU 不同,该芯片采用开放的 RISC-V-V-V 指令集架构。F4P66 型号采用 TSSOP-200 封装,体积小巧,但仍可通过细尖焊锡枪手工焊接。这款芯片的亮点在于其性价比。每单位价格约为 0.1000 美元,即可获得一个运行频率为 48MHz 的 32 位处理器,其速度甚至超过 Arduino Uno 的 ATmega328P。它支持 I2C、SPI、USART、ADC、定时器,甚至内置运算放大器。编程通过位于 PD11 引脚上的单线调试接口 SWIOIO 进行,使用 WCH 的 WCH-LinkEE 编程器和 MounRiver Studio IDE 实现。起初编程可能感觉有些麻烦,但请相信我,其实非常简单。

以下是CH32V003F4P6的主要规格:

•核心:QingKe 32位RISC-V2A处理器

•时钟频率:48MHz(带内部或外部振荡器)

•闪存:16KB

•SRAM:2KB

•封装:TSSOP-20(提供18个GPIO引脚)

•工作电压:3.3VV 至 5V

•外设:1个USART,1个I2C,1个SPI,1个10位ADC(8通道),2个定时器,1个OPA

•调试接口:单线SWIO(在PD1上)

所需部件

所有部件均来自LCSC,为标准零件。以下是您需要的物品:

•1x CH32V003F4P6 - RISC-V-V 微控制器(TSSOP-20)

•1x CH340C - USB转TTL串口转换器(SOP-16)

•1x HT7833-A-EV - 3.3V LDO稳压器(SOT-89-3)

•1个USB Type-C接口 - 用于供电和串行通信

•1个24MHz晶体振荡器 - SMD 3.2x2.5mm封装

•6个100nF电容 - C0402封装(去耦与滤波)

•2个1uF电容 - C0402封装(LDO输入/输出)

•6个1k电阻 - R0402封装(用于LED限流和复位上拉)

•2个5.1k电阻 - R0402封装(USB-C CC下拉电阻)

•4个红色LED - 0603封装(TX、RX和2个通用引脚)

•1个触控开关 - SMD 3.9x3.0mm(复位按钮)

•2个12针母头 - 2.54mm间距(GPIO扩展接口)

•1个3针公头 - 2.54mm间距(WCH-LinkE编程)

电路图

电路通过USB Type-C接口(U4)供电。我在CC1和CC2线上使用了两个5.1k的下拉电阻(R4和R7),这是为了让主机能够识别USB-C设备为USB 2.0设备所必需的。如果没有这些电阻,许多USB-C电源将无法提供5V电压。USB提供的5V电压会传送到HT7833-A-EV(U9)低导通压稳压器,将其转换为干净的3.3V电源轨。CH340C(U2)负责USB转UART的转换,因此你可以直接打开串口监视器,通过USB与CH32V003通信,无需外部适配器。此外,我还添加了带有1k电阻的TX和RX指示LED灯(LED3和LED4),以便直观地查看串行通信活动。

CH32V003F4P6(U1)位于电路板的核心位置,其时钟来自一个24MHz的外部晶振。MCU通过PLL内部将该时钟倍频,达到最高工作频率48MHz。复位按钮(SW1)连接至PD7/NRST引脚。在复位线上,我使用了1k电阻(R12)和100nF去抖电容(C9)。所有可用的GPIO引脚均扩展到电路板两侧的两个12针母头接口(U7和U8),与Arduino Nano类似。这使得您可以轻松访问I2C(PC1/SDA,PC2/SCL)、SPI、USART、ADC通道、电源引脚(VIN、3V3、GND)以及通用输入输出端口。

PCB设计

我在EasyEDA中设计了PCB,保持板子尺寸紧凑,以匹配Arduino Nano的外形尺寸。布局优先采用双层结构,确保电源分配简洁高效。在两侧均布设接地平面,形成低阻抗的接地回路。去耦电容尽可能靠近CH32V003和CH340C的电源引脚。晶振放置在MCU振荡器引脚附近,并采用短而对称的走线。USB-C接口位于电路板一端,CH340C和LDO邻近,以缩短信号路径。编程接口位于电路板末端,便于在面包板上使用时进行操作。

我亲自组装了这个电路板,但请相信我,如果没有加热板和合适的焊接设备(如显微镜和热风枪),0402尺寸的小元件是无法焊接的。然而,凭借五年的焊接经验,我可以在两小时内自行完成焊接工作。虽然需要进行大量的焊点调试,但你可以选择JLCPCB的SMT组装服务,从而省去手工焊接的步骤。你只需要一份完整的BOM文件和CPL文件,这些文件已附在本文档中。

设置开发环境

与Arduino不同,CH32V003使用的是WCH自有的工具链。你需要MounRiver Studio,这是一个基于Eclipse的免费IDE,已预装RISC-V GCC编译器,因此无需额外安装工具链。此外,还需要WCH-LinkE编程器,它通过三针编程接口(U6)连接到电路板,仅需三条线:3V3、SWIO(PD1)和GND。该编程器单独出售,售价5美元,可在此处购买。

单线调试接口(SWIO)是WCH RISC-V芯片的一大特色。与ARM芯片上的SWD需要两个引脚(SWDIO和SWCLK)不同,SWIO仅使用一个引脚同时传输数据和时钟信号。这使得编程头文件更简洁,并为您的应用释放了更多GPIO引脚。工作流程非常简单:您只需在MounRiver Studio中编写代码、编译,连接WCH-LinkE,然后进行闪存操作。完成闪存后,断开编程器,板子即可通过USB供电独立运行。内置的CH340C则可作为串行监视器,通过USART printf实现调试。

眨眼测试代码

我每次拿到一块新的电路板时,首先都会进行一次闪烁测试。如果LED灯在闪烁,说明MCU正常工作、晶振运行良好,并且你的工具链已正确设置。然后你就可以在附带的下载文件夹中测试一些示例代码了。以下是我在测试时使用的闪烁代码:

首先,我们需要默认初始化GPIO和USART的结构,然后主函数初始化系统时钟和延迟计时器,并调用我们的GPIO配置。

该代码与Arduino中的void setup和void loop类似。循环进入一个无限循环,每500毫秒切换一次LED。代码结构遵循WCH标准外设库模式,类似于STM32标准外设库。`debug.h`头文件包含了所有必要的外设定义和延时函数。

实用提示与建议

在搭建和测试这个电路板的过程中,我学到了一些经验。HT7833 LDODO 能很好地工作,但USB供电可能会带来噪声,具体取决于你的电脑或充电器,建议在模拟线路中增加额外的滤波,或者使用电池供电以获得更清晰的结果。

CH32V00333 芯片采用 TSSOP-200 封装,可用细尖焊锡笔和助焊剂进行焊接,但我建议使用焊膏和热风枪(如果有的话),这样对 04022 封装的元器件也更方便。如果 WCH-LinkE 无法检测到芯片,请再次检查编程头上的 3V3 和 GNDND 连接,并保持线路短小,因为 SWIO 对信号完整性非常敏感。对于串行调试,只需在终端上打开 1152000 波特率即可,内置的 CH340CC 将处理其余工作。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

在设计我们的控制器时,我希望采用一个简洁的设计,遵循Xbox手柄的按键布局。我基本保持了按键布局不变,但将整体造型从传统的手柄设计改为圆润的长方体形状,并带有弧形背部。该设计极简,为了美观,我计划使用两种颜色打印部件。

关键字: ESP32C6 开发板 3D打印

空气污染是全球日益严峻的问题,细颗粒物(PM2.5)因其能够深入肺部并进入血液,成为最危险的污染物之一。无论您担心的是室内空气质量、野火烟雾还是城市污染,掌握实时数据都能让您采取有效行动。

关键字: PM2.5 传感器 Arduino

该项目提供了一套高效、远程遥测记录系统,用于跟踪离网太阳能系统的发电与耗电情况。通过利用Arduino Pro Mini 3.3V的超低静止电流特性,该记录器最大限度地降低了系统开销,确保监控硬件本身不会耗尽电池储备。

关键字: 太阳能 Arduino INA219

在搭建显示屏(使用Arduino和硬件)时,我常常感到沮丧:需要刷写程序、线缆可能损坏、导线松脱,或者板子突然烧坏。最终我可能只能花10到20秒(如果运气好)来测试一下,把字体向左移动三个像素是否“感觉正确”。

关键字: 显示屏 Arduino Python

我从事电能计量IC的研发已有段时间。在尝试了接口较为简单的BL0937之后,今天终于拿到了BL0940。两者在结构上相似,都是单相电能计量IC,但最让我感到意外的是其功能特性。与BL系列中较为简单的BL0937不同,BL...

关键字: Arduino 交流电能 BL0937

DS18B20 是一种数字温度传感器,有两种版本:小型 TO-922 包装版和防水型,后者通常被金属管封装,并配有长电缆。两者均能提供数字温度读数,适用于多种室内外项目。DS18B20 采用了一种称为“单线通信”(1-W...

关键字: Arduino DS18B200 温度传感器

EASY-EAIAI 编译环境是由广州凌茂科技独立开发的在线编译环境(开发板在线),可在 PC PC 终端与开发板终端之间建立实时同步映射关系,确保在 PC PC PC 端进行交叉编译时,能够实时链接到开发板的依赖库。

关键字: 开发板 计算机 RV1126B

PCB丝印常被视为纯粹的技术性产物,而非一种通信媒介。在两种情况下,可用性工作往往被认为比“真正”的工程工作次要。我们需要更加关注用户体验(或开发者体验),以让所有用户受益,包括初学者和资深开发者。这并不一定意味着要做出...

关键字: 开发板 PCB Arduino UNO

作为创客,我们常常会看到满堆的损坏电子设备,等待着被重新利用。与其直接丢弃这些废弃物品,我决定将一部旧的、损坏的智能手表改造成一个功能齐全、小巧如钥匙扣的游戏主机。我的目标是打造一个体积微小却极具娱乐性的装置,同时通过回...

关键字: 智能手表 ESP32 Arduino

本实验/项目的目标是在基于STM32F407ZGT6的RT-Spark开发板上实现硬件定时器中断以及前台/后台任务调度系统。通过配置两个硬件定时器TIM2和TIM3,以不同速率切换两个内置LED灯;同时在KEY_UP按钮...

关键字: 定时器 开发板 STM32F407ZGT6
关闭