跳转到主要内容

通过spidev在Linux中访问SPI的Python绑定

项目描述

Python Spidev

本项目包含一个用户空间通过spidev Linux内核驱动程序与SPI设备交互的Python模块。

除非明确声明,所有代码均为MIT许可。

使用方法

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)
to_send = [0x01, 0x02, 0x03]
spi.xfer(to_send)

设置

import spidev
spi = spidev.SpiDev()
spi.open(bus, device)

# Settings (for example)
spi.max_speed_hz = 5000
spi.mode = 0b01

...
  • bits_per_word
  • cshigh
  • loop - 设置“SPI_LOOP”标志以启用回环模式
  • no_cs - 设置“SPI_NO_CS”标志以禁用芯片选择(尽管驱动程序可能仍然拥有CS引脚)
  • lsbfirst
  • max_speed_hz
  • mode - SPI模式,为时钟极性和相位的两位模式[CPOL|CPHA],最小:0b00 = 0,最大:0b11 = 3
  • threewire - SI/SO信号共享
  • read0 - 如果cshigh == True,则在传输后从低CS读取0个字节

方法

open(bus, device)

连接到指定的SPI设备,打开/dev/spidev<bus>.<device>

readbytes(n)

从SPI设备读取n个字节。

writebytes(list of values)

将值列表写入SPI设备。

writebytes2(list of values)

writebytes类似,但接受任意大小的列表。如果列表大小超过缓冲区大小(从/sys/module/spidev/parameters/bufsiz读取),数据将被分割成更小的块并在多个操作中发送。

此外,writebytes2理解缓冲区协议,因此它可以接受numpy字节数组等,无需先使用tolist()进行转换。这提供了更好的性能,例如在需要将帧传输到连接的SPI显示器时。

xfer(list of values[, speed_hz, delay_usec, bits_per_word])

执行SPI事务。芯片选择应在块之间释放并重新激活。延迟指定块之间的延迟(微秒)。

xfer2(list of values[, speed_hz, delay_usec, bits_per_word])

执行SPI事务。芯片选择应在块之间保持激活状态。

xfer3(list of values[, speed_hz, delay_usec, bits_per_word])

xfer2类似,但接受任意大小的列表。如果列表大小超过缓冲区大小(从/sys/module/spidev/parameters/bufsiz读取),数据将被分割成更小的块并在多个操作中发送。

close()

从SPI设备断开连接。

变更日志

3.6

  • 添加了read0标志,以在cshigh == True时在传输后从CS降低0个字节进行读取

3.5

  • 修复了内存泄漏

3.4

  • 将许可证更改为MIT

3.0.1

  • 修复了README.md和CHANGELOG.md的格式,希望如此

3.0

2.0

代码源自http://elk.informatik.fh-augsburg.de/da/da-49/trees/pyap7k/lang/py-spi并进行修改。

2.0之前

spimodule.c最初由Volker Thoms于2009年编写。

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码发行版

spidev-3.6.tar.gz (11.9 kB 查看哈希)

上传时间 源代码

构建分发版

spidev-3.6-cp39-cp39-linux_armv7l.whl (40.0 kB 查看哈希)

上传时间 CPython 3.9

由以下支持:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面