0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用沁恒CH32V003在没有USB、触摸、LCD驱动芯片的情况下实现3位7段LCD显示

KiCad ? 来源:KiCad ? 作者:KiCad ? 2025-08-27 11:21 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一个非常硬核的黑客项目,以极简的设计,使用沁恒的 ch32v003,在不使用驱动芯片的前提下,实现支持 USB-C、触控的 7 段 LCD 屏幕。

wKgZO2iueo6AViMQAAf4IXHx2YQ547.png ?项目概览

在电子工程领域,通过创新的软硬件协同设计,可以在极简的硬件平台上实现复杂功能,本项目即是对此理念的一次成功实践。项目把一块普通的7段LCD,转化为一个具备触摸感应能力并通过USB-C接口与主机通信的功能性设备。整个系统的核心是一颗 CH32V003 RISC-V 单片机神奇的地方在于它本身并不具备 USB 通信、LCD 驱动或触摸感应的专用硬件支持

看下设计的原理图,芯片就一个成本一块多的 ch32v003 加一个 5V 转 3.3 V 的 LDOXC6206P332MR-G,没有任何额外的驱动芯片:

wKgZO2iueo6ANpKHAAKloFiyH9Y508.pngJ1 也并没有使用 USB 接插件,而是直接把 PCB 做成了插头:wKgZO2iueo6AHwCUAAYYiEcIKBM035.png为了确保正常的拔插,要求:
  • PCB 厚度必须为 0.6 mm
  • PCB 应使用 ENIG(化学镀镍浸金)工艺,而不是 HASL(热风整平或喷锡),因为 HASL 可以提供更平滑、耐磨的接触面。
wKgZO2iueo6AdSg_AAJSVvOqvlM801.pngCH32V003 无需预编程,只需能接触到GND/SWIO/5V引脚即可烧录引导加载程序(bootloader)。LCD 屏是淘宝上找来的,不带驱动,驱动电压为 3V,符合以下规格:wKgZO2iueo-ARgkVAAQBuDSyEeA411.pngwKgZO2iueo-AU1HZAAI5nXIpRek192.pngwKgZO2iueo-AEKd0AAKJs4Uhmqg604.png

USB 协议的软件实现

由于 CH32V003 并不带原生的 USB 控制器,作者使用了 Bit-Banged 的技术理念,利用软件直接操控 GPIO 引脚来模拟硬件协议,生成速率为 1.5Mbps 的差分信号。虽然会占用大量CPU开销,但还是成功模拟了一个 USB1.1 设备。

当然,需要对这一做法进行权衡:虽然节省了 USB PHY 物理层和控制器硬件的成本,但牺牲了宝贵的CPU周期和系统的稳定性。

在此基础上,还开发了自定义的引导加载程序(Bootloader),使得设备固件可以直接通过USB接口进行更新,无需借助外部编程器。

GPIO 直接驱动 LCD

对于无源 LCD 的驱动,项目通过单片机的 GPIO 引脚产生精确的时序脉冲,并利用其内部的上下拉电阻,以软件模拟专用驱动芯片的功能,从而控制各笔段的显示。与简单的直流驱动 LED 数码管不同,扭曲向列(Twisted Nematic, TN)液晶显示器(LCD)需要交流(AC)驱动波形,以防止液晶材料发生电化学降解。完全通过软件直接生成了这种复杂的驱动波形

对于基本的 LCD 输出,可以使用一个简单10 阶段波形

  • 阶段 0-3= 依次将特定的 COM(公共电极)引脚驱动为低电平,同时将任何需要点亮的 SEG(段电极)引脚驱动为高电平

  • 阶段 4= 空闲时间,确保没有电压差。这也有助于控制对比度。

  • 阶段 5-8= 依次将特定的 COM 引脚驱动为高电平,同时将任何需要点亮的 SEG 引脚驱动为低电平

  • 阶段 9= 用于控制对比度的另一半空闲时间。

wKgZO2iueo-ADyveAAHaH_Y6rbE408.png

可以看到,使用 USB 会把事情搞砸,因为当 USB 运行时,它无法将 SEG 引脚的电压稳定在VCC的一半。

wKgZO2iueo-AaIZIAAHknBSkKYo653.png对于触摸功能,输出会通过内部上拉电阻从低电压状态重复释放,同时使用 ADC 测量电压以获取触摸量。wKgZO2iuepCAPt7uAAHVV7lIpAg621.png这看起来很完美,直到 USB 来搅局。wKgZO2iuepCAMRrnAAI96gtGlJI574.png

