是德科技
直播中

h1654155275.5998

7年用户 174经验值
私信 关注
[问答]

可变突发长度数据的数字捕获

好吧,我承认我仍然在使用我的KeySight MSO-X 3012A并且我可能做错了什么或误解了什么,所以也许这里的一些大师可以指出我正确的方向。
它涉及一般的数字调试,特别是调试Pic微处理器和WinBond闪存芯片之间的SPI通信
在系统初始化期间出现故障,我认为是由于读取了一些错误的数据,因此我一直在尝试捕获MPU和内存芯片之间的通信。
使用/ CS信号将系统设置为触发正常工作,但这是我遇到的问题。
整个初始化序列大约需要5秒钟才能完成,并且数个突发数据被相当长的静默期隔开。
由于MOSI和MISO数据总线只显示了固定块,因此我无法看到以5秒的时基捕获数据包。
采样率明显偏低。
所以我转而使用分段内存,认为这样可以解决问题,因为我现在可以使用更快的时基。
实际上错了,因为实际的交易长度从几个包到几百包不等,这就是我在苦苦挣扎的地方。
短事​​务通常是在执行诸如切换到写入启用或类似操作之类的事情时,但是长事务是频繁的,并且可能在重复读取状态寄存器等待完成标志或读取内存块时发生。
因此,如果我设置内存段以便我可以获得所有长事务,因为采样率太低,没有分组数据,如果我设置它以便采样率足够高那么就没有
足够的段和长传输最终被截断。
我不敢相信我是第一个遇到这个问题的人,所以希望有人能指出我正确的方向。
文档没有多大帮助,因为它实际上只涵盖了触发和解码等基础知识。具有讽刺意味的是,我能够使用我的IkaLogic Sc​​anaPLUS单元非常简单地执行此调试,该单元能够捕获长达2000秒的数据
恒定的100 MSPS。
它可能是市场上最好的解码器之一,包括SPI / IIC / RS232和包含的大量其他协议,成本低于200欧元,而我的示波器,分段存储器选项和串行解码许可证花费数千欧元!
我喜欢'范围,但我对数字部分不太确定,并想知道我是否应该选择DSO而不是MSO。
无论如何,如果有人有任何关于阅读不同长度的数据突发或知道任何文档/应用笔记等的建议,我将不胜感激收到它们

以上来自于谷歌翻译


     以下为原文

  OK, I admit that I am still getting to grips with my KeySight MSO-X 3012A and that I may be doing something wrong or have misunderstood something, so perhaps some of the guru's here can point me in the right direction.

It concerns digital debugging in general, and debugging the SPI communications between a Pic microprocessor and a WinBond flash memory chip in particular. There is a failure during system initialisation which I believe is due to reading some wrong data so I have been trying to capture the communications between the MPU and the memory chip.

Setting the system up to trigger is working ok using the /CS signal but here's the problem I am having. The whole initialisation sequence takes about 5 seconds to complete with several bursts of data separated by fairly long quiet periods. There was no way I could see to capture the packets with a timebase of 5 seconds as the MOSI and MISO data busses just showed solid blocks. Sample rate obviously to low. So I switched to using Segmented Memory thinking this would fix the problem because I can now use a faster timebase.  

Well wrong actually, because the actual transactions vary in length from a couple of packets up to several hundred packets and here is where I am struggling. The short transactions are usually when doing things such as switching to write enable or similar, but the long transactions are frequent and can occur when reading the status register repeatedly waiting for the done flag, or when reading chunks of memory.

So, if I set the memory segment up so that I can get all of the long transactions there is no packet data as the sample rate is too low, if I set it so that the sample rate will be high enough then there aren't enough segments and the long transfers end up truncated.

I can't believe I am the first to hit this problem so hopefully someone will point me in the right direction here. The documentation is of little help as it really only covers the basics of triggering and decoding etc.  

The irony is that I was able to carry out this debug very simply using my IkaLogic ScanaPLUS unit which has the ability to capture up to 2000 seconds of data at a constant 100 MSPS. It has probably one of the best decoders on the market and includes SPI/IIC/RS232 and a huge list of other protocols included and costs under 200 Euros,  whereas my scope, segmented memory option and serial decode licence cost several thousand Euros! I love the 'scope but I'm not so sure about the digital part and wonder if I should have gone for a DSO instead of an MSO.

Anyway, if anyone has any suggestions about reading bursts of data of wildly varying lengths or know of any documentation/application notes etc. I would be grateful to receive them  

回帖(3)

王鹏

2018-10-17 11:41:29
我假设您可以重复错误条件。
如果数据包的序列相当一致,您可以在整个SPI活动突发的多个触发器上手动构建记录,而不是使用分段。
使用“单个”而不是“运行/停止”,这会使记录长度加倍。
将时间/格设置为最慢可能,以便解码仍然有效(没有粉红色表示欠采样)。
将触发器设置为第一个数据包,将水平时间参考设置为“Left”。
生成错误条件并查找错误。
然后将延迟移动几乎全屏(可能是9格)。
再次运行测试。
继续增加延迟。
有点乏味,但它是一种解决内存限制的方法。

