python - 树莓派和 SPI 接口(interface) (Python) : how to transfer data?

标签 python c raspberry-pi

我在我的 Raspberry Pi 上使用 SPI 接口(interface)。

我可以使用以下代码读取连接到 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 - int
  • H -
  • B - char
  • : - 函数名称字符串的开始 (xfer)

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

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

关于python - 树莓派和 SPI 接口(interface) (Python) : how to transfer data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13415670/

相关文章:

在 C 中复制链表

javascript - 从文本文件创建一个 javascript 对象

amazon-web-services - 使用 AWS SSM 服务在启动时更新 Raspberry Pi

python - 对巨大的矩阵进行排序,然后在列表中找到最小的元素及其索引

c - Dbus-API - 在 c/Linux 中获取服务链接错误?

python - 如何加入行的切片以在 python 中创建一个新行

objective-c - 使用 'raster mode' : need basic guidance 直接打印到以太网打印机

python - 如何使用 python 在 Raspberry Pi 上打开 PowerPoint?

python - 从 python 运行 MATLAB 脚本 + 传递参数

python - scikit 学习。 n_jobs=-1 的多处理管道中的自定义估算器