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

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

[复制链接]
楼主: john-deng
手机看帖
扫描二维码
随时随地手机跟帖
101
Frank1996| | 2016-7-15 23:32 | 只看该作者 回帖奖励 |倒序浏览
FPGA中的SPI接收程序是用状态机实现的,一般有空闲、等待、接收、存储、输出等状态,上位机CS下调沿启动发送,若此时下位机的状态机不处于等待状态则会丢数据,这就是98楼所说的字同步。建议用Modbus RTU

使用特权

评论回复
102
Frank1996| | 2016-7-15 23:36 | 只看该作者
FB  -------FeedBack,  电源的负反馈输入,0欧姆电阻不会影响电源的工作

使用特权

评论回复
103
ayl439| | 2016-7-16 09:27 | 只看该作者
楼主问题解决了吗?

使用特权

评论回复
104
walterqin| | 2016-7-17 22:45 | 只看该作者
跟帖学习!!!不知道问题解决没?

使用特权

评论回复
105
高工电子工作室| | 2016-7-18 11:28 | 只看该作者
也有可能是SPI配置的问题!

使用特权

评论回复
106
john-deng|  楼主 | 2016-7-18 16:08 | 只看该作者
walterqin 发表于 2016-7-17 22:45
跟帖学习!!!不知道问题解决没?

还没有

使用特权

评论回复
107
ittechbay| | 2016-7-18 22:38 | 只看该作者
你能不能软件中,发的数据都是有规律的数据,比如都是二进制1,然后丢数据时,用示波器沿着信号走向看看,哪个地方信号不正常

使用特权

评论回复
108
ittechbay| | 2016-7-18 23:54 | 只看该作者
本帖最后由 ittechbay 于 2016-7-18 23:58 编辑

看论述,不确定测试板和demo板上的软件环境是否一模一样。

使用特权

评论回复
109
ou513| | 2016-7-20 10:22 | 只看该作者
FPGA端抓到数据正常吗?用FPGA自带逻辑分析仪抓数据看看。跟着学习学习

使用特权

评论回复
110
john-deng|  楼主 | 2016-7-20 17:21 | 只看该作者
ou513 发表于 2016-7-20 10:22
FPGA端抓到数据正常吗?用FPGA自带逻辑分析仪抓数据看看。跟着学习学习

这个问题的关键就是FPGA不能抓包也不能改代码....

使用特权

评论回复
111
dongshan| | 2016-7-21 07:54 | 只看该作者
john-deng 发表于 2016-7-20 17:21
这个问题的关键就是FPGA不能抓包也不能改代码....

为什么不怀疑是FPGA有问题,刚好10分钟之后出问题,这也太巧了。。。

使用特权

评论回复
112
ou513| | 2016-7-21 08:32 | 只看该作者
john-deng 发表于 2016-7-20 17:21
这个问题的关键就是FPGA不能抓包也不能改代码....

这样啊,FPGA是买别人的模块啊??

使用特权

评论回复
113
feiban001| | 2016-7-21 11:21 | 只看该作者
1、FPGA肯定没有问题。 理由: 你先跑ARM后跑FPGA的测试问题依旧。DEMO板的测试也说明同样的问题。
2、关于晶振的问题,晶振温飘太高,随着ARM温度的升高频率在改变,导致SPI——clk漂移。 但是,不可能每次都是10分钟出问题。比如刚过10分钟,reset一下,时间很短,arm的温度还没有降下来,在运行很短时间就可能达到同样的温度。 如果看不到对应的结果,则不会是晶体的原因。(其实从SPI机制和速率来看,这个可能性也不大) 。 当然,也可以用温补的有源晶体振荡器替换测试。
3、串扰: SPI总线串扰,其他信号串扰SPI,伴随温度的影响, 但是现象必然和上一条一致。 示波器就能监视到串扰现象。
4、程序问题:居然相同的测试程序在两个板子上跑的结果不同,说明程序配置并没有问题。 当然,测试程序和你自己的程序并不是一回事儿。也不能排除你自己程序没有问题。但是说明你自己的ARM板硬件肯定有问题。
5、如果以上测试都严格无误,我觉得可能的问题有:ARM芯片本身的问题、422芯片的问题。layout问题,焊接质量问题。

你所说10分钟的间隔,重点观察一下,每次都是10分钟,和每次不一样是完全不一样的。这一点可以排除很多可能性。

使用特权

评论回复
114
runningwzf| | 2016-7-23 20:33 | 只看该作者
我们项目用SPI不间断传输数据都没有发生过问题。有几个调试的经验可供楼主参考:
1、时钟跳变几乎不会影响数据传输。因为SPI是边沿判断的。
2、字同步必须的做,如果没有字同步信号,一旦出现字同步失败,则很难恢复的过来。我们测试的时候就发现过这样的事情,传输一个log文件进FPGA发送到以太网,总是最后一半数据乱掉。经分析FPGA内部的数据发现其中一个字节少了一位,后面的全部数据就跟着少了。FPGA工程师后来调试发现问题很简单:FPGA收到16个上上升沿后就判断收到一个字,然后丢给内部总线,这种机制在时序上如果某一次丢失了一个位,后面的数据都会出现错一个位。所以后来强制使用nCS做字同步,用nCS的低电平去清除FPGA内部的上升沿计数器。从此以后发现误码率大大下降,就是出错也就是两个字节数据而已。
3、用8个字节做着数据帧的同步方法可行,但是存在一定的风险,一旦数据域出现和同步域一样的数据,则同步失败。如果数据量大,建议使用外部同步信号,如果数据量一般,则建议使用协议传输,利于SLIP之类的协议。我们现在在项目上用SLIP传输觉得挺好,协议简单,开销不大,可实现透传。

使用特权

评论回复
115
john-deng|  楼主 | 2016-7-25 15:11 | 只看该作者
runningwzf 发表于 2016-7-23 20:33
我们项目用SPI不间断传输数据都没有发生过问题。有几个调试的经验可供楼主参考:
1、时钟跳变几乎不会影响 ...

多谢,现在要求对方给出FPGA的时序要求或者规格说明,还没结果。之前都是乱改乱试,太难弄了

使用特权

评论回复
116
powbir| | 2016-7-25 17:01 | 只看该作者
可以考虑发热,布局等影响!

使用特权

评论回复
117
pcclyde| | 2016-7-25 19:39 | 只看该作者
看你调了这么久,没上示波器测测吗?  从ARM到FPGA这个链路这么简单,抓一下信号要不了多久的。

使用特权

评论回复
118
runningwzf| | 2016-7-26 08:30 | 只看该作者
john-deng 发表于 2016-7-25 15:11
多谢,现在要求对方给出FPGA的时序要求或者规格说明,还没结果。之前都是乱改乱试,太难弄了 ...

对方不能从你这里赚到足够的钱,他是不会理会你的
从你描述的来看,还得找自身的原因

使用特权

评论回复
119
goonce| | 2016-7-26 20:26 | 只看该作者
john-deng 发表于 2016-7-25 15:11
多谢,现在要求对方给出FPGA的时序要求或者规格说明,还没结果。之前都是乱改乱试,太难弄了 ...

感觉楼主问题应该是spi数据速度跳变的时候发生的数据错误,如果只是解决这个问题,增加cs的判断应该能搞定,毕竟少量的丢包应该是可以接受的。但是根本的问题还是没找到,建议试一试以下办法:
1、配置spi速度为低速率如100k左右,看十分钟是不是还是有跳变或者丢包的问题;
2、计时到八分钟左右时复位spi,重新配置一次spi,看结果有没有变化;
3、询问芯片技术支持,问一下可能的原因。

使用特权

评论回复
120
cyq1245| | 2016-7-29 14:23 | 只看该作者
数据率为什么会变化呢?感觉是主芯片有问题或者内核有问题,线程管理执行时间有了差异。主芯片是不是测试可靠的芯片?

就算数据率出现了变化,只要每次SPI波形正确,FPGA为什么又会丢包呢?感觉匹配存在问题。

使用特权

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

本版积分规则