微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用spidev

如何解决使用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 举报,一经查实,本站将立刻删除。