
我正在嘗試讓 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
這對我有用,所以我希望它對你有用。