我在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
答案 0 :(得分:1)
我相信这行代码是关键:
PyArg_ParseTuple(args, "O|IHB:xfer", &list, &speed_hz,
&delay_usecs, &bits_per_word)
The documentation告诉我们格式化字符串表示:
O
- 一个Python对象|
- 表示以下是可选的I
- int
H
- short
B
- char
:
- 函数名称字符串(xfer
)其中,假设list
是要发送的数据似乎是明智的,实际上它似乎被解释为要发送的字节列表。
由于SPI倾向于并行发送和接收,因此进一步阅读代码会让我相信list
中的每个值都将被发送特定字节时收到的字节所取代。这很奇怪,但那是你的SPI。