Raspberry Pi和SPI接口(Python):如何传输数据?

Raspberry Pi和SPI接口(Python):如何传输数据?,python,c,raspberry-pi,Python,C,Raspberry Pi,我在Raspberry Pi上使用SPI接口 我可以用以下代码读取连接到SPI0的芯片寄存器(前20个寄存器): spi=spidev.SpiDev() spi.open(0,0) x=spi.readbytes(20) k=0 for i in x: print(k,hex(i),i) k=k+1 我的问题是:如何使用“spi.xfer”设置特定寄存器的值?我不知道xfer(…)函数采用什么参数 如何使用“spi.xfer”从特定寄存器读取值 虽然我有原始

我在Raspberry Pi上使用SPI接口

我可以用以下代码读取连接到SPI0的芯片寄存器(前20个寄存器):

spi=spidev.SpiDev()
spi.open(0,0)

x=spi.readbytes(20)

k=0
for i in x:
        print(k,hex(i),i)
        k=k+1
我的问题是:如何使用“spi.xfer”设置特定寄存器的值?我不知道xfer(…)函数采用什么参数

如何使用“spi.xfer”从特定寄存器读取值

虽然我有原始的C代码;我仍然无法解释如何使用xfer(…)

下面是C代码:


我相信这一行代码是关键:

PyArg_ParseTuple(args, "O|IHB:xfer", &list, &speed_hz,
                 &delay_usecs, &bits_per_word)
告诉我们格式化字符串意味着:

  • O
    -Python对象
  • |
    -表示以下选项是可选的
  • I
    -一个
    int
  • H
    -a
    short
  • B
    -a
    char
  • -函数名字符串的开始(
    xfer
其中,假设
列表
是要发送的数据似乎是合理的,实际上它似乎被解释为要发送的字节列表


由于SPI倾向于并行发送和接收,进一步阅读代码会让我相信
列表中的每个值将被发送特定字节时接收到的字节所取代。这很奇怪,但这对您来说是SPI。

我相信这行代码是关键:

PyArg_ParseTuple(args, "O|IHB:xfer", &list, &speed_hz,
                 &delay_usecs, &bits_per_word)
告诉我们格式化字符串意味着:

  • O
    -Python对象
  • |
    -表示以下选项是可选的
  • I
    -一个
    int
  • H
    -a
    short
  • B
    -a
    char
  • -函数名字符串的开始(
    xfer
其中,假设
列表
是要发送的数据似乎是合理的,实际上它似乎被解释为要发送的字节列表

由于SPI倾向于并行发送和接收,进一步阅读代码会让我相信
列表中的每个值将被发送特定字节时接收到的字节所取代。这很奇怪,但这是你的SPI