关于树莓派SPI驱动bufsiz大小修改和SPI速率的问题

airfly 2019-08-17504 次点击

1.我现在正在使用树莓派3B+开发一个项目,通过树莓派的SPI向FPGA传输数据,每次传输字节的长度超过了4096,而默认的SPI缓存大小是4096,传输要求每次连续不能中断,所以只能修改默认的bufsiz大小;在网上查找了一些资料,了解到需要修改spidev.c中的bufsiz大小后,重新编译spi模块,经过很长时间的尝试没有成功,请问这个SPI内核模块如何编译?

2.在实验中发现,设置SPI频率超过50MHz后,连续传输中每个字节间有很大的间隔,使用wiringpi函数和Python spidev模块都是一样的,不知道这是我使用的原因还是树莓派的限制,如果是这样,再高的SPI速率也是没有意义的,希望得到帮助,谢谢。

收藏 ♥ 感谢
Spoony 小组长 2019-08-17 
1)For some time, the Pi Foundation have compiled the SPI device driver into the kernel. The way to change the buffer size now is to edit the /boot/cmdline.txt file and add:

spidev.bufsiz=<NEEDED BUFFER SIZE>

参考
1. https://stackoverflow.com/questions/16427996/increase-spi-buffer-size-in-raspbian
2. https://www.raspberrypi.org/forums/viewtopic.php?t=124472

2)有点超纲了回答不上来。树莓派的GPIO频率似乎受到内核影响没法设定过高(即便设定了实际使用时在性能上还是会存在差异)。但是暂时没有找到官方对此的说法。
airfly 2019-08-19 
1.非常感谢,按照您的方法成功修改了SPI bufsiz的大小
2.第二个问题是我使用树莓派的SPI,不是GPIO模拟,频率设为125MHz时进行了5000字节的连续传输测试,下图是我用signaltap采集的波形,采样率为200MHz,可以明显看到每个字节的间隔很大,不清楚是很么原因导致的(是否和SPI的64深度的FIFO有关?),之前确实采集到的连续的传输,但是现在无法复现了,还请再帮助一下,谢谢

Spoony 小组长 2019-08-19 
@airfly 第二个问题我也不清楚,还需要深入研究下。

登录注册 后可回复。

这里由以下店铺的技术人员在此免费提供能力范围内的技术支持。

NXEZ 创客商店(淘宝)

排障问题发帖注意事项:
1、请尽可能将故障说明清晰,列明例如使用环境和做了哪些操作和配置等。
2、排障中已经做了哪些尝试,如果能在问题中进行描述将极大提高解决问题的效率。
3、对于需要自身完成知识积累才能解决的问题,请自行通过搜索引擎寻找资料学习。