本文基于硬禾学堂使用RP2040开发的“十二指神探”模块,对网上开源的逻辑分析仪项目进行了复现与测试。项目可成功运行,若想自行编译配置,也可基于开源代码重新构建。以下是完整的尝试过程记录。
主要内容框架
- 快速使用:介绍如何将RP2040板卡变为逻辑分析仪、如何让PulseView识别设备及PulseView的基本功能(针对直接使用的用户)。
- 环境准备:在Windows系统下搭建RP2040编译环境的主要步骤(针对后续希望开发的用户)。
- 编译项目:编译
pico-coder的sigrok-pico项目的主要步骤。
- 小结:使用体会与遇到的注意事项。
快速使用
附上pico-coder开源项目的GitHub地址:https://github.com/pico-coder/sigrok-pico 。项目包含了逻辑分析仪固件源码、PulseView获取地址、使用文档以及详细参数。下载项目到本地后,如果仅想使用,只需关注pico_sdk_sigrok和pulseview两个文件夹。

第一步:打开pico_sdk_sigrok文件夹,其下的build文件夹内包含最终的.uf2文件。将此文件拖入RP2040的U盘盘符,即可完成固件烧录,将其变为逻辑分析仪。

第二步:打开pulseview文件夹,按照README中的第一条链接(建议在GitHub页面直接操作,可能需要科学上网)下载非官方版本的PulseView,无需注册。


安装完成后,从开始菜单打开PulseView应用。

软件界面主要功能区域如图所示。在选择设备后,采样率和采样数设置会出现在设备选择按钮旁边。

第三步:识别设备。点击设备选择按钮,按照下图步骤操作。

成功识别后,界面如下图所示。

至此,设备已可正常工作。用户可以从24个数字通道中选择一个或多个进行数据采集与波形观测。
“十二指神探”的原理图可在硬禾学堂页面找到:https://www.eetree.cn/project/detail/748。本次测试连接的是CH0、CH1、CH2通道,对应RP2040的GPIO20、21、22。

使用ADALM2000产生一个SPI通信信号,发送数据0xAA,通信速率拉满至50MHz。

在PulseView中接收信号,通过协议选择按钮添加SPI协议解码器。

将GPIO20、21、22(PulseView中显示为D20、21、22)分别配置为SPI的CLK、MOSI、MISO通道。配置完成后,既能看到波形,也能看到解码出的数据正是0xAA。注意,需将界面上的模拟通道全部关闭,才能将采样率提升至最高的120MHz。

该设备的更多特性与限制在开源项目文档中均有详细说明,并附有详细的参数表,可供进一步研究。

环境准备
如果希望自行编译开源项目,需要搭建Windows下的C语言开发环境。虽然已有Arduino、PlatformIO等平台支持RP2040开发,但本项目基于官方的Pico-SDK,因此需按照官方指引配置环境。官方配置过程可能存在一些坑点,本文整理出一条相对快捷的配置路径。
参考文章链接:
主要配置步骤:
- 安装必要的软件工具
- 获取Pico-SDK等工程包
- 配置VSCode
- 进行编译
1. 安装需要的软件工具
所需工具如下图所示,图片来源于官方pico-setup-windows仓库的README。重点是下载最新版本的.exe安装文件。运行安装程序后,下列工具将自动安装完毕。用户也可选择自行下载各工具的最新版本。

安装结束后通常会提示重启电脑,按要求重启即可。

有时可能会弹出下图窗口,这可能是因为非首次安装。若弹出此窗口,可跳过,直接进行下一部分“获取工程包”的操作。

2. 获取pico-sdk等工程包
获取方法有多种,原理都是通过Git命令行克隆官方仓库。若网络不佳可能导致失败。
注意:如果之前已获取过,可能会报版本错误,需要将相关文件夹内的文件全部删除后重新获取,因为已有文件不会被自动覆盖。

方法一:在安装程序最后一步的界面中,勾选“Clone and build Pico repos”选项。
方法二:在安装目录中找到并双击pico-setup.cmd脚本文件。

方法三:手动在命令行中执行Git命令(需替换为你的实际目录):
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git
成功获取后,目录中会出现pico-sdk、pico-examples等文件夹。

3. 配置vscode
主要分为安装扩展和配置CMake Tools两步。
3.1 安装扩展
最稳妥的方式是双击安装目录中的“Visual Studio Code for Pico”快捷方式启动VSCode,它会自动检查环境。

启动后,在扩展商店中搜索并安装“CMake Tools”和“C/C++”扩展。然后进入CMake Tools扩展的设置界面。

3.2 配置CMake Tools扩展
需要修改两处设置:
- Cmake: Configure Environment:添加一个环境变量。项为
PICO_SDK_PATH,值可以设置为相对路径..\..\pico-sdk或绝对路径(例如D:\Raspberry\Pico\pico-sdk)。

- Cmake: Generator:填入
NMake Makefiles。

4. 编译测试
通过“Visual Studio Code for Pico”快捷方式启动VSCode,并打开pico-examples文件夹(可使用Ctrl+K, Ctrl+O快捷键)。右下角可能会弹出配置提示,点击“是”即可。

注意:如果直接打开VSCode应用再加载文件夹,可能无法正常配置,即底部不会出现CMake、GCC等工具链选择栏。

随后,在界面底部选择Kit(编译工具链),点击“Build”按钮开始编译。

正常编译过程与完成界面如下图所示。编译生成的.uf2等文件位于pico-examples\build目录下。



如果想单独编译某个例子(如blink),可以在底部的Build按钮旁选择对应的目标。

编译项目
完成上述环境搭建后,即可编译sigrok-pico项目。在理解项目结构时遇到了困难,主要是对CMake不够熟悉。后来参考了一篇外部教程,成功编译并理解了项目组织方式。
编译pico-coder的sigrok-pico项目仅需三步:
第一步:将sigrok-pico项目文件夹复制到与pico-sdk同级的目录下。

第二步:从pico-examples文件夹中复制pico_sdk_import.cmake文件到刚才复制的sigrok-pico项目根目录下。

第三步:在VSCode中打开该项目文件夹,选择好工具链后直接点击“Build”。成功编译界面如下。

在项目的build文件夹中即可找到新编译生成的.uf2固件文件。

注意:此移植方法主要针对此特定开源项目。其他RP2040项目的移植原理类似(需要与Pico-SDK同级目录并引入CMake文件),但具体操作可能不同,请仔细阅读项目的README说明。对于嵌入式开发中的环境配置与项目移植,扎实的运维/DevOps基础知识和工具链理解非常关键。
小结
pico-coder不仅编写了RP2040固件,还为sigrok官方库贡献了Pico的驱动与协议代码,具有很高的学习参考价值。由于相关代码尚未被sigrok主分支采纳,因此目前需使用其自定义编译的PulseView版本。
在使用过程中发现一个软件问题:在运行采集后,如果关闭任意一个数字通道,再次点击“Run”会导致PulseView无响应。此问题尚不确定是软件Bug还是本地环境导致。另外,务必在不需要时关闭所有模拟通道,否则无法达到最高采样率,具体原因可参阅项目文档。
所使用的“十二指神探”板卡上,CH3和CH4通道在原项目提供的预编译固件中并未启用,开发者可以基于此进行进一步的软件测试与功能开发。