gusmanb/logicanalyzer

GitHub: gusmanb/logicanalyzer

一款基于树莓派 Pico 的 24 通道 100Msps 开源逻辑分析仪,支持多种触发模式和协议解码,提供跨平台 GUI 和 WiFi 连接能力。

Stars: 4635 | Forks: 494

# LogicAnalyzer ## 关于本项目 本 README 是按项目演变日志的形式组织的,目前将保持这种形式。 如果您是第一次接触本项目,想了解这是关于什么的,可以从[这里](https://github.com/gusmanb/logicanalyzer?tab=readme-ov-file#description)开始, 或者阅读 [wiki](https://github.com/gusmanb/logicanalyzer/wiki)。 请注意,文档稍微有些过时,我会尝试在这个夏天更新所有内容。 ## 订购 - 直接订购(视库存情况而定):https://logicanalyzer.rf.gd (目前不接受订单) - PCBWay 订购:https://www.pcbway.com/project/shareproject/LogicAnalyzer_V6_0_cc383781.html ## 外壳 - @Bravo13 为 V6.0 制作了一个非常酷的外壳,您可以在[这里](https://www.pcbway.com/project/shareproject/Enclosure_for_LogicAnalyzer_V6_0_b82ed490.html)订购 ## 下载 - 您可以在 [Releases 部分](https://github.com/gusmanb/logicanalyzer/releases)找到所有已编译的项目。 - 最新版本:Release 6.0.0.1,2025年2月9日 # Beta 6.5 现已可用 想尝试下一个版本吗?查看[此讨论](https://github.com/gusmanb/logicanalyzer/discussions/277) :) # Happy Little Diodes 制作的 ZX Spectrum 分析仪! 如果您对复古计算感兴趣,特别是 ZX Spectrum,您应该看看 Happy Little Diodes 的这个视频。 他开发了一个接口,以非常酷的方式将 LogicAnalyzer 连接到 ZX Spectrum。 不要错过! https://www.youtube.com/watch?v=IHbIW8pi4Vo # Release 6.0 发布了! 终于,Release 6.0 完成了,并且带来了非常多、非常多的变化! 首先,我已经将项目上传到了 PCBWay,我仍然会接单,但由于需求太大,我也将其作为一个共享项目上传了,这样您就不需要等待我有库存了。 项目在这里找到:https://www.pcbway.com/project/shareproject/LogicAnalyzer_V6_0_cc383781.html 目前正在审核中,所以我预计几天后就能上架。 其次,现在 gerber 文件、BOM 和坐标文件都包含在发布包中,这样如果您想从其他制造商那里订购,就不需要在项目中搜索了。 这是关于物流的,现在,简要总结一下变化: - 支持 Pico2,新设计解决了 IO 故障问题。 - 分析软件全面改进,包括加快渲染速度、自动检测分析仪,以及最大的变化,支持所有 Sigrok 协议解码器! - 新的终端捕获应用程序,不再有冗长难懂的命令行,使用终端应用程序配置捕获并通过指定捕获设置文件来触发捕获!(使用 TerminalCapture --help 获取更多信息) - 新的一体化包,两个应用程序合并在一个 zip 中,如果您想同时使用它们! - 还有许多、许许多多的变化。 接下来的几周我会用更新的用法和功能更新 wiki,目前如果您有疑问,请阅读讨论区相关的帖子,当然如果您需要帮助,请随时开一个新帖。 玩得开心! ## 订购 如果您有兴趣购买预制的板子,现在可以在 https://logicanalyzer.rf.gd/ 申请加入列表 ## 订购和赞助,这是怎么回事? 好的,现在来解释一下。现在的请求数量已经到了难以管理的地步,所以我创建了一个网站来更容易地跟踪这些请求,我不想忘记任何人,如果手动管理,我确信在某个时刻我会忘记某人... 如果您发现任何问题,请随时联系我或在讨论区留言。 关于赞助这件事……我从未为这些项目索取过任何东西,但最近很多人问如何捐赠,所以我终于开通了一个 Ko-Fi 账户来接受捐赠。请随意使用,任何捐赠都受欢迎,我会尽可能用它来改进项目 :) 谢谢大家,我在这个项目上收到的支持是惊人的,我从未想过这个项目会引起这么大的兴趣。 ### 谢谢! # 回来了! 嗨。过去几周我在出差,今天刚回来,所以我有一大堆关于项目的邮件和消息没回。 我会在这个周末或下周一回复所有的邮件和请求。 抱歉! :) # 好消息 ![pcb2](https://github.com/user-attachments/assets/91730e9f-7fae-47fc-8f6a-6f84f22fba8e) 新设计的目标之一是克服 Pico 2 存在的问题。至少,最有害的一个问题似乎已经解决了。 在常规设计中,快速/复杂触发有时会卡住,链接功能也无法工作,而在新设计中,触发器似乎可以正常工作。 我需要进行更多测试,因为我在高频下看到了一些响应变化,但我不确定这是由 pico2 本身引起的,还是由收发器引起的,因为分析仪正在将它们推向极限。 我正在使用 200Mhz 的信号测试设备,使用基础 pico 时一切似乎都正常,但在 pico2 上我看到了信号的变化,不过,TXU 的额定频率高达 200Mhz,而我以 400Ms/s 采样(是的,没错,新固件可以在 blast 模式下采样高达 400Ms/s,我会很快添加更多信息,因为 R6.0 非常接近发布了 😄)所以我看到的是采样发生偏斜的捕获。 我使用的信号基本上是方波时钟,所以我注入一个 100Mhz 时钟,它在 200Mhz 变成两个相位,而在 400Ms/s 的 pico2 上,我看到有时一个相位有三个样本,另一个相位只有一个样本,据我所见,总是高电平相位包含三个样本。这可能是由收发器引起的,它们处于极限状态,但也可能是由 pico2 引起的,我怀疑即使有 GPIO 的下拉,信号仍然保持高电平几纳秒,足以产生这些错误读数。 无论如何,至少这只发生在极限速度下,对于常规用例,它不应影响读数,而且拥有三倍的样本确实扩展了可能性。 我会在进行更广泛的测试后在下周添加更多信息。 敬请关注! # 新 PCB 设计 ![pcb](https://github.com/user-attachments/assets/cbf87396-40b4-49de-9542-2da3587a47cd) 我为 6.0 版本创建了一个新设计,目前正在测试中。 它替换了那些难找的排母,使用 0402 类型元件,因此不打算用于手工组装,并且还包括一个 VREF 开关,允许在 3.3v/5v/ext vref 之间切换。 一旦测试完成,我将发布设计,我可能有一些备用的、除了 pico 以外所有元件都已组装好的板子,所以如果您对这些感兴趣,请在讨论区留言(如果我看到有足够的需求,我甚至会考虑制作一批)。 # Pico 2:生而即死。 好的,这是个坏消息。Pico 2 发布时的状态基本上是无用的。在 GPIO 硬件中发现了一个错误,每当您输入高电平时引脚就会锁死,这就是所谓的“Errata E9”。 根据官方勘误表,只有当启用下拉电阻、输入高电平值然后 GPIO 开始输出 2.1v 时才会发生锁死。听起来不太糟,但现实截然不同。我一直在测试它,即使强制禁用下拉电阻,PIO 也会触发锁死。 在这种状态下,如果您需要使用 GPIO 输入任何数据,RP2350 就毫无用处。提供的唯一解决方法是在您要读取数据时禁用引脚,读取后禁用它们以重置引脚状态,但可以想象,这对于 PIO 来说是不可能的,即使可能,捕获速度也会大大降低,以至于分析仪完全没用。 不幸的是,在这种情况解决之前,我必须停止向 Pico 2 的移植工作。 # Pico 2:游戏规则改变者? 我已经开始检查 Pico 2 并将代码移植到它上面。我必须说,这是我做过的最简单的过渡之一,只需重新配置 cmake 脚本,更改几行代码,瞧!项目就在 pico 2 上运行了。 这是基础代码,完全没有改动,但在此基础上我有许多改进要做,从 DMA 开始(Pico 2 不再需要乒乓 DMA,单个 DMA 就可以完成所有工作,大大简化了代码),然后将缓冲区升级到现在的三倍,我预计最多可以有 380k 个样本 :) 话虽如此,我开始检查 pico 2 的极限,然后……嗯,我真的很惊讶,在最初的 pico 上,我只能稳定在 200Mhz,超过那个频率我就遇到 flash 问题并且会挂起,但是,天哪,这个东西(pico 2)现在正以 400Mhz 运行,没有一个 hicup!! 当然,我必须将核心电压提高到 1.4v,而且它变得更热,但我给它加了一个小散热片,它就完全没事了。所以……我需要深入测试一下,但这可能是一个非常非常大的变化,不仅是 pico 的三倍样本,还有两倍的速度! 敬请关注更多新闻! # 寻求帮助! 我正在酝酿一些非常特别的东西,如果您想知道是什么并想帮忙,[请查看这篇文章](https://github.com/gusmanb/logicanalyzer/discussions/127)。 😉 # 更多板子正在进行中! RP2350 的新功能之一是能够拥有两个 XIP 设备,并且拥有完整的设备实现(RP2040 只实现了 READ 功能)。这意味着可以(例如)连接一个 flash 设备*和*一个 PSRAM。 不幸的是,Pico 2 没有暴露 QSPI 引脚,它们直接连接到 flash……但是还有希望!PiMoroni 开发了 PiMoroni Pico Plus 2,其中包含 16Mb 的 flash 和 8Mb 的 PSRAM。 我已经订购了这些新板子之一,并且对它们能做什么有一些想法 :D 目前最可能的一个是:PSRAM 的速度不足以在多通道下以像样的速度采样,但是,它足够快用于存储 ADC 样本,所以我将尝试允许混合模拟和数字通道。模拟通道将比数字通道慢得多(只有 500Ks/s),但它仍然可用于监控电机、舵机或其他东西的行为。由于 PSRAM 是 8Mb,它将允许在单通道模式下存储长达 8 秒的模拟数据(500Ks/s 下每个样本 2 字节,大约是 1Mb/s 的数据),结合升级的板载 ram 和突发模式,这在多个项目中真的很有用。 敬请关注更多新闻! # 令人兴奋的消息!Pico 2 即将推出! 正如你们中的一些人可能知道的,Pico 2 将在这个月发布。新的 Pico 2 是 pico 的一个令人兴奋的升级,更强大的核心,两个备用的 RiscV 核心,三个 PIO 单元而不是两个,以及 520Kb 的 RAM! 这对 LogicAnalyzer 来说可能是一个游戏规则改变者,仅凭新的 RAM 数量,样本量就会大幅增加,我们说的是当前样本数量的三倍! 此外,PIO 方面也有真正令人兴奋的变化,新的 IRQ 系统允许 PIO 单元之间进行通信,这意味着现在可以释放触发引脚,虽然这看起来是一个小变化,但结合新的第三个 PIO 单元,它可能真的很神奇……试想一下,一个以 100Mhz 运行的 64Mb 双 SPI RAM 连接到两个空闲引脚,并由第三个 PIO 单元全速控制…… 我正准备在这个月发布一个版本,但它会被推迟,一旦我收到新的 Pico,我将开始为 Pico 2 进行开发,一旦完成,我将一次性全部发布。 敬请关注! ## 发布版本 5.1 此版本是一个 QoL(生活质量)版本,包含一些功能性修正。有关更多详细信息,请查看发布页面。 ## RELEASE 5.0,Burst 模式来了! 带有令人兴奋功能的新版本! 此版本最大的变化是 Burst 模式。使用 burst 模式,您可以捕获数据块,分析仪将在再次满足触发条件时立即重新准备并捕获更多数据。这将通过丢弃不需要的样本来提高内存使用率!目前只有简单触发模式接受 burst 模式,但将来我会尝试在所有其他触发器中实现它。 有关更多信息,请查看 [wiki。](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#triggers) 还添加了新功能以简化捕获查看器中的导航,如快捷方式和完整捕获的预览。更多信息在 [wiki。](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#navigating-on-the-capture-viewer) 最后进行了多项改进,修正了捕获尾部检测中的一些错误,使用 CDC 传输函数直接改进了 USB 传输等等。 请注意,此版本与其他版本不兼容,协议已更改。驱动程序将检查设备版本,如果低于 V5.0,将不会连接到它。 玩得开心! ## 更新 28/06/2023 - Release 4.5.1 - QOL 改进 此版本包括对应用程序的一些 QOL 更新。 LogicAnalyzer 应用程序: * 如果您重复上次捕获,屏幕上的样本数量将被保留。 * 向协议分析器添加了一个名为“Repeat las analysis”的新菜单条目,它将执行上次执行的分析以加快速度。 * 更改了配置文件的存储位置,它们现在将使用 %appData% 文件夹(Linux 中为 $home/.config)。 * 更改了水平滚动条的可见性。 CLCapture 应用程序: * 现在可以从命令行提供通道名称。 玩得开心! ## 更新 11/04/2023 - Release 4.5 - 支持 RP2040-Zero 和新板定义系统 此版本仅包含固件更新。 首先,RP2040-Zero 现在正式支持(虽然没有针对它的转接板)。 您可以在 [releases](https://github.com/gusmanb/logicanalyzer/releases) 部分下载它的固件。此外,引脚排列已添加到 [wiki](https://github.com/gusmanb/logicanalyzer/wiki/02---LogicAnalyzer-Hardware#barebones-configuration),因此您可以将其用于 bare-bones 配置。 其次,固件已重构,以便更容易添加新板。关于如何添加板的支持的完整说明在 [wiki firmware section](https://github.com/gusmanb/logicanalyzer/wiki/03---LogicAnalyzer-Firmware)。此外,由于某些板包括非常流行的 WS2812 RGB led,固件包含其驱动程序,它是纯基于软件的,不需要定时器或中断,因此如果您想使用它,请随意使用。 如果您添加了对新板的支持,请随时创建包含更改的 pull request :) 玩得开心! ## 更新 25/02/2023 - Release 4.0 上线!通道多多! 嗨,又是我!这是一个 BIG 更新,包含许多新功能和对硬件、固件和软件的改进! 让我们从小事开始:我们有 logo 了!是的,这没什么大不了的,但我讨厌没有一个合适的 logo,所以我设计了一个我认为很适合这个项目的 logo :D 接下来,我们有了一个正式的 Wiki!整个项目都有文档记录:硬件、固件和软件。如果您有任何疑问,请查看它,因为我已经尝试在其中解释与分析仪使用相关的所有内容。如果您发现任何错误或缺失的功能,请开一个 issue,我会尽快更正。 好的,现在是硬件的变化。分析仪有一个新的 pcb,包括两个用于菊链连接分析仪的连接器。您可以使用两根或三根 Dupont 线(中心引脚未使用,它保留供将来使用,我把它留在那里是为了让任何生产这些 PCB 的人都可以轻松修补它们)。 并且固件也已更新以支持菊链。那么,菊链是用来做什么的?好吧,菊链允许在不浪费引脚的情况下链接最多五个分析仪,因此您现在可以捕获海量的 **120 个通道!!!** 查看 Wiki 的 [Connection](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#connecting-to-devices) 和 [Capture](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#capture) 部分,了解所有可能性以及如何使用它们。 现在,软件。它包含许多变化,所以我将从改进开始,然后是新功能。 首先,我改进了样本渲染。它现在更清晰,看起来好多了。此外,用于查看样本开始和结束位置的参考线会自动缩放或移除,有这么多线以至于它们形成了实心灰色背景是没有意义的,所以当太多时它们会自动停用。此外,这允许提高性能,因此现在样本查看器将允许在屏幕上显示多达 2000 个样本而无需任何检查。 ![New render](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/2e1526d18a123748.png) 与此相关,协议分析渲染器已更新,它将占用更少无用的空间,并且如果信息不适合分配的空间,将隐藏信息。 现在,连接系统已更新以包含“multidevice”,这是在使用菊链分析仪时必须使用的设备。 ![Multidevice](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/002f2a01c9123749.png) 接下来,捕获对话框已更新,模式选择器已被移除,模式根据启用的通道自动选择,查看 [Wiki page](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#basic-parameters) 以了解限制和模式。 此外,捕获对话框有一个新的通道选择器,更直观,并且包含通道的名称字段,不是在捕获完成后配置名称(如果您再次捕获,这些名称将丢失),而是可以直接在捕获对话框中输入名称。这些名称将在捕获之间保留(如果您从通道查看器更改它们,这些更改将被尊重)。 这个新的通道选择器还允许显示菊链连接五个设备时最多可用的 120 个通道,当通道列表大于其空间时,选择器将有一个滚动条。 另一个变化,编辑功能已改进和扩展。首先,您不需要创建区域来执行编辑操作,样本范围选择已改进,现在用于这些操作。查看 [Wiki page](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#editing-captures) 以了解其工作原理以及包含哪些新功能的说明。 最后,系统现在可以从头开始创建捕获文件,为此我实现了一种允许以简单方式描述信号的语言,它甚至包括一个彩色语法编辑器,查看 [Wiki](https://github.com/gusmanb/logicanalyzer/wiki/06---The-LogicAnalyzer-program#the-signal-description-language) 以获取此语言的描述! 此外,我已经计划了下一次更新,我不确定它何时准备好,但我肯定会实现它,这是创建 SDL 语言的动机之一:重播捕获! ;) 这是最突出变化的摘要,肯定我忘记了一些,但所有都在 Wiki 中记录,所以请务必查看! 欢迎任何关于更新的反馈,所以不要犹豫开 issue 或开始讨论。 玩得开心! ## 更新 07/02/2023 - 新版本更新了共享驱动程序。 这是一个错误修复版本,随着 Pico-W WiFi 支持的引入,我在驱动程序中使用流统一了网络和串口的传输模式,但我忘记了 .net 6.0 Ports 包会在 Linux 上引起问题,所以以前的版本在接收超过 4k 个样本时会挂起应用程序……哎! 我已经更新了代码以使用我以前使用的相同解决方法,问题已解决。 玩得开心! ## 更新 04/02/2023 - 新版本!修正错误和更多样本! 嗨!这次更新带来了大量新闻。 ### 首先,错误修正。 已修正的最大错误是 Pico-W 中的快速触发。当我实现 Pico-W 时,我进行了广泛的尝试,但我只使用简单触发进行测试。当我尝试在 Pico-W 上使用快速触发时,我惊讶地发现它完全挂起了! 事实是,Pico-W 隐藏了一个我在任何地方都没有找到记录的小秘密,这个小秘密是驱动程序使用 PIO 程序进行传输!快速触发使用完整的 PIO 单元,其所有 32 条指令来创建跳转表,而 CYW 驱动程序使用 PIO1 中的 SM 进行 SPI 传输。所以我尝试交换 PIO 单元,它至少开始捕获了,但捕获从未完成,我从上到下修改了驱动程序,仍然没有发现在启用 CYW 驱动程序后为什么 PIO1 中断根本不起作用,所以我做了一个不需要 IRQ 触发处理程序的变通方法。所以,如果您使用的是 Pico-W,请尽快更新固件。 下一个错误是一个小错误,导致在开始捕获后立即触发时(例如,在进行第一个样本时触发条件已经满足),某些样本没有正确清除。 ### 现在,真正的大新闻,更多样本! 我调整了 PIO 和内存之间的缓冲区传输,它可以容纳多达 131071 个样本!当然,这是以您使用多少通道为代价的,设备现在有三种模式:8 通道、16 通道和 24 通道。 样本限制在此指定: * 模式 8: * 最小预触发样本数:2 * 最大预触发样本数:98303 * 最小后触发样本数:512 * 最大后触发样本数:131069 * 最大总样本数:131071 * 模式 16: * 最小预触发样本数:2 * 最大预触发样本数:49151 * 最小后触发样本数:512 * 最大后触发样本数:65533 * 最大总样本数:65535 * 模式 24: * 最小预触发样本数:2 * 最大预触发样本数:24576 * 最小后触发样本数:512 * 最大后触发样本数:32765 * 最大总样本数:32767 如您所见,使用 8 通道模式,您可以捕获多达四倍于迄今为止可用的样本,这是一个实质性的增加。 用于 8 和 16 模式的通道必须是前几个,您不能选择八个随机通道,这引入了一个限制,它们与复杂和快速触发冲突(不是简单触发,为此您仍然可以使用任何剩余通道)。请记住这一点来计划您如何配置捕获,例如,对于 8 通道模式,您仍然可以拥有 8 通道复杂触发或 5 通道快速触发,而不包括捕获中的这些通道,但如果您需要为其中一个触发器提供更多通道,或者您需要使用 16 通道模式,您将受到此影响。 ### 另一个新更新,现在您可以在屏幕上显示多达 1024 个样本! 您可以从主屏幕激活此功能,它有一个复选框(它会警告您,因为对于旧计算机来说,这可能是一项非常占用 CPU 的任务),允许您将屏幕上的样本从 200 更改为 1024,这对于大屏幕和现代计算机非常有用。 此外,我稍微调整了样本查看器的外观,我不喜欢虚线,所以现在都是连续的。 好了,暂时就这些。 玩得开心! ## 更新 03/02/2023 - 测量工具。 这是对分析仪非常方便的更新,您可以测量一个区域并获取每个通道的信息:选定的总样本数、选择周期、正脉冲数、负脉冲数、正负脉冲的平均和主要周期以及平均和主要频率。 主要值是应用 95 百分位规则的变体计算的,以丢弃异常/损坏的样本,我必须说它工作得非常好,它完全匹配我测试的所有频率。 ![imagen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9d21b67f9c123751.png) 还没有新版本,如果您想要它,需要编译应用程序,但我很快会创建该版本。 玩得开心! ## 更新 02/02/2023 - I2C 协议分析器。 新的一天,新的分析器 :D。这次轮到 I2C。分析器将向您显示原始数据、ACK/NACK,还将显示设备地址(7 位和 10 位模式)、请求操作和任何类型的帧错误。要安装它,请从[这里](https://github.com/gusmanb/logicanalyzer/blob/master/I2CProtocolAnalyzer.dll)获取并将其复制到应用程序的“analyzers”文件夹中。 ![imagen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e043095bea123752.png) 玩得开心! ## 更新 01/02/2023 - 串行协议分析器。 这是一个小更新,我创建了一个串行协议分析器 (RS-232)。此更新不包含版本发布,但我已将分析器库编译后留在存储库中。要安装它,请从[这里](https://github.com/gusmanb/logicanalyzer/blob/master/SerialProtocolAnalyzer.dll)获取并将其复制到应用程序的“analyzers”文件夹中。 它支持正负极性(用于 TTL 和 RS-232 电平信号)、两个通道(RX + TX)、7 或 8 位、无校验/奇校验/偶校验以及 1、1.5 或 2 个停止位。 ![imagen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/1291e9fdb7123754.png) 玩得开心! ## 更新 31/01/2023 - Pico-W 支持和 WiFi! 终于来了!WiFi 支持! 首先,现在发布部分有三个不同的固件版本,一个没有后缀用于常规 pico,另一个带有“W”后缀用于不带 WiFi 支持的 Pico-W,最后一个带有“WIFI”后缀用于带 WiFi 支持的 Pico-W。选择最适合您需求的一个。 现在,如何使用 WiFi 支持? 首先,您需要一个 Pico-W,我认为这很明显 :D,用“WIFI”固件刷入它,设备就可以使用了。如果您计划将 Pico-W 焊接到分析仪板,请注意不要添加调试引脚,因为它们现在位于板中间,这将不允许您焊接它,如果您想要它们,那么您需要使用一些引脚接头将 Pico 从板上升起(对于我自己的设备,我一直都是这样做的,这样我可以随时更换 Pico)。 好的,现在让我们看看如何使用它。 首先,您需要至少将 Pico-W 连接到计算机一次以配置网络设置,此过程可以进行多次,将 Pico-W 连接到计算机并使用 CLCapture 或 LogicAnalyzer 软件进行配置。 当您连接带有 WiFi 固件的 Pico-W 时,您会注意到启用了一个新菜单: ![WiFi menu](WiFi-1.jpg?raw=true "WiFi menu") 从那里您可以选择“Update Network Settings”菜单。 ![WiFi menu 2](WiFi-2.jpg?raw=true "WiFi menu 2") 这将打开配置网络设置的对话框,您必须输入路由器的 SSID、密码(仅支持 WPA2)、所需的静态 IP 地址和侦听 TCP 端口。 ![Network options](WiFi-3.jpg?raw=true "Network options") 一旦配置好这些,接受它们,它们将被保存到 Pico-W flash 中,Pico-W 将立即尝试连接到您的路由器,如果可用,它将连接并可供网络连接。 要通过 WiFi 连接到 Pico-W,您必须从下拉菜单中选择“Network”选项。 ![Network connect](WiFi-4.jpg?raw=true "Network connect") 选择它并按下“Open”按钮后,网络连接对话框将打开。 ![Network connect dialog](WiFi-5.jpg?raw=true "Network connect dialog") 填写 IP 地址和端口并按“Accept”,如果设备可用,它将连接到它。 ![Network connected](WiFi-6.jpg?raw=true "Network connected") 就是这样!从那时起,设备的工作方式与以前完全一样,对于应用程序来说,它是通过网络连接还是 USB 连接是无关紧要的,它具有完全相同的功能。 ### CLCapture 更新 CLCapture 也支持网络连接和配置,为此,现在命令以动词开头,执行不带任何参数的程序以检查动词,仅带一个动词以获取所需参数。 ### 一些注意事项 两个接口(USB 和 WiFi)同时工作,但当客户端通过 WiFi 连接时,USB 将被忽略直到客户端断开连接,请记住这一点。 我在 Pico-W WiFi 支持方面发现了一些怪癖,第一个是它根本不支持在没有 DHCP 服务器的情况下连接,它总是从那里获取网络信息,幸运的是我找到了一种在连接到 AP 后更改 IP 地址的方法。这也导致了一个问题(至少在我的路由器中),如果您已经连接到 AP 并且您更改了网络设置,设备将断开连接并使用新信息重新连接,如果是同一个 AP(例如您刚刚更改了 IP 地址),静态 IP 将被忽略,它将保留 DHCP 服务器分配的 IP,解决方法很简单,重新启动 Pico-W,它将以新的 IP 地址连接。 固件在编译时现在有三种“风格”,这是从“LogicAnalyzer_Build_Settings.h”头文件和“CMakeLists.txt”文件控制的,两者都包含有关如何根据您的偏好更改设置的说明。 一位用户建议我,如果 USB 连接到主机并且使用 WiFi,Pico-W 可能会有问题。我没有经历过这些,我已经进行了广泛的测试,也许因为我为 WiFi 使用了一个单独的核心,它避免了这种麻烦,但如果您遇到这些问题,那么如果您想通过 WiFi 连接,请使用 USB 电源(如手机充电器或类似的)。 ### 未来 我正在考虑创建一个包含电池和 USB 充电模块的新 PCB 板,这样设备将完全摆脱电线(显然信号线除外)。我认为这可能非常有用,您将能够将分析仪甚至放置在计算机或任何类型的设备内部并远程连接到它,我认为这对于固定位置或巨大且难以移动的设备(如旧的小型计算机或汽车 ECU)非常有用。 敬请关注更多新闻,并确保项目尚未完成! 玩得开心! ## 更新 29/01/2023 - 软件更新 此版本包含对 GUI、CLI 和驱动程序的许多更新,还包括许多新的目标架构。 ### GUI 更新 首先,样本查看器和样本标记还包含周期的一半(在周期中采样点),以便更容易查看数据。 现在您可以创建一个“用户标记”,它是一个临时标记,不会随保存/导出数据保存,只是一个有用的查看工具。在没有拖动的情况下单击样本标记,您将设置用户标记位置。要删除用户标记,再次单击同一位置。 现在可以删除样本,当您右键单击现有区域上的样本标记时,现在不是删除区域,而是弹出一个菜单,允许您删除鼠标下的区域或删除区域*和*样本。 添加了更多有意义的错误消息,在任何情况下,数字上/下控件中的限制已更新以匹配驱动程序的期望。 ### CLI 更新 它还包括带有更有意义错误的新消息。 ### 驱动程序更新 驱动程序已调整以在预/后样本中提供更大的灵活性,现在的有效参数是: ``` -Frequency must be between 3.1Khz and 100Mhz -PreSamples must be between 2 and 31743 -PostSamples must be between 512 and 32767 -Total samples cannot exceed 32767 ``` 玩得开心! ## 更新 17/12/2022 - 应用程序重新打包 当 .net 引入时,我最喜欢的功能之一是能够创建不需要用户独立安装 .net Framework 的应用程序。我总是更喜欢创建便携式包,解压到您想要的任何地方就可以工作。这会创建稍大的应用程序,但如今随着我们拥有的大容量存储设备和快速的互联网,这不是问题,而在某些情况下必须安装框架可能会很痛苦(受限用户权限环境、旧 .net 安装问题等)。 好的,多亏了 [Laboratoire Ouvert Grenoblois](https://www.logre.eu/) 的人们,我发现 unix/macos 的包打包不正确,没有包含框架并且需要其安装……哎! 我重新打包了所有应用程序(CLI 和 GUI),现在所有版本都包含所需的文件,它应该不再需要安装 .net 框架。 此外,我已将固件升级到包含新尾部检测的版本(请注意,它仍然会报告是 V1.0,我会在 Pico-W 支持发布时更正版本号)。 注意:如果您已经拥有应用程序并且它们对您来说工作正常,这意味着您已经安装了框架,无需下载新包,只有在您进行新安装或因缺少框架而在以前版本中遇到问题时才需要这些。 玩得开心! ## 更新 12/12/2022 - 向 Pico-W 支持迈进 我想通过分析仪实现的目标之一是支持 Pico-W。拥有一个通过 WiFi 连接到计算机的电池供电分析仪难道不棒吗?至少对我来说,这是一个非常理想的选择,因为我的主计算机在与电子工作台不同的桌面上,所以当我想分析信号时,我必须有一根长长的 USB 电缆从计算机挂到分析仪,或者我必须在计算机桌面上进行分析。此外,即使您在同一个桌面上,周围的电缆越少,工作就越容易。为此,Pico-W 是理想的,因为分析仪不实时传输数据,它不需要极快的连接,对于在捕获后传输数据,Pico-W 的集成 WiFi 绰绰有余。 ### Pico-W 误区 我拿到 Pico-W 已经有一段时间了,我没有足够的时间真正开始深入研究这东西是如何工作的,所以我之前关于 W 的知识是基于发布到互联网上的第一份说明(我在发布日买了它)。在许多地方 stated 的一件事是 W 使用一些 GPIO 来控制 WiFi 模块,因此您将拥有更少的可用 IO 供您使用。 当我亲自阅读数据手册以及 Pico 在现实中如何实现 WiFi 模块时,我真的很高兴。它确实使用一些 GPIO 来控制 WiFi,但是,这些 GPIO 从未作为常规 GPIO 提供给用户。Pico 使用 GPIO 23、24、25 和 29 进行内部使用(LED、VBUS 检测等)。那么,他们在 Pico-W 中做了什么来不使用额外的 GPIO 呢?他们将那些功能提升到了 WiFi 模块的 GPIO。WiFi 模块本身包含一个 GPIO 端口,现在该端口包含那些功能,所以现在 GPIO 23、24、25 和 29 控制 WiFi 模块,模块的前三个 GPIO 用于那些功能。 那么,这一切对分析仪意味着什么?好吧,这意味着捕获代码需要做的更改非常少,只有前端代码需要更改。此外,这意味着 W 版本也将保留所有 24 个通道,它不会失去任何功能。Wohooo!!! ### 捕获代码的更改 由于用于捕获的所有 GPIO 都是相同的,除了一个非常小的部分外,不需要更改任何代码,即“结束捕获”标记。PIO 总是以顺序方式捕获引脚,这意味着您不能在引脚序列中有“孔”,并且要获得完整的 24 个通道,必须使用每个可用的 GPIO,直到 GPIO28。这意味着控制 LED、VBUS 等的 GPIO 也被捕获但被忽略。话虽如此,为了在缓冲区中标记捕获完成的位置,在最后一次捕获后添加了一个不可能发生的特殊值,它是基于那些 GPIO 永远不会为 1。理论上,由于我们捕获 32 位字,尾部总会有一些零,但我很偏执,这也不优雅,所以我决定修改尾部检测代码。 现在不是基于缓冲区中的标记进行尾部检测(这需要遍历缓冲区直到找到它),而是基于 DMA 通道传输状态进行尾部检测。这是我最初的想法,但不幸的是 Pico API 没有公开一种直接读取已完成多少传输或剩余多少传输的方法,您可以设置它们但不能读取它们,所以我放弃了这个想法。 这一次我挖掘了一点,直接进入 RP2040 数据手册,它非常清楚地指出 TRANSFER 寄存器是 R/W,所以您可以读取剩余多少传输。我不知道为什么 API 不公开它,但知道这一点非常容易直接使用 dma 硬件通道结构访问寄存器。 现在代码所做的是:一旦捕获完成,在中止 DMA 通道之前,它检查哪一个忙(记住,环形链中有四个 DMA 通道,所以只有一个 DMA 会忙,那个正在等待 PIO 的下一个传输),检查剩余多少传输,并根据 DMA 通道号和剩余传输计算最后一次捕获的索引。 这更优雅、更快,并且防止我的偏执一面每次看到该代码时都会敲响警钟并想到 Pico-W,所以都是优势 :D ### 想试试吗? 在存储库源代码的 [build](https://github.com/gusmanb/logicanalyzer/tree/master/Firmware/LogicAnalyzer/build) 文件夹下,您会找到带有新检测代码的 UF2 文件,因此您可以尝试在 Pico-W 上使用它,它仍然会使用 USB 传输数据,但您可以检查其兼容性。我还没有时间在 W 上尝试,但我计划很快这样做。无论如何,如果您在 W 或常规 Pico 中测试新固件,如果您能留下评论告诉您的体验,您是否发现任何问题或是否按预期工作,我将不胜感激。 ### 下一步 好吧,下一步是为 W 添加前端代码,想法是有一个单一项目,基于设置为 W 或常规 pico 编译。关于如何实现它,我仍然需要检查 WiFi 的 W API,但我肯定会做的一件事是在捕获运行时关闭 WiFi 模块,以避免因干扰引起的任何故障,我担心走线可能充当天线并读取错误数据,所以我正在考虑我将使用 UDP 而不是 TCP,使用广播地址发送/接收数据,并且由于 UDP 不需要建立的连接,它将允许关闭模块而不会破坏网络。无论如何,这些是我的最初想法,一旦我开始实现可能会改变。 像往常一样玩得开心! ## 更新 27/11/2022 - 小改动,大价值 我上传了新版本的 PCB 和固件。它包含一个小修改,可以给设备带来巨大的价值。 您有示波器吗?您是否曾经想根据数据总线的值触发它?或者当某些数字信号采用特定值时? 现在逻辑分析仪提供了此功能! 修改非常简单,用于复杂/快速触发的 GPIO 引脚已通过二极管引出,该信号可用于触发其他设备,如示波器。或者您甚至可以链接多个逻辑分析仪以拥有任意数量的通道!为复杂或快速触发配置您的分析仪,将您的设备连接到 EXT 引脚之一(以及 GND,根据需要)并开始捕获。要链接多个分析仪,您必须配置简单触发并将辅助分析仪上的一个引脚连接到 EXT 触发引脚。将来如果有请求,我将为 EXT 添加另一种捕获模式,以便它可以链接超过 3 个分析仪。 从触发到信号有一个小延迟,我已经测量了它,快速触发的延迟为 20ns(检测和传播触发条件所需的两个周期),复杂触发的延迟为 35ns。此外,二极管引入了 4ns 的小延迟,如果您想去除该延迟,可以跳过二极管和下拉电阻,并在应放置二极管的位置放置一个跳线,但请注意,您将使触发失去极性反转保护。 外部触发已路由到两个引脚,通过这种方式,您可以根据需要链接任意数量的分析仪,或连接两个其他设备。 新的引脚排列是这样的: ![imagen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b457778887123755.png) 注意不要将新分析仪与旧转接板一起使用,它也已修改为包含 ext 信号,如果您在新板上使用旧转接板,您将在 +v5、+3.3v、GPIO0 和 GPIO1 之间产生短路,这将是致命的。 对于新转接板,引脚排列与分析仪相同,但 +5v 引脚是 +5v/ext_ref,具体取决于跳线设置。 最后我还更新了固件以禁用 GPIO 同步器,这减少了另外 4ns 的延迟。 玩得开心! ## 更新 03/09/2022 - 中止捕获 次要版本,添加了中止正在运行的捕获的功能。要使用此功能,您需要更新固件和应用程序。 ## 更新 27/08/2022 - LevelShifter 更新及更多... 我更新了电平转换板。这是一个小改动,但它使转换板更加灵活,因为现在您可以使用内部 +5V 作为输入电压的参考,或者您可以使用外部电压源作为参考。基本上这允许您使用目标设备的电压源作为 VRef,因此板现在可以在 1.65v 和 5.5v 之间的电平下工作 新板: ![Shifter board](ShifterVRef.jpg?raw=true "Shifter board with VRef selector") 要使用外部 VRef 源,您需要移除跳线 JP1 并将外部电压参考连接到输入头的 +5v/ExtVRef 引脚。 ![VRef pins](ShifterVRefPins.jpg?raw=true "Shifter board VRef input pins") 注意!!!VRef 输入没有过压保护,因此您必须注意遵守 5.5v 的最大电压限制。 #### 很快会有更多东西: - 中止正在运行的捕获的能力(测试中) - 分析仪的外壳(预览已经在存储库中,不要使用,因为我正在调整它) 享受它! ## 更新 31/07/2022 - RELEASE 2.0 好消息!多平台应用程序准备好了! 应用程序已使用 AvaloniaUI 完全重写,它可在 Windows、Linux、Linux-ARM (Raspberry) 和 MacOSX 上运行。 它已在 Debian、Raspbian 和 Windows 10 下测试过,MacOSX 尚未测试,因为我没有工作的 mac,但它应该没有问题。 此外,新应用程序包含对原始应用程序的改进,例如将捕获导出到 Sigrok 的能力和总体上更好的性能。 在 Windows 中运行的应用程序: ![Windows software](SoftwareWindows.jpg?raw=true "SPI analysis") 在 Linux 中运行的应用程序: ![Linux software](SoftwareLinux.jpg?raw=true "SPI analysis在 Raspberry 中运行的应用程序: ![Raspberry software](SoftwareRaspberry.jpg?raw=true "SPI analysis") ## 更新 13/07/2022 我终于设法在 Linux 中测试了命令行应用程序,它按预期工作,所以我正在发布它。 命令行捕获程序是一个多平台命令行应用程序,它有 Linux、MacOSX 和 Windows 的版本,允许直接将数据捕获到 CSV 文件。文件格式与 Sigrok/PulseView 兼容,因此您可以使用它分析捕获。 LINUX/MACOSX 用户注意:由于我编译应用程序的方式,您需要使用 CHMOD 使应用程序可执行。 该应用程序已在 Linux 和 Windows 中测试过,如果有任何用户在 MacOSX 上测试过,请留下带有结果的 issue,我将非常感激 :D ### 如何使用命令行应用程序: 如果在任何时候您需要帮助,您可以执行 `./CLCapture --help`,它将显示使用帮助。 应用程序需要七个参数来开始捕获:串行端口、采样速度、要捕获的通道、触发前样本、触发后样本、触发器定义和输出文件名。 - 第一个参数是逻辑分析仪的串行端口名称。 - 第二个参数是所需的每秒采样速度。 - 第三个参数是用逗号分隔的通道列表,例如 `1,2,3,4` 或 `1,16,24`。 - 第四个参数是触发前要捕获的样本数。 - 第五个参数是触发后要捕获的样本数。 - 第六个参数是以以下形式表示的触发器定义:"TriggerType:(Edge, Fast or Complex),Channel:(base trigger channel),Value:(string - containing 1's and 0's indicating each trigger chanel state)"。例如,如果我们想在通道 4 上使用正边缘触发,值将是 `TriggerType:Edge,Channel:4,Value:1`。如果我们想使用通道 3、4、5 和模式“101”进行快速触发,触发器定义将是 `TriggerType:Fast,Channel:3,Value:101`。请注意没有空格,每个参数用逗号分隔,不使用引号。 - 最后,第七个参数是我们想要生成的输出文件名。 一个完整的例子,在 100Mhz 下使用通道 5 作为正边缘触发捕获通道 1、2、3 和 4,并将结果存储在名为“output.csv”的文件中,类似于这样: ```./CLCapture /dev/ttyACM0 100000000 1,2,3,4 512 1024 TriggerType:Edge,Channel:5,Value:1 output.csv``` 如果一切顺利,您将看到类似这样的内容: ``` Opening logic analyzer in port /dev/ttyACM0... Conneced to device LOGIC_ANALYZER_V1_0 in port /dev/ttyACM0 Starting edge triggered capture... Capture running... ``` 分析仪将在捕获运行时闪烁,一旦完成,它将打印结果: ``` Capture complete, writting output file... Done. ``` 此捕获将包含 CSV 格式的数据,并且与 PulseView 兼容。要将其导入 PulseView,请转到“Open->Import comma-separated values...”。该文件的生成方式使您不需要更改任何 CSV 参数,您只需要指定通道数和捕获速度。 一旦导入,您将看到您的数据,如下所示: ![imagen](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/83c12766c1123757.png) 我希望有了这个,至少在多平台应用程序准备好之前,所有用户都可以以自己想要的方式使用分析仪,它将在所有常见的操作系统上工作,并且它以一种对 Sigrok 和 LogicAnalyzer 应用程序都不具侵入性的方式引入了与 Sigrok/Pulseview 的兼容性。 玩得开心! ## 更新 12/07/2022 我收到了转接 PCB,有一个错误。J1 和 J2 的封装互换了,所以应该是输入的变成了输出,反之亦然。幸运的是这不是问题,因为 PCB 完全对称,并且两面都有元件,翻转板子可以解决问题。 翻转前的板子。 ![IMG_1562_2](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/275d1f7e5d123759.jpg) 翻转后的板子。 ![Board after flip](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b31237e256123801.jpg) KiCad 项目已更新。 好消息是板子工作得很好,我已经用我的时钟发生器在 50Mhz 时钟下测试了它,它完美地捕获了每一个半周期,就像板子不存在一样 :D 所以如果你想构建自己的转接板,它已经准备好了并经过测试。 ## 描述 廉价的 24 通道逻辑分析仪,具有 100Msps、32k 样本深度、边缘触发和模式触发。 ## 概述 LogicAnalyzer 是一个非常便宜的分析仪,基于 Raspberry Pico。该分析仪提供多达 24 个数字通道、触发前和触发后采样、边缘触发和高达 16 位的模式触发。 最基本的版本纯粹是原样 Pico,您只需要短接 GPIO0 和 GPIO1,上传固件就可以开始了。 当然这有一些限制,因为 Pico 只支持 3.3v,如果您想用它来诊断 5v 信号,我还设计了一个快速电平转换板。 除了硬件,逻辑分析仪还包括一个强大的软件(目前仅限 Windows),您可以在其中可视化捕获的数据、导出捕获、使用协议分析器等。 ## 关于逻辑分析仪和触发器 逻辑分析仪只关心线路的逻辑状态,所以如果不加思考,您可能会认为任何使用 DMA 通道读取 GPIO 值的微控制器就足够了,但这是逻辑分析仪的“简单”部分,当您需要根据 GPIO 状态触发捕获并且还希望在触发发生之前和之后捕获数据时,问题就来了。 为此,您需要比较从 GPIO 读取的值,检查引脚或引脚值是否匹配请求的触发器,并且您必须以您想要捕获的速度进行,例如,最基本的比较至少消耗 3 或 4 条指令,如果每条指令是 1 到 4 个周期(或多或少,我想的是 ARM 处理器),那么您将使用多达 16 个周期来读取一个样本,因此您需要 1.6Ghz CPU 才能以 100Msps 采样。 那么,pico 到底是怎么做到的呢?关键是 PIO 单元,这些单元是一个奇迹,它们是明确设计用于处理 IO 的协处理器,它使用非常受限和确定性的汇编程序(只有九条指令,每条只需一个周期执行)但极其高效,如此高效以至于只需两条指令就可以创建一个循环,捕获高达 30 位的 GPIO 数据并根据这些 GPIO 之一的状态重定向程序流。 当然有一些限制,那个两条指令的循环只能根据 GPIO 引脚改变执行流,它不能(仅使用两条指令)根据模式分支,但由于我们有不止一个单元(每个 pico 有两个单元,每个单元有四个状态机,因此您最多可以并行运行 8 个程序),我们可以稍微滥用系统并创建一个单独的触发程序,该程序使用引脚通知捕获程序,这就是为什么 GPIO0 和 GPIO1 被短接。 这里描述的分析仪有三种触发模式:边缘触发、快速模式触发和复杂模式触发。 边缘触发使用单个程序,这是仅使用两条指令的基本版本,运行高达 100Msps,并且触发与捕获同步。 复杂触发器是第一个使用两个程序的触发器,一个用于捕获,另一个用于触发。复杂触发器支持来自前 16 个连续通道的最多 16 位匹配模式。 拥有两个程序是保持高达 100Msps 采样的关键,触发程序使用三条指令,因此其速度限制为 66Msps,但采样可以使用两条指令以全速运行。当然这带来了一些不便,触发信号和报告的触发之间存在延迟,此外如果触发模式持续不到 66Mhz 的一个周期,触发可能会丢失,最后因为触发器总是以最大速度运行,在较低速度下可能会发生“故障”,触发器被引发是因为找到了模式,但采样程序没有注册这一点,因为它以较低速度运行。 最后我们有快速触发器,这使用了一个非常聪明的“hack”(感谢 Raspberry 论坛的 alastairpatrick 的想法),滥用了 PIO 单元的限制。每个 PIO 单元只能处理 32 条指令,因此状态机的程序计数器如果溢出就会回滚到 0,此外 PIO 汇编器有一条指令可以将数据从 IN 引脚移动到程序计数器,最后 PIO 汇编器允许在不使用任何额外周期的情况下修改每条指令的引脚值。所以,话虽如此,技巧在于创建一个完整的 32 条指令程序,将值从 GPIO 移动到 PC,而分配在与所需模式匹配的索引处的指令阻止执行并将 GPIO 设置为 1。 当然这限制了模式的可能性,我们最多可以使用 5 个通道进行此触发,但触发器将以全速运行(它可以工作得更快,高达 200Msp)。 如果您想了解有关触发器的更多信息,请查看源代码中的 PIO 代码,其中有更多关于其工作原理的说明。 ## 原理图 基本原理图只是 GPIO0 和 GPIO1 短接的 Pico,但为了方便我设计了一个 PCB,它的设计是为了保持走线长度,这样就不会因为传播延迟而发生故障(在 100Mhz 下这应该不是问题,但在边缘情况下,如果有明显的走线长度差异,可能会引入几皮秒的延迟并改变分析值)。 ![Schematic picture](Schematic1.jpg?raw=true "Basic schematic") 此外,由于 Pico 只支持 3.3v,我设计了一个电平转换板,它使用非常快的收发器 (TXU0104),满足 100Msps 规格。 ![Schematic picture](Schematic2.jpg?raw=true "Shifter schematic") 注意!我正在接收 PCB 的过程中,所以它们没有经过测试,我会在测试后更新本文档。 ## PCB 有两个 PCB,一个用于分析仪,另一个用于电平转换器。 ![PCB picture](PCB1.jpg?raw=true "Analyzer PCB") ![PCB picture](PCB2.jpg?raw=true "Shifter PCB") ## 构建固件 要构建固件,您需要为 Pico 开发配置的环境,但如果您没有,也不必担心,版本发布包含 UF2 文件,所以您只需要以程序模式启动 Pico,将 UF2 文件拖放到 Pico 驱动器中,就是这样,您就拥有了一个可以使用的 Logic Analyzer。 ## 软件 在设计我自己的分析仪之前,我使用过一些廉价的中国分析仪,都使用相同的软件,OLS, OpenBench Logic Analyzer,老实说,我不喜欢它。所以,我实现了自己的二进制协议(更多信息在固件代码中)和可视化软件。 ![Software picture](Software1.jpg?raw=true "Software main screen") 这是一个用于 Windows 的 .net 桌面程序(如果有足够的请求,我可能会计划创建一个在 Windows/MacOS/Linux 上运行的 .net MAUI 版本),它允许您可视化捕获数据、突出显示采样范围、极快地命名通道、保留捕获设置和范围导出捕获数据、实现协议分析器(以及一个非常简单的系统来包含您自己的分析器)等等。 ![Software picture](Software2.jpg?raw=true "SPI analysis") 目前我已经实现了 SPI 协议分析器,但我也计划实现 I2C、RS-232 和系统总线分析器(用于旧计算机,16 位地址和 8 位数据)。无论如何,只要有一点 C# 知识,您就可以添加自己的协议,这使得程序能够分析专有协议。 捕获界面直接且不言自明,软件保留您的上次设置,可以从导出的捕获中导入设置,并允许您重新发出捕获而无需通过配置过程。 ![Software picture](Software3.jpg?raw=true "Capture interface") ## 构建要求 要构建固件,您需要 Pico-SDK 版本 1.3.1 或更新版本的构建环境。对于 Windows 用户,我建议使用 [Pico-Setup project](https://github.com/ndabas/pico-setup-windows/releases)。 要构建应用程序,您需要安装了 C# 语言的 [Visual Studio 2022](https://visualstudio.microsoft.com/)。 ## 使用设备 一旦连接到您的 PC,设备将被检测为串行端口,不需要驱动程序。打开软件后,您将看到一个串行端口列表,您必须选择正确的一个,一旦选中,如果您“Open”设备,它将在顶部显示固件版本并启用捕获按钮。 要使用分析仪,将所需的通道连接到您要分析的信号,还要将 Pico 的至少一个接地引脚连接到被分析的设备,按下“Capture”按钮,配置您的设置并开始捕获。Pico 将开始闪烁,直到满足触发条件并且捕获将运行。 一旦捕获完成,您将看到通道、最多 100 个样本的范围,触发事件将正好位于样本区域的左侧。 要命名您的通道,每个通道下面都有一个灰色框,这些是文本框,您可以在其中设置您想要的任何内容,如果您导出捕获,它们将被保留。 要创建突出显示的区域,请按数字顶栏并拖动以选择要突出显示的样本数。 ![Region picture](Highlight1.jpg?raw=true "Highlight creation") 这将打开区域创建对话框,您可以在其中为区域选择名称、颜色和突出显示的不透明度。 ![Region picture](Highlight2.jpg?raw=true "Highlight creation") ![Region picture](Highlight3.jpg?raw=true "Highlight") 如果要删除区域,请按突出显示区域上方的数字栏,它将被删除。区域也会随捕获导出。 ## 添加自定义协议分析器要添加新的协议分析器,您需要创建一个引用 LogicAnalyzer 程序集的 .net 6.0 程序集,并实现至少一个基于“ProtocolAnalyzerBase”的类。基本上您将提供一个设置列表以呈现给用户,然后您将实现一个返回分析通道的分析函数。 每个分析通道将指定一个覆盖数据的段列表(以便向用户呈现数据),并且它还可以为数据段提供自定义渲染器。您可以创建自己的自定义渲染器,或者只是提供一个已经包含的“SimpleSegmentRenderer”的实例。 ## 关于 Sigrok 和自定义应用程序 我一直在阅读一些评论,关于为什么要创建我自己的应用程序,为什么不使用 Sigrok,因为那样开发会更快。首先,包括固件、PCB 和 Windows 客户端在内的整个项目只花了不到一周的开发时间,我创建 Windows 应用程序已经超过 20 年了,实现渲染系统、插件等花的时间比实现第三方驱动程序还要少 :) 无论如何,我不考虑使用 sigrok 的主要原因是,我尝试将它与一些廉价分析仪一起使用,但在我的机器上它根本无法运行,我不确定我用于开发的某个组件是否与它不兼容,但在我的三台机器上它崩溃了,在一台机器上它根本打不开,在另外两台上,当我尝试捕获数据时随机崩溃。 无论如何,我将尝试在我的一台开发机器上运行它,如果可行,我将检查为它创建驱动程序有多复杂。 玩得开心!
标签:100Msps, FPGA, PCB设计, UML, ZX Spectrum, 云资产清单, 信号捕获, 固件开发, 复古计算, 嵌入式系统, 开源硬件, 数字信号分析, 波形查看, 测试测量, 电子工程, 硬件工具, 硬件调试, 逆向工程, 通信协议分析, 逻辑分析仪