You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派5使用Spidev与DACx3202通信时反复出现Errno 22无效参数错误

树莓派5使用Spidev与DACx3202通信时反复出现Errno 22无效参数错误

我最近在用Spidev连接外设的时候,突然开始遇到这个错误:

OSError: [Errno 22] Invalid argument

一开始重启设备之后错误就消失了,但多运行几次程序又会出现,现在哪怕重启也不管用了。而且不管用xfer2、write_bytes还是其他相关方法,都会触发这个错误。

补充说明:后来发现这个问题和bits_per_word设置有关,把这个值调低之后,问题好像就解决了

以下是我的测试代码:

import spidev
if __name__ == "__main__":
    spi: spidev.SpiDev = spidev.SpiDev()
    spi.close() # 尝试清理之前运行可能留下的未关闭/占用的设备资源
    spi.open(1, 2)
    spi.max_speed_hz = 500_000_000
    spi.mode = 0b01 # 时钟常态为低电平,在下降沿采样数据
    spi.bits_per_word = 24
    spi.lsbfirst = False
    print(spi.xfer([38,1]))
    spi.close()
    print("success")

运行后得到的报错信息:

Traceback (most recent call last):
  File "/path/to/file/file.py", line 89, in <module>
    print(spi.xfer([38,1]))
          ^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument

设备与环境详情

  • 硬件:树莓派5,通过SPI1.2连接DACx3202芯片,已在config.txt中启用spi1-3cs overlay,之前一直能正常工作
  • Python版本:3.11.2
  • 系统:Debian GNU/Linux 12 (bookworm)

我找了一些2015年的相关旧问题,但没发现近期的案例,也搞不懂为什么一开始重启能解决,后来就彻底不行了。

备注:内容来源于stack exchange,提问作者lunuchrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:13:06