发新帖本帖赏金 3.00元(功能说明)我要提问
返回列表
打印

遇到一个疑难问题,要崩溃了

[复制链接]
楼主: john-deng
手机看帖
扫描二维码
随时随地手机跟帖
41
john-deng|  楼主 | 2016-6-21 09:01 | 只看该作者 回帖奖励 |倒序浏览
zyj9490 发表于 2016-6-20 22:19
波特率有变化吗?开始与10分钟后,因是时序的问题的,同步的问题,必须要有同步时钟,因是FPGA时钟边沿的 ...

SCK时钟为8M的时候,一开始SDO的数据速率是2Mbps,后来数据速率降低为1Mbps也不行,也是跑10分钟就挂了,只有把SCK的时钟降低到4M才会好。

使用特权

评论回复
42
bkn1860| | 2016-6-21 14:57 | 只看该作者
ARM SPI通信部分有bug的可能大一些。给SPI赋值的地方增加些延时或者查询一下数据发完之后再写入SPI数据到发送寄存器。

使用特权

评论回复
43
chunyang| | 2016-6-21 15:16 | 只看该作者
注意连线长度,线长较长时要考虑抑制信号反射和驱动能力。

使用特权

评论回复
44
john-deng|  楼主 | 2016-6-21 22:15 | 只看该作者
bkn1860 发表于 2016-6-21 14:57
ARM SPI通信部分有bug的可能大一些。给SPI赋值的地方增加些延时或者查询一下数据发完之后再写入SPI数据到发 ...

谢谢,有办法抓到ARM发到SPI的数据吗

使用特权

评论回复
45
bkn1860| | 2016-6-22 10:32 | 只看该作者
john-deng 发表于 2016-6-21 22:15
谢谢,有办法抓到ARM发到SPI的数据吗

逻辑分析仪,数据量很大的话估计要把速度降低一些

使用特权

评论回复
46
huangqi412| | 2016-6-22 11:09 | 只看该作者
一个CLK 一个DO接个422芯片  没有CS和DI,  这个是SPI转成差分信号远距离单向传输?  
0 楼主没说字节发送间隔,帧间隔情况。以及链路各处波形质量,最好是贴几个示波器图直观。
1 似乎楼主说降低速度问题消失。FPGA应该不可能是422脚直接捅IO吧,肯定会再用个422芯片将差分转回单端再进IO.   绕过单端--》差分--》单端试试,  两个板子挨在一起单端到单端信号摸摸底。还可以就拿这个ARM,从FPGA那边将DO接回来到自己的DI测试,实时对比IN和OUT是否出现不一致,比上逻辑义简单快捷。如果同时加个逻辑义,ARM拿出条腿来做触发,定点抓IN和OUT不一致地方就更好了。  反正不管做什么实验也就10分钟一次,多种情况排列组合都摸摸底,比无规则故障幸福太多太多了。
2  也把我们的ARM板接到其他RS422转网口板上进行过抓包,8M时钟的时候无论跑多久又没有丢数据的现象。 看到这句又把2删了,看不明白了,先用1摸底吧。

使用特权

评论回复
47
huangqi412| | 2016-6-22 11:25 | 只看该作者
SPI不比UART本身会字节断句,错误字节丢弃,后面的不会BIT错位(帧依然要通过软件处理保证)。SPI从机是靠额外的CS脚做帧断句,除非有脉冲超时机制并且字节/帧之间间隔相对脉冲宽度较长可以丢弃错位字节/帧。如果没CS脉冲,又没引发位超时机制,假设中途丢了一个CLK脉冲或多了一个CLK脉冲,后面全部会挨个错位一个bit死翘翘.   通信想避免无一个bit错误是不可能的,只能创造条件找出错误bit所在字节/帧进行丢弃/修复/重传,通信过程是可以容忍出错的,概率别太高就行。楼主的链路从描述看似乎是根本没有?  ARM对别的板子发不会丢数据(楼主也没讲如何鉴定没有丢数据的,这个正确性要打疑问),出错时候需要重启的又是ARM不是FPGA,似乎都不是自己问题,也可能都有问题合在一起才表现出来。。。

使用特权

评论回复
48
yfy871216| | 2016-6-23 16:35 | 只看该作者
本帖最后由 yfy871216 于 2016-6-23 16:36 编辑

根据楼主的描述有可能是本身数据没有丢失,只是数据错乱了,这个可以通过逻辑分析仪来进行分析。这跟SPI硬件协议有关,SPI是同步通信,每个时钟发送一位,但是字节之间并没有明显的间隔标志,所以会出现数据错乱的现象。如果楼主用的ARM芯片支持TI模式的SPI协议,通信效果会好很多。

使用特权

评论回复
49
john-deng|  楼主 | 2016-6-23 18:18 | 只看该作者
huangqi412 发表于 2016-6-22 11:09
一个CLK 一个DO接个422芯片  没有CS和DI,  这个是SPI转成差分信号远距离单向传输?  
0 楼主没说字节发送间 ...

用带有包头和计数的模拟数据对比抓包,都有丢,但是都是在FPGA之后抓的。

使用特权

评论回复
50
ranli55| | 2016-6-23 21:33 | 只看该作者
本帖最后由 ranli55 于 2016-6-23 21:34 编辑

感觉是ARM这边有数据溢出或者中断影响到了SPI的发送造成数据或者时钟的配合出错,或者是影响到了你的分包过程,造成地址或者数据出错,你可以做个最小系统禁掉所有的外设和多任务,只发送固定数据看下是否会出错。抓包相对于FPGA的转换容错率要高得多有时很难发现错误。

使用特权

评论回复
51
snakeemail| | 2016-6-23 21:56 | 只看该作者
发0x55或者0xaa这种数据,发完后ARM回读,看是否正确,不正确就ARM停下来,此时示波器就是最后一个波形。到底是谁错了,就知道了

使用特权

评论回复
评论
Dongfangyuxiao 2016-6-24 23:16 回复TA
还是这个易于操作! 
52
mcu5i51| | 2016-6-24 08:20 | 只看该作者
逻辑分析仪记录十几分钟数据分析原因

使用特权

评论回复
53
亚平宁的清风| | 2016-6-24 09:45 | 只看该作者
当spi发送速率高于422芯片的发送速率时,应该422转接芯片需要缓冲数据,缓存满了也许422转接芯片就丢包了。这时候就要看同步机制了,也许是同步错误是否会复位同步。建议写一个测试用例,在422转接芯片处回环拷机,并校验数据,逐层的去排查链路

使用特权

评论回复
54
han0097| | 2016-6-24 10:47 | 只看该作者
我是来看回答学习的,出错最容易学到东西。楼主修好了吗?

使用特权

评论回复
55
john-deng|  楼主 | 2016-6-24 12:48 | 只看该作者
han0097 发表于 2016-6-24 10:47
我是来看回答学习的,出错最容易学到东西。楼主修好了吗?

没有

使用特权

评论回复
56
yfy871216| | 2016-6-24 14:50 | 只看该作者
首先,你要确定FPGA收到的数据对不对,如果FPGA收到的数据是对的,但没有接收到那么多的数据包,则可以确定数据是丢了,如果FPGA接收到的数据不对,那么很有可能是数据错位了。请楼主先搞清楚这一点,我之前搞两个ARM SPI通信时,当时也是老是怀疑是数据丢了,后来通过查找资料和测试发现,数据并没有丢,只是数据错位了。后来就采用TI模式的SPI协议,完美解决问题!

使用特权

评论回复
57
yfy871216| | 2016-6-24 15:06 | 只看该作者
另外,还有一种可能就是数据传输链路速度不匹配造成数据丢失,ARM SPI数据传输的波特率为8Mbps的话,FPGA数据接收的速率达到这个水平是没有任何问题的,关键就在于从SPI转换为RS-422这个过程,数据很大可能是在这个地方丢的,如果只是数据丢了,那么时钟信号应该还是正常的,如果时钟信号通过MAX3087之后都不正常了,那么我只能说楼主采用这种通信方式是有问题的。

使用特权

评论回复
58
john-deng|  楼主 | 2016-6-24 18:56 | 只看该作者
yfy871216 发表于 2016-6-24 15:06
另外,还有一种可能就是数据传输链路速度不匹配造成数据丢失,ARM SPI数据传输的波特率为8Mbps的话,FPGA数 ...

多谢,抓了两天数据,基本锁定我们板子有一定的问题,但还不知道从什么地方入手。

试验结果是这样的:把demo板的SPI接口飞出来,同样的demo程序,demo板SPI接口经过RS422转换到FPGA抓取,没有丢包现象,且速率非常恒定(260K左右)。而同样的demo程序,在我们板子上运行,刚开始速率是160K左右,跑到10多分钟才能稳定在260K左右,就是中间有一个速率的跳变,目前还不知道是什么原因。demo板和我们的板子基本都是最小系统在跑同一个SPI测试程序,但是demo板的接口速率很恒定,我们的板子接口速率有跳变。

使用特权

评论回复
59
ranli55| | 2016-6-24 20:00 | 只看该作者
john-deng 发表于 2016-6-24 18:56
多谢,抓了两天数据,基本锁定我们板子有一定的问题,但还不知道从什么地方入手。

试验结果是这样的:把 ...

速率从160K变到260K ?那肯定会丢包啦,SPI的速率整个过程应该是固定速率的不会变化的,你看下你的时钟电路看看,SPI的速率和时钟直接关联的,你的总线时钟有一个变化,你看下是哪里引起的,把不用的功能都禁用掉一点点的查很容易的就查到的

使用特权

评论回复
60
john-deng|  楼主 | 2016-6-24 21:11 | 只看该作者
ranli55 发表于 2016-6-24 20:00
速率从160K变到260K ?那肯定会丢包啦,SPI的速率整个过程应该是固定速率的不会变化的,你看下你的时钟电 ...

我量了,SPI  CLK 一直是8M,只是数据速率变化了,很纳闷啊

使用特权

评论回复
发新帖 本帖赏金 3.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则