本帖最后由 john-deng 于 2016-6-26 19:21 编辑
问题是这样的:用我们板子上ARM芯片(HI3516A)的SPI接口向FPGA板发视频数据(这个FPGA是购买的成品,不能抓log),每次我们板子上电发到十分钟的时候FPGA就开始出现丢数据,此时重启我们的ARM板子FPGA又好了。FPGA板不上电,我们板子先跑十分钟,接到FPGA上时FPGA就在丢数,和我们ARM板接在FPGA上跑10分钟的现象一样。--------感觉就是ARM板跑10分钟后什么地方跑偏了一样。
谢谢大家。
2016.6.23更新如下:后来我们找了一个可以抓log的FPGA进行联调,ARM这边用模拟的可以计数的数据对FPGA发数据,发到10分钟后也会丢数据。也怀疑的ARM的多任务运行对SPI的发送有影响,后面也用SDK的demo SPI例程测试(就是其他程序都不跑,就只跑SPI例程),此时数据速率比较恒定,但是还是跑十分钟就开始丢数。 硬件上,只将ARM的SPI_CLK和SPI_MOSI转成rs422接到GPGA。
软件上,ARM先把数据拆成248字节一包,加上8字节的同步包头一起共256字节发送给FPGA,FPGA在时钟的下降沿取数,没有其他协议,FPGA通过识别前8个字节的包头来同步和识别数据,通过抓包分析,在8M时钟的情况下,通过FPGA的数据有丢失现象:有时丢几个256字节的包,有时丢几十个256字节的包。
到目前为止,发现只有丢数现象,错位也可能有,但是不确定,因为没有包头的数据都丢了。
2016.6.24更新:把ARM demo板的SPI接口飞出来,同样的demo程序,demo板SPI接口经过RS422转换到FPGA抓取,没有丢包现象,且速率非常恒定(260K左右)。而同样的demo程序,在我们板子上运行,刚开始速率是160K左右,跑到10多分钟才能稳定在260K左右,就是中间有一个速率的跳变,目前还不知道是什么原因。demo板和我们的板子基本都是最小系统在跑同一个SPI测试程序,但是demo板的接口速率很恒定,我们的板子接口速率有跳变.
2016.6.26更新:
程序用的是demo板的,硬件除了PCB,其他基本和demo板一样了。现在的现象是在demo板上上电就很稳定的260k,我们的板子上电只有160K,要跑十分钟才能上升到260K。
硬件改了复位、上电时序、时钟晶体,没有变化,也是要等十分钟我们的板子速度才能上来。
主电源3.3V用安捷伦的高精度电源供,CPU各个电源并47uF大电容,DDR电源加47Uf,结果现象没有一点点变化,上电还是只有160K速度,要跑十分钟才能上升到260K。
感觉就是硬件改了很多地方,做了很多试验,结果的现象没有一点变化,都不晓得要改什么地方了。。。
通过以上的实验说明我们的ARM板跑十分钟后应该是有什么地方跑偏了,但又不是偏的很厉害(通过其他422转网口板可以传数据)。
我们已经调了半个月了,
想请教一下可能是什么原因?我们板子应该从什么地方入手分析?
补充:
原理图如下,ARM芯片的SPI做为master,通过max3087转为rs422接口再传输给FPGA,距离只有20cm。
目前配的时钟是8M,跑10分钟后FPGA就开始出现丢数,此时量波形并未有异常(时钟下降沿对着数据信号的正中间),把时钟降低到4M的时候也丢数,只是丢的比较少。
其他实验:1)调整接口匹配、更改接线长度和方式,现象没有任何变化,基本排除了硬件接口上的原因。
有坛友提出电源的肯能性比较大,因此我又仔细看了一下电源部分,发现我们的设计和参考设计有一个电阻不同,如下图,请问那个电阻是干什么用的?影响大吗?
|