我正在尝试让 SPI 在我的板上工作。这就是我想到的:
- SPI在armbian中默认是没有开启的,我们需要先开启它(开启对应的DT Overlay)
- 在linux中SPI只能通过/dev/spidev*.*文件访问
- 如果我在 dev 文件夹中没有看到任何 spi 设备,则说明我的主板上未启用 SPI
- 在最新版本的armbian spi中可以在armbain-config中启用(在System/Hardware/spi-spidev下)
- 在以前的版本中,需要反编译
/boot/script.bin
成fex文件,在那里启用SPI并编译回来
我干净地安装了 Armbian Bionic(我之前也尝试过 Stretch),更新了它并启用了 spi-spidev,重新启动了开发板,但仍然没有 spidev 文件。
这是我的armbianmonitor
日志。这就是我检查 SPI 是否启用的方法:
dima@orangepipcplus:~$ cat /boot/armbianEnv.txt
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=09e9478d-c7f2-4b16-a2d7-66f5313ff813
rootfstype=ext4
overlays=spi-add-cs1 spi-jedec-nor spi-spidev
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
dima@orangepipcplus:~$ ls /dev/*spi*
ls: cannot access '/dev/*spi*': No such file or directory
顺便说一句,我的目标是创建具有 nrf24l01 通信的智能家居项目,但我陷入了脚本错误could not open /dev/spidev0.0
(不完全粘贴)
所以我的问题是:如何启用 spi 以便/dev/spidev*.*
文件出现?
答案1
好吧,这真的很愚蠢。我只需要阅读有关设备树覆盖小心。
我没有设置所需的SPI参数param_spidev_spi_bus
。这是我的armbianEnv.txt
现在:
verbosity=1
logo=disabled
console=both
disp_mode=1920x1080p60
overlay_prefix=sun8i-h3
rootdev=UUID=09e9478d-c7f2-4b16-a2d7-66f5313ff813
rootfstype=ext4
overlays=spi-spidev
param_spidev_spi_bus=0
usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u
注意armbain 配置没有设置此参数,因此仅使用此工具无法使 SPI 工作。所以现在直接编辑会更容易armbianEnv.txt
。
答案2
我有一个 Orange Pi Lite阿姆比安我有一个 MCP3208 模数转换器,从一些传感器检索数据,我按照 Rattrapper 所说的做了,但是,就我而言,SPI 接口不起作用。我最终通过以下方法解决了这个问题:
- 在命令行中:
sudo armbian-config -> system -> hardware -> enable spi-spidev
- 检查SPI参数,
param_spidev_spi_bus = 0
就像rattraper在文件/boot/armbianEnv.txt中解释的那样。在overlays中必须写spi-spidev。 - 确保使用以下命令安装了 spidev 库:
sudo pip3 install spidev
- 最后,确保您在脚本中导入 spidev 库:
import spidev
这对我有用,所以我希望它也对你有用。