一块基于 CH32V305FBP6 + ES9018K2M 的 USB Type-C 转 3.5mm 耳机小板。这个仓库收录最终 V2 固件、嘉立创EDA工程、可烧录文件和实板频谱照片,供 DIY 和复现实验参考。
- USB Audio Class 2.0 双声道异步播放,带显式反馈端点。
- 原生 48 / 96kHz:16bit、32bit;192kHz:16bit,保留原来的 32bit 模式。未提供 44.1kHz 系列、192kHz / 32bit 或 DSD。
- 同一 USB 连接提供 CDC 调试串口,可在播放中打开、关闭、重连,查看水位、反馈与欠载信息,支持
p=0.001、i=0.0004、d=0在线调参。 - DAC GPIO1 → PA5 捕获失锁;PC7 为锁定灯、PC8 为开流灯、PC9 锁存异常,均低电平点亮。PC9 也记录缓冲欠载/上溢,不能仅凭灯判断 DPLL。
- 已修正手机暂停后 USB 总线复位未清零地址的问题;iQOO Neo11 / Android 16 的暂停、恢复经实机反馈正常。
| 部分 | 本工程采用的器件 / 配置 |
|---|---|
| USB / I2S 主控 | WCH CH32V305FBP6 |
| DAC | ES9018K2M,I2S 从机,I2C2 配置 |
| 模拟输出级 | 工程选用 HT97220LSQER;实装差分转单端级约 0.1 倍(−20dB) |
| 3.3V 电源 | RT9013-33GB,模拟 / 数字供电分开配置,详见原理图 |
| USB 接口 | Type-C 公头,工程选型 GT-USB-8016B |
| 音频基准 | MCU OSC_IN / OSC_OUT 上的无源 24.576MHz 晶体 |
| DAC XI | PC6 / I2S2_MCK;拆除 DAC 原独立晶振,XO 悬空 |
| I2S | PB12 = LRCK,PB13 = BCLK,PB15 = SD |
| DAC 控制 | PB10 / PB11 = I2C2,PB14 = DAC 复位 |
| 失锁输入 | PA5 ← DAC GPIO1;原耳放复位连接已断开 |
装配前必看:提供的 .epro 包含“小尾巴”和“小尾巴_V2”两个版本,请选 V2。V2 的 X3 仍保留旧 8MHz / X50328MSB2GI 库属性;当前固件要求实装 24.576MHz,不能照这个旧料号直接下单。 晶体负载、电阻比和跳线按实装核对;原始工程文件保持原样,差异见 硬件说明。0.1 倍模拟衰减是为了提高 DAC 数字侧的工作幅度后再衰减,并不代表提高了芯片本身的固有 SNR。
CPU 使用 HSI / 主 PLL,标称 144MHz;USBHS PHY 使用 HSI /2 的标称 4MHz 参考。HSE 24.576MHz 单独供音频 PLL3:
24.576MHz /4 ×16 = PLL3CLK 98.304MHz
PLL3 VCO = 196.608MHz → I2S2
Fs = 196.608MHz / (256 × N)
| Fs | 分频 N | PC6 MCK = 256Fs | BCLK:16bit / 32bit |
|---|---|---|---|
| 48kHz | 16 | 12.288MHz | 1.536 / 3.072MHz |
| 96kHz | 8 | 24.576MHz | 3.072 / 6.144MHz |
| 192kHz | 4 | 49.152MHz | 6.144MHz / 不提供 |
三档均为整数倍频、整数分频,没有分频舍入误差;实际精度仍取决于晶体容差,PLL 也仍有抖动。MCK / BCLK / LRCK 共源;feedback 只协调 USB 送数速率,不改变 I2S 分频。表中是配置计算值,尚未用仪器实测各引脚频率。
MCU 手册的 I2S BCLK 上限为 8MHz;192kHz / 32bit 双声道需要 12.288MHz,因此只提供原生 192kHz / 16bit。USBHS 使用 HSI 是这块现板的实验配置,尚未完成全温度、长期或跨主机认证。更改晶体或焊回 8MHz 必须同时重做音频时钟方案,不能只换晶体后继续使用本固件。
频谱照片水印日期为 2026-10-21,未记录当次固件版本及实际采样率,不作为本版 192kHz 模式的模拟性能验收。
作者粗估信号与显示噪底相差约 20dB;照片中游标差为 21.75dB。小信号下看起来并不漂亮。测试使用 8bit 示波器,平均功能也存在使用问题,量化、量程、平均与 FFT 设置都会影响所见噪底。
粗估约 60dB,照片中游标差为 61.375dB,可看到其他谱线 / 谐波。这里的“最大音量”仅指当次设置,没有确认 USB 样点已达到数字满幅或模拟输出极限,实际输出可能还有余量。
这两组数值是单频正弦 FFT 峰值相对显示噪底的粗略观察,不是带宽积分、去除谐波后的标准 SNR,也不是 THD+N、SINAD 或动态范围测试。未完整记录负载、探头、窗函数、FFT 分辨率带宽和数字幅度,不能直接与手册指标对比;FFT 分辨率和窗函数如何影响读数,可参考 Keysight FFT 测量说明。
作者为这批标称 ES9018K2M 的器件支付约 1~2 元人民币 / 颗,先后尝试了三种板子 / 改版。所见波形与预期手册表现差距很大,时域上也观察到较“脏”的信号,但没有保留时域照片。器件来源或真伪、板级供电与布局、模拟级、测试源和测量方法都可能参与其中,尚未确定唯一原因,不能由这些照片推断所有原厂 ES9018K2M 的水平。
实际戴上作者所用耳机,没有听到明显可闻噪声。这是个人听感,不代替噪声测试。做到这里,作为低成本 DIY 小尾巴已经可以收工了;也算给“发烧”叙事泼一盆冷水:芯片名字、价格和宣传,代替不了实测与自己的耳朵。公开这些不漂亮的结果,希望别人选型时能多一份参考。
- 使用 MounRiver Studio 2 打开
firmware/LittleTail.wvproj,使用配套 RISC-V GCC(本版 GCC 8.x)完整构建;新克隆需先由 IDE 生成构建目录。 - 默认输出为
firmware/obj/LittleTail.hex/.elf。通过 WCH-Link 烧录,硬件必须符合上面的 V2 实装要求。 - 已验证版本位于
releases/v2-2026-10-23/,包含 HEX、ELF 和来源摘要;开发基线为fc29a35,源码未因发布而改变。 - 描述符审计:
python firmware/tools/uac2_audit/audit_uac2.py releases/v2-2026-10-23/LittleTail_V2_192k16.elf。 - Windows 板上脚本见 CDC / Audio 回归说明。它会播放静音并发送 PID 指令;独占模式才能确认原生格式,共享模式可能重采样。
本版已完成完整构建、64736 个有效字节烧录校验、描述符 0 错误 / 0 警告、五种原生格式、保持 CDC 打开经过六次格式切换,以及 192kHz / 16bit 播放中的 CDC 开关 30 轮。测试中发现并修正了批量 IN 旧包重复问题。CDC 仍按每次最多 64 字节提交,512 字节满包吞吐未验收。详细边界见 验证记录。手机实际选择 192kHz、模拟性能、长期温度测试仍未逐项验证。
firmware/ V2 成品源码、MounRiver 工程、调试文档与工具
hardware/ 嘉立创EDA原始 .epro、BOM 快照、实装差异说明
pic/ 成品与两张原始频谱照片
releases/v2-2026-10-23/ 已烧录验证的 HEX / ELF / manifest.json
固件内部保留开发时的文档和历史排查记录;其中本机路径和旧配置仅供追溯。构建入口以本仓库 firmware/ 为准。
整个组合工程尚未单独指定统一许可证。CherryUSB 和 WCH 等第三方文件保留各自版权与许可说明。


