Wasabules/picoscope-libusb

GitHub: Wasabules/picoscope-libusb

一个开源的PicoScope 2204A USB示波器驱动与跨平台GUI,绕过专有SDK实现协议级控制与信号分析。

Stars: 0 | Forks: 0

# picoscope-libusb **PicoScope 2204A** USB 示波器的开源 libusb 驱动 + 跨平台 GUI。通过对 USB 协议进行逆向工程从零构建—— 无需专有的 PicoSDK 运行时。 目标平台为 **Linux 桌面** 和 **Android**(通过 NDK + JNI)。通过 Wails 构建的 Windows/macOS 版本尚未针对硬件进行验证。 ## 包含内容 | 路径 | 描述 | |---|---| | `driver/` | C 驱动(`libpicoscope2204a.{so,a}`)——核心部分,纯 libusb | | `gui/` | Wails 桌面 GUI(Go + Svelte),通过 cgo 链接到驱动 | | `android-lib/` | 将驱动和 JNI shim 封装为 AAR 的 Gradle 模块(通过 JitPack 分发) | | `python/` | 参考 Python 驱动(PyUSB)——适合快速测试 | | `tools/firmware-extractor/` | 从您自己的设备中提取固件 | | `docs/` | 协议逆向工程笔记和操作指南 | ## 快速开始 (Linux) ``` # 1. udev rule (只需一次, 以 root 身份) echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="0ce9", MODE="0666"' \ | sudo tee /etc/udev/rules.d/99-picoscope.rules sudo udevadm control --reload && sudo udevadm trigger # 2. 构建 driver cd driver && make # 3. 构建并运行 GUI cd ../gui && wails build -tags webkit2_41 ./build/bin/picoscope-gui ``` 首次启动时,GUI 会检测到缺失的固件,并提示为您提取固件 (需要预先安装官方 Pico SDK)。CLI 替代方案: ``` ./tools/firmware-extractor/extract.sh ``` 如果您没有安装 SDK,请参阅 [`docs/firmware-extraction.md`](docs/firmware-extraction.md) 了解 离线 提取方法。 ## 硬件 - **型号**:PicoScope 2204A (VID=`0x0CE9`, PID=`0x1007`) - **ADC**:8 位,100 MSPS(单通道),50 MSPS(双通道) - **通道**:2 个模拟通道(A + B),1 个信号发生器 - **量程**:50 mV – 20 V(9 个量程) 理论上只需微调即可在相近型号(2202、2203、2205、2205A)上运行—— 但尚未测试。 ## 状态 ### 驱动 | 功能 | 状态 | |---|---| | 数据块捕获(单 / 双通道) | ✅ | | 快速数据块流式传输(~330 kS/s) | ✅ | | 原生流式传输(~100 S/s,DC 监控) | ✅ | | SDK 风格的连续流式传输(无间隙,500 ns..1 ms/样本,默认 1 MS/s) | ✅ | | SDK 流式传输:客户端自动停止(`set_sdk_stream_auto_stop`) | ✅ | | 触发:边沿 / 窗口 / PWQ | ✅ | | 触发:ETS(等效时间采样) | ✅ | | 增强分辨率(通过过采样最高可达 12 位) | ✅ | | 信号发生器:频率 | ✅ | | 信号发生器:任意波形(AWG + LUT) | ✅ 代码路径已集成 | | 信号发生器:幅度 / 偏移 | ⚠️ 在受测设备上硬件无响应 | | DC 偏移校准(出厂表 + 运行时自动拟合) | ✅ | | 按量程覆盖增益/偏移的 API | ✅ | | EEPROM 读出(序列号、校准日期、原始页面) | ✅ | ### GUI | 功能 | 状态 | |---|---| | 实时示波器视图,支持时基、平移、缩放、暂停 | ✅ | | 测量(Vpp、平均值、RMS、频率、占空比、上升/下降沿等) | ✅ | | FFT + 光标(X/Y)+ 余晖 + XY 模式 + 数学运算 | ✅ | | 协议解码器:UART、I²C、SPI、CAN | ✅ | | 时间码解码器:DCF77、IRIG-B、AFNOR | ✅ | | CSV + PNG 导出,预设保存/加载 | ✅ | | 固件提取向导(首次启动) | ✅ | 请参阅 [`docs/protocol.md`](docs/protocol.md) 获取逆向工程后的协议 参考。 ## 许可证 MIT —— 请参阅 [`LICENSE`](LICENSE)。明确排除固件 blobs。 ## 贡献 欢迎提交 Pull requests。请保持提交聚焦,在提交前请务必在 `gui/` 目录下运行 `go test ./...`,并在 `driver/` 目录下运行 `make test`。新的协议 发现请更新至 `docs/protocol.md`。
标签:libusb, USB, Wails, 云资产清单, 硬件驱动, 示波器, 跨平台GUI, 逆向工程