dxfshsh 发表于 2022-5-22 17:48

两片GD32E103分别做为主——从SPI通讯,误码问题

本帖最后由 dxfshsh 于 2022-5-22 17:49 编辑

最近,项目需求,要在两个单片机间使用SPI通讯,选用了GD32E103,一个为主,一个为从,15M SPI通讯。
由主向从通讯,没有误码,但由从到主的通讯总是有误码,误码率约为万分之一,查了一个月,没有结果。
不知网上有没有童鞋,遇见同样的问题。
经过一个月的排查,基本排除硬件电路和软件编程问题。

dxfshsh 发表于 2022-5-24 22:18

现在,初步推测大概率的原因,可能是从SPI接收中断,被从机中的其它高优先级中断干扰了。
从原理上讲,即使这样通常也不应该出错,但现在确实是出错了,可能是从机的高优先级中断用时过多。

dxfshsh 发表于 2022-5-28 07:23

问题基本找到了,是我们查找BUG的方向出了问题,我们将SPI通讯数据通过USB端口输出到PC进行接收显示,并查看数据错误,发现出现误码的地方和64字节或64字节的整倍数有关,这不应该是SPI传输出现的误码,误码应该来自单片机系统的其它地方,和64字节相关。这正好是USB端口一包的定量。于是我们将测试误码的方向转向了USB接口。并且在论坛上看到了一个关于GD32E103的USB传输有硬件BUG的帖子(见图)。发现问题确实出现在这里。由于SPI传输的速率很高且传输的数据量很大,将这些数据通过USB传输给PC的过程中触发了帖子中提到的BUG。

dxfshsh 发表于 2022-5-28 11:06

再一次的感谢Xiao Dong工程师。专业而细致的探索,并将相关内容提供给大家分享。

既然找到了BUG的出处,那么我们就不希望上贴中的情况出现。在收到SPI数据后,不能象开始的时候那样,得到SPI数据立即发送给USB端口,而应当有节奏分批发送给USB端口,避免帖子中描述的状况出现。至此问题得以圆满解决!!!!!
页: [1]
查看完整版本: 两片GD32E103分别做为主——从SPI通讯,误码问题