1

我在我的 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代码:

https://github.com/doceme/py-spidev/blob/master/spidev_module.c

4

1 回答 1

1

我相信这行代码是关键:

PyArg_ParseTuple(args, "O|IHB:xfer", &list, &speed_hz,
                 &delay_usecs, &bits_per_word)

文档告诉我们格式化字符串意味着:

  • O- 一个 Python 对象
  • |- 表示以下是可选的
  • I- 一个int
  • H- 一个short
  • B- 一个char
  • :- 函数名字符串的开始 ( xfer)

其中,假设list是要发送的数据似乎是明智的,实际上它似乎被解释为要发送的字节列表。

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

于 2012-11-16T12:50:05.667 回答