参考了上篇文章后,在/dev下已经产生了spi节点,并且成功编译和移植了测试程序spidev_test,详情请参考:
https://blog.csdn.net/qq_35141454/article/details/100774858
一丶测试
于是进行了测试:
① 在不短接mosi miso的情况下:
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
6B 6B 6B 6B 6B 6B
6B 6B 6B 6B 6B 6B
6B 6B 6B 6B 6B 6B
6B 6B 6B 6B 6B 6B
6B 6B 6B 6B 6B 6B
6B 6B 6B 6B 6B 6B
6B 6B
② 短接mosi miso情况下,结果与①一样。
二丶分析
正常情况下,如果不短接,那么miso将全部收到00 (FF),如果短接,根据代码中发送内容,那么正确的应该接收到如下:
spi mode: 0x0
bits per word: 8
max speed: 5000000 Hz (5000 KHz)
FF FF FF FF FF FF
40 00 00 00 00 95
FF FF FF FF FF FF
FF FF FF FF FF FF
FF FF FF FF FF FF
DE AD BE EF BA AD
F0 0D
三丶解决
更改spidev_test源代码中的speed,原先的speed=500000,现在改为5M。更改后,结果如下:
结果正确。
出现错误结果的原因有可能是spi的时钟频率有一个范围,超过或者低于这个范围就会导致数据错误等。试了一下,将speed改为50M,数据都没有了,直接报参数错误。所以猜测,出现这个的原因跟设置spi时钟有关。具体是怎么回事还不知道,仅是猜测。