树莓派与Adafruit MAX31856通信失败,报错/dev/spidev0.0不存在
树莓派与Adafruit MAX31856通信故障排查
尝试用树莓派读取热电偶温度,已下载所需库、确认连接牢固,但运行代码时持续报错。
运行代码
import board import digitalio import adafruit_max31856 spi = board.SPI() cs = digitalio.DigitalInOut(board.D5) cs.direction = digitalio.Direction.OTUPUT thermocouple = adafruit_max31856.MAX31856(spi,cs) print(thermocouple.temperature)
报错信息
Traceback (most recent call last): File "/home/pi/test4.py", line 6, in <module> spi = board.SPI() File "/usr/local/lib/python3.7/dist-packages/board.py", line 299, in SPI return busio.SPI(SCLK, MOSI, MISO) File "/usr/local/lib/python3.7/dist-packages/busio.py", line 289, in __init__ self._spi = _SPI(portId) File "/usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/generic_linux/spi.py", line 25, in __init__ self._spi = spi.SPI(device=(portid, 0)) File "/usr/local/lib/python3.7/dist-packages/Adafruit_PureIO/spi.py", line 167, in __init__ raise IOError("{} does not exist".format(device)) OSError: /dev/spidev0.0 does not exist
解决方案
1. 启用树莓派SPI总线
报错核心是/dev/spidev0.0设备不存在,说明SPI总线未启用:
- 打开树莓派配置工具:
sudo raspi-config - 依次选择「Interface Options」→「SPI」,确认选择「Yes」启用SPI
- 重启树莓派:
sudo reboot - 重启后执行
ls /dev/spidev*,若看到spidev0.0和spidev0.1,说明SPI已成功启用
2. 修复代码拼写错误
代码第6行存在拼写错误:
cs.direction = digitalio.Direction.OTUPUT
需将OTUPUT改为OUTPUT,修正后代码:
cs.direction = digitalio.Direction.OUTPUT
3. 额外检查项
- 确认引脚连接:树莓派SCLK(GPIO11)、MOSI(GPIO10)、MISO(GPIO9)需对应连接MAX31856的同名引脚,CS引脚接GPIO5(board.D5)
- 检查用户权限:执行
groups查看当前用户是否在spi组中,若不在,执行sudo usermod -aG spi pi添加权限,之后重新登录生效
内容的提问来源于stack exchange,提问作者Nicholas Warren
相关产品推荐
相关产品推荐

