news 2026/8/28 5:14:24

CH32H417小系统开发板

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CH32H417小系统开发板

CH32H417小系统开发板

本项目是基于CH32H417Q的开发板。PCB为两层板,追求低成本实现。目前除了UHSIF和SerDes功能没有验证,板卡集成所有功能都做了验证。主板的结构参考了树莓派的结构。
详细信息可以访问我的仓库:https://github.com/TriEverthing/CH32H417Q_DevBrd

CH32H417芯片介绍

CH32H417是基于青稞RISC-V5F和RISC-V3F双内核设计的互联型通用微控制器。CH32H417集成了USB 3.2 Gen1控制器和收发器、百兆以太网MAC及PHY、SerDes高速隔离收发器、Type-C/PD控制器及PHY,提供SD/EMMC控制器SDMMC、500MBytes通用高速接口UHSIF、DVP数字图像接口、单线协议主接口SWPMI、可编程协议I/O控制器PIOC、灵活存储控制器FMC、DFSDM、LTDC、GPHA、DMA控制器、多组定时器、8组串口、I3C、4组I2C、2组QSPI、4组SPI,2组I2S、3组CAN等外设资源,内置了5M采样率双12位ADC单元、20M采样率10位高速HSADC单元、16路Touchkey、双DAC单元、3组运放OPA、电压比较器CMP等模拟资源,支持10M/100M以太网通讯,支持USB 2.0和USB 3.0,支持USB Host主机和USB Device设备功能、Type-C和PDUSB快充功能,支持SerDes高速隔离及远距离传输,支持双内核分工提升网络协议处理效率和通讯响应速度。

其实WCH之前就推测出USB3.0的RISC-V的32微控制器,即CH56X系列。但是恕我直言其芯片外设不多,且很多外设功能简单,比如它们的SPI只支持2种模式和8bits数据格式,且无法复用为I2S功能,纯纯的阉割版SPI。在比如它CH569没有独立的DMA模块,这…。当然这些槽点在H417都被完善了,甚至其USB3.0速度也被WCH做了优化。

硬件设计

为了实现两层板设计我在供电设计上做了牺牲,默认VIO18和VDDIO连接在了一起,只有3.3V。当然也能选择通过去掉跳线电阻使用芯片LDO输出供电,但这会影响TF和SdCrad的供电。虽然没有WCH开发板灵活,但我觉得这样取舍是值得的。

主板下侧接口以此为USB1.1,USB3.0 Gen1,LCD,电池,Lineout输出和五向ADC按键。右侧依次为1x9mm单模光纤收发光模块和100M-Base-T以太网。
U.FL接口连接了芯片的HSADC1输入,不过输入没有缓冲和保护。主板Nor Flash接口是QSPI x4,支持内存映射模式。特别注意的是因为和UHSIF冲突问题SD无法使用SDIO接口,使用SPI代替。如果需要SDIO,只能靠设计排针外接模块实现。

GPIO排针

主板上有4个排针,规格分别为:2×20 2.54mm排针,2×16 2.54mm排针,1×4 2.54mm排针和1×3 2.54mm排针。1×4的排针为SWD调试接口,为了保证信号完整性只能靠近USBC的插座。1×3的排针引出了芯片的I3C接口。

2×20 2.54mm J2排针定义

J2排针引出了前32位UHSIF+CLK信号。走线提供了完整的地回路,且以CLK为Target做了严格等长走线。为了方便扩展,在该排针提供了5V供电。

引脚号信号名信号名引脚号
1UHSIF_CLK_ICGND2
3UHSIF_D00_ICUHSIF_D01_IC4
5UHSIF_D02_ICUHSIF_D03_IC6
7UHSIF_D04_ICUHSIF_D05_IC8
9UHSIF_D06_ICUHSIF_D07_IC10
11UHSIF_D08_ICUHSIF_D09_IC12
13UHSIF_D10_ICUHSIF_D11_IC14
15UHSIF_D12_ICUHSIF_D13_IC16
17UHSIF_D14_ICUHSIF_D15_IC18
19GNDGND20
21UHSIF_D16_ICUHSIF_D17_IC22
23UHSIF_D18_ICUHSIF_D19_IC24
25UHSIF_D20_ICUHSIF_D21_IC26
27UHSIF_D22_ICUHSIF_D23_IC28
29UHSIF_D24_ICUHSIF_D25_IC30
31UHSIF_D26_ICUHSIF_D27_IC32
33UHSIF_D28_ICUHSIF_D29_IC34
35UHSIF_D30_ICUHSIF_D31_IC36
37GNDGND38
395V5V40
2×16 2.54mm J3排针定义:

J3排针引出了剩余的UHSIF数据信号,同样地以CLK为Target做了严格等长走线。初次之外将主板上的USART接口也连接到了排针,处理方便调试,USART6还可以作为免按键ISP通讯接口。USB_BOOT通过一个阻断电阻连接倒USB_FS_DP是使能USB ISP的配置信号。

引脚号信号名信号名引脚号
1UHSIF_D32_ICUHSIF_D33_IC2
3UHSIF_D34_ICUHSIF_D35_IC4
5UHSIF_D36_ICUHSIF_D37_IC6
7UHSIF_D38_ICUHSIF_D39_IC8
9UHSIF_D40_ICUHSIF_D41_IC10
11UHSIF_D42_ICUHSIF_D43_IC12
13UHSIF_D44_ICUHSIF_D45_IC14
15UHSIF_D46_ICUHSIF_D47_IC16
17GNDGND18
19USART6_TX_ICUSART6_RX_IC20
21USB_BOOTGND22
233V3GND24
253V33V326
27GNDGND28
295V5V30
31GNDGND32

USB3.0测速

沁恒官方提高一个USB3.0的测速例程,位于CH32H417EVT\EVT\EXAM\USBSS\DEVICE\CH372Device,只需要做一点修改(主要为串口打印相关),即可移植到主板中。下传速度的平均值可达430.51MB/S,已经接近5Gbps的理论极限。

上传的平均速率为实测为405.92MB/S,之比下传速度略低。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 5:12:12

高频必考!差分数组:批量区间更新如何做到 O(1) 一条?

LeetCode 1109「航班预订统计」,场景真实得不像算法题:你收到2万条预订记录,每条都是“从第a天到第b天,每天加c个座位”。 要你算出每一天的总座位数。大多数人第一反应: for first, last, seats in bookings: for …

作者头像 李华
网站建设 2026/8/28 5:11:47

C函数_函数调用表达式

什么是函数调用表达式?函数调用表达式的格式是:函数名(参数列表)它的含义是:调用一个函数,并产生一个值——这个值就是函数的返回值。所以函数调用表达式本身是有"值"的,它的值就是函数 return 回来的那个东…

作者头像 李华
网站建设 2026/8/28 5:10:51

混合LoRA专家路由:不确定性不够,信息价值才是关键

刚接触 LoRA 和 MoE 路由的人,往往先被一个问题卡住:手头已经有好几个训练好的 LoRA 专家,系统不知道当前请求该交给谁。于是大家会想到让路由器看不确定性,也就是“哪个模型更犹豫就避开哪个”。但这个思路往往只能帮你排除错误答…

作者头像 李华
网站建设 2026/8/28 5:10:45

Zig Io.Threaded:用线程池封装阻塞I/O的设计与取舍

Zig 的 Io.Threaded 是我翻标准库时觉得最值得停下来看一遍的设计之一。它解决的是很具体的问题:你想在 Zig 里写看起来正常的同步文件读写,又不想让主线程被一次慢盘、一次网络请求卡住。Io.Threaded 的做法,是把所有会阻塞的 I/O 操作丢给线…

作者头像 李华
网站建设 2026/8/28 5:09:13

蓝桥杯国赛填空题复盘:从暴力枚举到数学优化与边界处理

1. 项目概述:为什么我们需要复盘2020年蓝桥杯国赛填空题?如果你是参加过蓝桥杯,或者正在备赛的选手,看到“2020年蓝桥杯B组国赛填空题整理”这个标题,大概会心一笑。这玩意儿,懂的都懂。它不像那些动辄几百…

作者头像 李华