基于 ADC 的电容式触摸感应

这或许是项目最具创新性的部分。它在没有任何额外硬件的情况下,将 LCD 的引脚转变成了电容式触摸传感器。这一功能的实现,巧妙地利用了 CH32V003 内置的10位模数转换器(ADC)

其测量过程是一个经过精确计时的序列:

  1. 首先将线路驱动至低电平,以对任何电容进行放电。

  2. 在启动 ADC 采样的同时,为 LCD 的所有端口应用上拉电阻。ADC 的设置和采样时间点必须精确对齐到Fcpu/2

  3. 这个过程使得 LCD 引脚上的电压开始上升,其上升速率与引脚上的总电容成反比。当手指触摸玻璃时,会引入额外的人体电容,从而减缓电压上升的速度。

  4. 通过高速、多次的采样(即过采样技术),系统能够从噪声中提取出这一微弱的电容变化信号,从而判断触摸事件的发生。

  5. 为提高输入的可靠性,软件层面还集成了迟滞算法,用以有效区分真实的“按下”与“释放”动作,防止了误触发。

并发性的挑战

该项目的核心成就不仅在于实现了以上三项功能,更在于让它们在一个资源极其有限(2KB SRAM, 16KB Flash)的单核MCU并发运行

这三项任务对系统资源的要求是相互冲突的:USB 需要高优先级时序来保证其比特流的完整性;LCD 需要一个持续、有节奏的刷新率(约30-60 Hz)来避免闪烁;而触摸感应则需要一个安静、稳定的模拟环境以进行精确的 ADC 读数。

波形图中的干扰现象,是系统运行在其能力极限的典型症状。来自 USB 任务的中断可能会延迟 LCD 的刷新,导致可见的闪烁,或者扰乱触摸感应的 ADC 采样窗口,导致错误的读数。与基于硬件的解决方案相比,这是位冲撞(软件)方法最主要的缺点和风险

该项目的成功严重依赖 于CH32V003 的青稞 V2A 内核及其 GPIO 端口的特定且可预测的性能特征。将此代码移植到另一个 MCU,即使规格相似,也极有可能需要对所有时序关键的循环和中断处理程序进行全面的重新校准。所以说这并非一个可移植的解决方案。太黑科技了!

一定要那么省钱?那么黑科技么?

该方案过于黑科技,对技术要求的门槛较高,且不易移植,主要目的是炫技+装逼 :P。从产品开发的角度看,这可能并不是一个好的方案,虽然成本很低、BOM极简,但同时带来了系统不稳定的问题。因此,基于不同的场景,需要采用的方案。作为对比,我们完全可以使用性能更强、外设更多的 MCU,下表是一个 MCU 解决方案的对比,可做参考:wKgZO2iuepCAdK7cAACNFgNiPOI039.png同样的,如果不拘泥于成本,对稳定性要求较高,我们也完全可以使用外部的驱动芯片,这样会极大的降低固件的复杂性,对开发人员更友好,也利于缩短开发难度和周期。下图是一个简单的对比:wKgZO2iuepCAWTisAABwagHoCS0929.png当然,除了升级硬件、使用外部 IC 外,也可以使用更直接的方法:购买与集成的显示模块,比如直接采购 SparkFun 的串行7段显示器(板载ATMega328)。

结束语

该项目成功地将无连接器 USB-C 设计、软件实现的 USB 通信以及新颖的电容式触摸感应方法整合在一套极低成本的硬件方案中。它充分展示了在资源受限的微控制器上,凭借对电子原理的深刻理解和精巧的软件工程,依然能够开发出功能丰富且实用的嵌入式系统当然,黑客的项目虽然很酷,但在实际的产品设计中并不常用。我们应该根据不同的需求、场景,制定合理的方案。这也是硬件开发好玩的地方!最后,项目的仓库在这里:

https://github.com/cnlohr/ch32v003_3digit_lcd_usb/

