本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

使用树莓派Pico作为PulseView的逻辑分析仪
发布时间:2021-03-03
分享到:
使用树莓派Pico作为PulseView的逻辑分析仪
发布时间:2021-03-03
分享到:

基于RP2040的Pico可用作PIO的逻辑分析仪。扩展示例以将结果导出到sigrock和PulseView。

背景

Raspberry Pi Pico上的新RP2040工艺带有可编程IO(PIO)模块。该模块有许多用途,可以直接直接高速控制板的GPIO。Pico随附的示例显示了如何使用PIO捕获引脚上的输入作为逻辑分析仪。包含的示例打印出数据的简单ASCII显示,并且有趣的是,很难详细检查ASCII打印输出。

有一个名为sigrok的开源项目可以进行信号分析。(SI gnal神交)。与sigrok一起,有一个名为PulseView的配套项目,可让您直观地检查信号数据。这两个程序使您可以更轻松地分析捕获的数据,添加协议解码器以查看捕获的数据意味着什么。

该项目旨在扩展示例逻辑分析仪程序,以生成可以在PulseView中显示的数据,并允许以交互方式配置分析仪。

整体架构

迄今为止,该项目背后的想法是在三个方面:
•    将Pico连接到要测量的设备上的引脚
•    使用修改后的示例代码来配置逻辑分析仪设置,并记录信号并将其以CSV格式输出到串行设备
•    使用PulseView导入CSV文件并显示数据

注意:sigrok内置了许多硬件驱动程序,可读取各种可用的分析仪和示波器。该项目不会添加新的驱动程序,而只是通过CSV文件导入数据。

代码

以下内容假设您知道如何构建项目并将其安装在Pico上。如果您不满意,请参阅随Pico一起发布的优秀文档。

Pico随附的示例代码用于演示具有DMA传输的PIO程序。为了改进此功能以用作逻辑分析仪,进行了几处更改:
•    该程序首先处于交互模式,允许用户配置设置,例如要捕获的引脚数,采样率,频率等。初始化后,PIO将布防并等待触发信号,然后捕获数据并将其写入以CSV格式转换为串行输出(通过USB)。可以在函数中找到read_user_input()。
•    创建了一个新的打印缓冲区功能,以CSV格式写出数据。可在中找到print_capture_buf_csv()。
•    内置LED设置为在布防和等待期间保持稳定,并在传输数据时闪烁。
功能logic_analyser_init()和与原始示例中的功能相同,logic_analyser_arm()负责初始化PIO程序并将其武装为触发值。

随附的GitHub存储库包含代码。

一个示例

此示例将显示我在第二个Pico上捕获I2C总线所采取的步骤。第二个Pico使用GPIO12作为SDA和GPIO13作为SCL连接到BME280传感器。CircuitPython安装在Pico上,并通过I2C连接BME280以连续打印传感器值。

顶部的Pico通过I2C连接到BME280。底部的Pico是逻辑分析仪。

逻辑分析仪Pico加载了代码。我使用PuTTY连接到逻辑分析仪并对其进行配置。将PuTTY连接到您的Pico所连接的COM端口,波特率为921,600波特。在此示例中,我使用了以下设置:
•    第一个引脚:GPIO17(用于SCL,因此GPIO18是SDA)
•    针数:2
•    频率:1 Mhz
•    样本数:200,000(大约50kB的RAM)
•    在SCL的第一个低点触发

分析仪设置正在配置

然后,我将GPIO13连接到GPIO17,将GPIO12连接到GPIO18并接地。当SCL线变低时,Pico将收集200,000个样本。在1 Mhz时,这意味着约0.2秒的捕获时间。

当板载LED呈绿色常亮时,您将知道Pico已准备就绪。

为了保存来自Pico的所有CSV数据,我使用了一个名为plink的程序,该程序是PuTTY安装的一部分。任何可以将串行输入定向到文件的程序都可以使用。要使用plink,我使用以下命令:

plink -serial \\.\COM3 -sercfg 921600,8,1,N,N > i2c.csv

COM端口应设置为您的Pico连接到的COM端口。一旦运行,您就可以开始捕获了。

为了开始捕获,我打开了连接到BME的Pico的电源,几乎立即内置的LED开始闪烁,表明数据正在通过串行连接写入并由plink保存。发生这种情况时,我停止了连接到BME280的Pico。

当Pico的LED稳定亮起时,传输已完成,我停止了plink命令。并启动了PulseView。有关PulseView的所有详细信息,请参阅其文档。

在PulseView中,我选择导入CSV文件,并且在此示例中,指定了2个逻辑通道和1000000的采样率,并关闭了“从第一行获取通道名称”。其余的导入设置保持不变。加载后,您可以为I2C添加协议解码器,将SCL分配给输出0,将SDA分配给输出1并查看结果。这就是全部。

将输出加载到PulseView并添加I2C解码器

原理图:

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论