以上来自于谷歌翻译


     以下为原文

  I assume you can repeat the error condition.  If the sequence of the packets is fairly consistent you can manually build the record over multiple triggers of the entire burst of SPI activity instead of using segmented.  Use 'Single' instead of 'Run/Stop' which doubles the record length.  Set the time/div to the slowest possible so that the decode is still valid (no pink which indicates undersampled).  The set the trigger to the very first packet and the horizontal time reference to 'Left'.  Generate the error condition and look for the error.  Then move the delay by almost a full screen (maybe 9 divisions).  Run the test again.  Keep adding delay.  Somewhat tedious but it is a way to get around the memory limitations.
举报

周菊

2018-10-17 11:49:00
引用: qwer34 发表于 2018-10-17 06:53
我假设您可以重复错误条件。
如果数据包的序列相当一致,您可以在整个SPI活动突发的多个触发器上手动构建记录,而不是使用分段。
使用“单个”而不是“运行/停止”,这会使记录长度加倍。

你可能应该做'Thomas001'所说的......在一系列捕获中构建跟踪。
至于ScanaPLUS,它看起来很有趣,但有些限制。
虽然有协议解码器,但除了简单的边缘触发器之外没有触发器。
正如您所说,看起来它可以捕获,但前提是捕获的数据可以被压缩。
当与随机数据一起使用时,不清楚深度是多少。
我可以看到,在某些情况下,它可能非常有用。
也许您可以在分段模式下使用示波器,并将Trigger Out连接到ScanaPlus上未使用的通道,以便您可以轻松找到每个数据包的开头。
免责声明:为了获得更可靠的响应,您应该考虑致电当地的Keysight技术呼叫中心。
Keysightwilliam hill官网 在“可用”的基础上进行监控,并不一定是解决技术问题的最快方式。

以上来自于谷歌翻译


     以下为原文

  You should probably do what 'Thomas001' says.. Build the trace over a series of captures. 

As for the ScanaPLUS, it looks very interesting, but somewhat limited. While there are protocol decoders, there are no triggers, except for simple edge triggers. It looks like it can capture, as you said, but only if the captured data can be compressed. It's unclear what the depth is when used with random data. I can see that for some situations, it can be quite useful. Maybe you can use the scope in segmented mode, and connect the Trigger Out to an unused channel on the ScanaPlus, so that you can easily find the beginning of each packet.

Al

Disclaimer: For more reliable response, you should consider calling your local Keysight Technical Call Center. The Keysight Forums are monitored on an "as available" basis, and aren't necessarily the fastest way to get technical questions answered.
举报

h1654155275.5998

2018-10-17 12:06:10
引用: nvywyerwer 发表于 2018-10-17 07:00
你可能应该做'Thomas001'所说的......在一系列捕获中构建跟踪。
至于ScanaPLUS,它看起来很有趣,但有些限制。
虽然有协议解码器,但除了简单的边缘触发器之外没有触发器。

感谢有用的输入人员。
事实上,由于故障是随机和间歇性的,所以不可能在部分中进行捕获。
我所知道的只是初始化数据是不正确的,但它在同一个地方从来没有错,但可能在数据流中的任何地方,或者数据可能适用于8或9个简历,但随后会失败。
事实证明这是/ HOLD线上的一个小故障,这是由于制造中已经替换了不正确的组件。
我能够使用IkaLogic Sc​​anaPLUS跟踪它,因为我可以将其设置为一次捕获10分钟,然后继续重置设备并注意它失败的次数。
然后我可以看看那些时候的数据包捕获,很明显出了什么问题。
实际上我可以踢自己,因为我应该注意到的是数据很好,除了缺少部分。
这显然是/ HOLD被断言的地方,因此数据不同步。
如果我看到它可能给了我一个线索,从哪里开始寻找。

以上来自于谷歌翻译


     以下为原文

  Thanks for the useful input guys. As it happens it would not have been possible to do the capture in sections as the glitch was random and intermittent. All I knew was that initialisation data was incorrect but it was never wrong in the same place but could be anywhere in the data stream, or the data could be good for 8 or 9 resumes but then would fail.

It turned out to be a glitch on the /HOLD line that was due to an incorrect component having been substituted in manufacture. I was able to track it down with the IkaLogic ScanaPLUS because I could set it up to capture for 10 minutes at a time and just keep reseting the unit and noting the times that it failed. I could then look at the packet capture at those times and it was obvious what was going wrong.

Actually I could kick myself because what I should have noticed was that the data was fine except that there were sections missing. This was obviously where the /HOLD was being asserted and so the data was out of sync. If I had seen that it might have given me a clue as to where to start looking.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分