我在用树莓皮的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

最佳答案

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

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

The documentation告诉我们格式化字符串意味着:
O-一个Python对象
|-表示以下是可选的
I-anint
H-ashort
B-achar
:-函数名字符串的开始(xfer
其中,假设list是要发送的数据似乎是合理的,而且实际上它似乎被解释为要发送的字节列表。
由于SPI倾向于并行发送和接收,进一步阅读代码会使我相信list中的每个值都将被发送特定字节时接收的字节所代替。这很奇怪,但这是你的SPI。

09-30 15:52