有兴趣的小伙伴可以自己尝试复刻!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8274

    浏览量

    275319
  • LCD驱动
    +关注

    关注

    4

    文章

    92

    浏览量

    27059
  • RISC-V
    +关注

    关注

    46

    文章

    2647

    浏览量

    49374
  • 沁恒微电子
    +关注

    关注

    4

    文章

    29

    浏览量

    1901
  • ch32
    +关注

    关注

    0

    文章

    74

    浏览量

    952
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CH585开发板免费试用体验】+TFT屏显示驱动

    CH585开发板上,为了便于显示便给它配置了一个SPI接口的TFT显示屏,其分辨率为240
    发表于 07-05 19:42

    CH585开发板免费试用体验】+品读老朋友的新产品

    。 图2 开发板正面 图3 开发板背面 CH585 评估板上配有的资源有: 开关 S1 :供电开关,用于切断或连接外部 5V 供电或 USB
    发表于 07-03 11:04

    CH585开发板免费试用体验】+开箱及开发环境准备

    介绍 [高速USB+NFC蓝牙MCU/SoC CH585 - 南京微电子股份有限公司]() 芯片数据手册 [
    发表于 06-27 21:44

    FZH1691 4×36 LCD显示屏高集成度驱动控制芯片中文手册

    、高分辨率的显示场景。以下是其核心特性与设计要点:关键特性基础参数驱动能力:支持 4×36(144 LCD 显示,适配
    发表于 05-23 10:19 ?0次下载

    FZH1692P/Q 4×40 LCD显示屏高性能驱动控制芯片中文手册

    高分辨率、低功耗的显示场景。以下是其核心特性与设计要点:关键特性基础参数驱动能力:支持 4×40(160 LCD 显示,适配
    发表于 05-23 10:18 ?0次下载

    低电流LCD驱动抗噪液晶屏驱动芯片VKL060

    :LD0稳压 IC; 水位检测 IC)LCD 驱动、液晶显示 IC、LCD 显示、液晶显示
    发表于 05-12 17:07

    国产芯片怎么样?

    国产芯片技术实力与应用评价 ?一、核心技术优势? ?接口技术垂直整合能力? 自研USB、蓝牙、以太网等专业接口IP及RISC-V内核,
    发表于 03-20 10:51

    微蓝牙转接芯片系列解析:CH9140/CH9141/CH9142/CH9143

    微电子(WCH)推出的蓝牙转接芯片系列(CH9140、CH9141、CH9142、
    的头像 发表于 03-18 16:56 ?1304次阅读
    <b class='flag-5'>沁</b><b class='flag-5'>恒</b>微蓝牙转接<b class='flag-5'>芯片</b>系列解析:<b class='flag-5'>CH</b>9140/<b class='flag-5'>CH</b>9141/<b class='flag-5'>CH</b>9142/<b class='flag-5'>CH</b>9143

    国产芯片USB PHY芯片替代方案解析

    USB PHY芯片CH132系列的核心优势分析
    的头像 发表于 03-11 14:01 ?1063次阅读
    国产<b class='flag-5'>芯片</b><b class='flag-5'>沁</b><b class='flag-5'>恒</b><b class='flag-5'>USB</b> PHY<b class='flag-5'>芯片</b>替代方案解析

    国产芯片USB 3.0芯片替代方案解析

    微电子推出的多款USB 3.0 HUB芯片凭借高性能、高集成度及工业级设计,可实现对多款主流芯片
    的头像 发表于 03-10 15:24 ?1761次阅读

    其他芯片太贵?聊聊可直接替代USB HUB控制器 USB3.0 HUB芯片有哪些?

    CH634系列USB 3.0 HUB控制器凭借高性能和兼容性设计,已成为多款国际主流芯片的国产替代方案。以下是该系列
    的头像 发表于 03-10 14:42 ?2142次阅读

    CH541:E8051内核的USB双功能MCU

    CH541是电子基于增强型E8051内核设计的8USB单片机,支持最高24MHz系统主频,具备高效的指令执行能力
    的头像 发表于 03-06 10:13 ?665次阅读
    <b class='flag-5'>沁</b><b class='flag-5'>恒</b><b class='flag-5'>CH</b>541:E8051内核的<b class='flag-5'>USB</b>双功能MCU

    TFP401APZP驱动LCD上电白屏的原因?如何解决?

    的。 以下为相关图片、原理图和测试视频。 视频1是正常的,正常工作的情况下,拔掉HDMI线,LCD显示是黑色。在给主控板上电,且未接HDMI线时,
    发表于 12-23 08:43

    通用抗干扰码屏驱动液晶驱动芯片LCD驱动芯片VK1626(48SEGx16COM)

    ; LED驱动IC; 触摸IC; LDO稳压IC; 水位检测IC) LCD驱动、液晶显示IC、LCD
    发表于 10-12 15:44

    小封装驱动点阵式液晶显示IC-VKL092Q码屏LCD驱动

    高亮显示场合 VK16K33AA 3.0~5.5V 驱动点阵:128 共阴驱动:168; 共
    发表于 10-08 16:37