大部分示波器都具备自动保存信号波形的功能,但通常都没有配置自动保存串行总线解码信息的功能,再加上如果仪器的存储深度不够深的话,那么要记录长时间的串行总线解码信息就将难以实现。最近有PicoScope用户就咨询我们是否能够用PicoScope记录他们的CANBus解码信息报文,需要记录比较长的时间或者几千帧。起初,我觉得我们标配的PicoScope 6软件和其它示波器软件类似并没有自动保存串行总线解码信息的功能,所以要想长时间记录可能就难以实现,只能转而通过对PicoScope进行二次开发来实现。然而,经过进一步了解,得知客户需要测量的CANBus波形类似如下图所示,CANBus的每两帧信息之间有比较大的间隔,大概间隔10秒或者20秒时间有一帧信息,而且这个间隔时间可以进行控制调节。从该波形分析,其实对用户真正有价值的是CANBus帧信息,而帧与帧之间的零电平信息则是无用的信息。因此,我们只需要关注有用的CANBus帧信息即可,无用的电平信息可以省略。
那么如何只采集有用的信号信息而丢弃无用的信号信息呢?PicoScope中的存储器分段功能能够帮助解决这个问题。下图所示为PicoScope 6000的部分指标截图,在PicoScope 6软件中示波器的内存最多可以被分为1万段,而在SDK自定义开发中,则最大可以分为2百万段。每一段可用来只存储我们感兴趣的信号,这样我们就可以利用有限的内存存储更多的有价值的信号,此处值得一提的是PicoScope的深存储是一个非常重要的优点,PicoScope 6000系列最大可达到2GS。
内存分段原理大致如下图所示:
内存分段功能加上深存储使得PicoScope具备了采集和记录长时间有效数据的能力,比如说我们要采集一个100Kbps的CANBus信号,示波器设置采样率为1MS/s,假设每个CANBus帧包含100个周期,那么需要占用内存1K个点。如果我们使用2GS的示波器内存,则理论上可以采集2百万个这样的CANBus帧,但由于PicoScope 6软件的限制,我们只能采集最大10000段,即使这样,如果每两个CANBus帧之间间隔10秒,那么总共可采集这样的CANBus信号时间为:100010秒或27.78小时。
能够采集到足够时间的CANBus信号还不够,还需要能够对所有这些信号进行解码分析并记录解码后的结果。PicoScope示波器所标配的PicoScope 6软件能够做到这一点。如下图所示为使用PicoScope 4444差分示波器采集记录了1335帧CANBus信号的解码信息结果。我们不仅可以在PicoScope 6软件里面对每条解码信息进行查看、重点信息进行过滤、每一帧信息进行测量等分析,也可以将所有数据导出到Excel中进行分析,通过Serial Decoding中的Link功能还可以将应用层的信息链接到解码结果列表中。