关于spidev_test自发自收数据不正确的解决方案

参考了上篇文章后,在/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时钟有关。具体是怎么回事还不知道,仅是猜测。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: spidev_test是一款 Linux 内核模块或者用户空间程序,用于测试 SPI (Serial Peripheral Interface) 设备的正常工作情况。 SPI 是一种串行通信协议,通常用于连接芯片或传感器等外设设备与主机进行通信。spidev_test 的作用是通过 SPI 接口读取或写入数据,以确认该接口是否正常工作。 spidev_test 可以在用户空间通过命令行方式进行调用,也可以在内核空间作为一个模块加载,以便进行更加底层的测试。其中,用户空间的程序可以直接读写 /dev/spidevX.Y 设备文件,而内核模块则需要通过 SPI 设备驱动进行操作。 在使用 spidev_test 进行测试时,需要先准备一个合适的 SPI 设备和一个测试用例程序。测试用例程序通常会使用 spidev_test 提供的 read 和 write 函数进行数据的读写,并根据结果判断测试是否通过。如果测试失败,可以进一步分析错误日志或者进行硬件调试,以解决问题。 总的来说,spidev_test 是一个非常实用的工具,可用于确保 SPI 设备的正常工作。它通常被用于嵌入式系统、智能家居设备等领域,并且也可以帮助开发人员更好地理解 SPI 协议和与其相关的硬件逻辑。 ### 回答2: spidev_test是一个运行在Linux系统上的程序,用于测试SPI设备的正常工作状态。SPI是一种串行通信协议,用于在芯片之间进行高速数据传输。在嵌入式系统中经常使用SPI协议,比如控制LCD屏幕、控制器芯片等。 spidev_test通过读写SPI设备的寄存器或RAM等功能,测试SPI设备的基本操作是否正常,以及网络是否连接正确。在使用spidev_test之前,需要加载SPI驱动模块,并提前安装Linux操作系统。 Spidev_test可以对SPI协议参数进行设置,比如传输速度、传输模式、字节顺序等,以满足不同的应用场景需求。同时,spidev_test也支持通过命令行输入和读取数据,进行SPI设备读写测试。 总之,spidev_test是一个重要的测试工具,可以帮助嵌入式系统工程师进行SPI设备的快速测试和故障排查,提高工作效率。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值