PicoScope是由Pico Technology公司推出的PC示波器系列,具有体积小巧、携带方便、功能强大等特点。PicoScope可以在CANoe中直接被调用,因此广泛应用于汽车网络测试、故障诊断等领域。在进行汽车网络测试时,多数会使用CAPL语言调用Scope的相关功能,其实Scope支持的语言类型十分丰富,本文就对C#下的Scope编程进行基本的介绍。
本次选用的Scope型号为5444B-034,与A系列相比,除基本的函数发生器外,还增加了任意波形发生器(AWG)的功能。5444B-034支持四种采样模式,分别是:Block模式、ETS模式、快速Block模式、流模式。
Block模式:在此模式下,示波器将数据存储在其缓冲存储器中,然后传输到PC。 在重新启动采样、更改设置或关闭电源时,数据会丢失。
ETS模式:在该模式中,可以在捕获重复信号时增加示波器的有效采样率。 它是Block模式的一种变体。
快速Block模式:该模式也是Block模式的一种变体,可以以最小的捕获延迟同时捕获多个波形。
流模式:在此模式下,数据直接传递到PC,而不受示波器捕获存储器大小的限制。 这可以实现长时间的数据收集。
此次着重介绍的是Block模式的编写流程。编程前需安装对应的SDK,本文中出现的所有函数均包含其中,SDK可于Pico Technology官网下载。由代码实现的Scope调用过程大致可以分为13个步骤:

1. 连接Scope:ps5000aOpenUnit


2. 选择通道范围及交/直流耦合:ps5000aSetChannel


3. 选择时基,找到采样所需的纳秒数:ps5000aGetTimebase

4. 如果需要,设置触发方式:ps5000aSetSimpleTrigger

5. 开启Scope:ps5000aRunBlock


6. 等待Scope启动完毕(根据函数回调判断):ps5000aBlockReady(或者采用ps5000aIsReady进行轮询,我们使用的Scope采取第一种方法即可)

7. 告诉驱动程序内存缓冲区在哪里。为了提高多次捕获的效率,可在步骤4之后,在循环外调用此函数:ps5000aSetDataBuffer

8. 从Scope传输数据块:ps5000aGetValues

9. 储存或显示数据

10. 如果需要多次捕获数据,需重复步骤5~9
11. 关闭Scope:ps5000aStop(即使设置了自动停止,该步骤也是必需的)

12. 使用不同的下采样参数请求存储数据(如果需要的话)
13. 断开Scope:ps5000aCloseUnit

由于Pico Technology提供了完整成熟的开发者组件,因此在熟悉相关函数后,可以迅速上手Scope的编程开发。但在编写过程中,有如下三个需要特别注意的点:
Scope输出的数据不是实际值,而是基于最大值的参考值。在采样设置为8bit时,值的范围为正负32512;在设置为12、14、15、16bit时,值的范围为正负32767。例如在8bit下,信号范围为正负1V,测得值为16256,则实际值为16256/32512*1=0.5V

由于使用的库文件不同,涉及到的函数仅适用于5242A/B/D & 5442A/B/D;5243A/B/D & 5443A/B/D;5244A/B/D & 5444A/B/D这几个型号
这里所给出的步骤及函数适用于Block模式,在vTESTstudio中,推荐API使用该模式;如果是将Scope当作普通示波器,需要不间断实时读取数据,则推荐使用Streaming模式
以上为本次分享内容,如想了解更多相关信息,请继续关注怿星科技公众号。
相关精彩推荐:

![]()
怿星一意,专注车载
引领汽车科技新高度


