使用spidev

问题描述

我正在尝试使用spi在Pi和FPGA之间发送和接收32位数据。因此,我将Pi设置为主设备,将FPGA设置为从设备。并使用spidev中的xfer2函数。但是,我无法读取数据。我该如何解决?。

前4个字节用于确定读取或写入周期。最后4个字节是要传输到FPGA的数据。例如,如果前4个字节为0x00000000,则这是写周期。并且,最后4个字节被传送到FPGA。因此,我想使用xfer2发送数据。这样,xfer2([0x00000000,0x000000ff])。但是,它没有用。因此,我认为xfer2每次仅传输1字节的数据。而且,我将其更改为xfer2([0x00、0x00、0x00、0x00、0x00、0x00、0x00、0xff])。

无论我发送什么数据,此代码都只打印出[0,0,0,0,0,0,0,0]。

下面是我简单的spi测试代码。

import spidev
import time

spi=spidev.SpiDev()
spi.open(0,1)
spi.max_speed_hz= 190000000 

while True:

    resp = spi.xfer2([0x00,0x00,0x01,0x00]) # read
    print(resp)
    time.sleep(0.1)
    spi.xfer2([0x00,0xff]) # write
    time.sleep(0.1)

    resp = spi.xfer2([0x00,0x01]) # write
    time.sleep(0.1)

    resp = spi.xfer2([0x00,0x00]) # read  
    print(resp)
    time.sleep(0.1)
    resp1 = spi.xfer2([0x00,0x02]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x00]) # read
    print(resp)
    time.sleep(0.1)
    resp1 = spi.xfer2([0x00,0x04]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x08]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x10]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x20]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x40]) # write
    time.sleep(0.1)
    
    resp = spi.xfer2([0x00,0x80]) # write
    time.sleep(0.1)

这是结果

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...