Skip to content

About

LittleTail V2: CH32V305 + ES9018K2M USB DAC. UAC2 48/96kHz 16/32-bit, 192kHz 16-bit, concurrent CDC, EasyEDA hardware and measured spectra.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

25 Commits

Folders and files

Repository files navigation

小尾巴 LittleTail V2

English · 固件工程 · 硬件工程与装配差异

一块基于 CH32V305FBP6 + ES9018K2M 的 USB Type-C 转 3.5mm 耳机小板。这个仓库收录最终 V2 固件、嘉立创EDA工程、可烧录文件和实板频谱照片,供 DIY 和复现实验参考。

LittleTail V2 硬件成品

能做什么

  • 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 小尾巴已经可以收工了;也算给“发烧”叙事泼一盆冷水:芯片名字、价格和宣传,代替不了实测与自己的耳朵。公开这些不漂亮的结果,希望别人选型时能多一份参考。

构建、烧录与验证

  1. 使用 MounRiver Studio 2 打开 firmware/LittleTail.wvproj,使用配套 RISC-V GCC(本版 GCC 8.x)完整构建;新克隆需先由 IDE 生成构建目录。
  2. 默认输出为 firmware/obj/LittleTail.hex / .elf。通过 WCH-Link 烧录,硬件必须符合上面的 V2 实装要求。
  3. 已验证版本位于 releases/v2-2026-10-23/,包含 HEX、ELF 和来源摘要;开发基线为 fc29a35,源码未因发布而改变。
  4. 描述符审计:python firmware/tools/uac2_audit/audit_uac2.py releases/v2-2026-10-23/LittleTail_V2_192k16.elf。
  5. 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 等第三方文件保留各自版权与许可说明。

About

LittleTail V2: CH32V305 + ES9018K2M USB DAC. UAC2 48/96kHz 16/32-bit, 192kHz 16-bit, concurrent CDC, EasyEDA hardware and measured spectra.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages