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供电。
| 引脚号 | 信号名 | 信号名 | 引脚号 |
|---|---|---|---|
| 1 | UHSIF_CLK_IC | GND | 2 |
| 3 | UHSIF_D00_IC | UHSIF_D01_IC | 4 |
| 5 | UHSIF_D02_IC | UHSIF_D03_IC | 6 |
| 7 | UHSIF_D04_IC | UHSIF_D05_IC | 8 |
| 9 | UHSIF_D06_IC | UHSIF_D07_IC | 10 |
| 11 | UHSIF_D08_IC | UHSIF_D09_IC | 12 |
| 13 | UHSIF_D10_IC | UHSIF_D11_IC | 14 |
| 15 | UHSIF_D12_IC | UHSIF_D13_IC | 16 |
| 17 | UHSIF_D14_IC | UHSIF_D15_IC | 18 |
| 19 | GND | GND | 20 |
| 21 | UHSIF_D16_IC | UHSIF_D17_IC | 22 |
| 23 | UHSIF_D18_IC | UHSIF_D19_IC | 24 |
| 25 | UHSIF_D20_IC | UHSIF_D21_IC | 26 |
| 27 | UHSIF_D22_IC | UHSIF_D23_IC | 28 |
| 29 | UHSIF_D24_IC | UHSIF_D25_IC | 30 |
| 31 | UHSIF_D26_IC | UHSIF_D27_IC | 32 |
| 33 | UHSIF_D28_IC | UHSIF_D29_IC | 34 |
| 35 | UHSIF_D30_IC | UHSIF_D31_IC | 36 |
| 37 | GND | GND | 38 |
| 39 | 5V | 5V | 40 |
2×16 2.54mm J3排针定义:
J3排针引出了剩余的UHSIF数据信号,同样地以CLK为Target做了严格等长走线。初次之外将主板上的USART接口也连接到了排针,处理方便调试,USART6还可以作为免按键ISP通讯接口。USB_BOOT通过一个阻断电阻连接倒USB_FS_DP是使能USB ISP的配置信号。
| 引脚号 | 信号名 | 信号名 | 引脚号 |
|---|---|---|---|
| 1 | UHSIF_D32_IC | UHSIF_D33_IC | 2 |
| 3 | UHSIF_D34_IC | UHSIF_D35_IC | 4 |
| 5 | UHSIF_D36_IC | UHSIF_D37_IC | 6 |
| 7 | UHSIF_D38_IC | UHSIF_D39_IC | 8 |
| 9 | UHSIF_D40_IC | UHSIF_D41_IC | 10 |
| 11 | UHSIF_D42_IC | UHSIF_D43_IC | 12 |
| 13 | UHSIF_D44_IC | UHSIF_D45_IC | 14 |
| 15 | UHSIF_D46_IC | UHSIF_D47_IC | 16 |
| 17 | GND | GND | 18 |
| 19 | USART6_TX_IC | USART6_RX_IC | 20 |
| 21 | USB_BOOT | GND | 22 |
| 23 | 3V3 | GND | 24 |
| 25 | 3V3 | 3V3 | 26 |
| 27 | GND | GND | 28 |
| 29 | 5V | 5V | 30 |
| 31 | GND | GND | 32 |
USB3.0测速
沁恒官方提高一个USB3.0的测速例程,位于CH32H417EVT\EVT\EXAM\USBSS\DEVICE\CH372Device,只需要做一点修改(主要为串口打印相关),即可移植到主板中。下传速度的平均值可达430.51MB/S,已经接近5Gbps的理论极限。
上传的平均速率为实测为405.92MB/S,之比下传速度略低。