快速瀏覽

如何使用 SS 和 IRQ 添加更多 SPI 從設備


 

這個 wiki 描述瞭如何為更多的 SPI 從設備使用更多的 SS(芯片選擇)和 IRQ 引腳。

如果您想添加從設備,您應該考慮將哪些引腳用作 SS(芯片選擇)或 IRQ 引腳。您可以選擇外部 40pin 上的任何 GPIO,除非您正在使用。您應該檢查可用的引腳,然後編輯設備樹 blob 文件。


首先,您可以使用“cat /sys/kernel/debug/gpio”命令檢查GPIO是否在使用中。

root@odroid:~# cat /sys/kernel/debug/gpio 
GPIOs 0-138:
 gpio-3   (amlsd               ) out lo
 gpio-5   (DWC_OTG             ) in  lo
 gpio-13  (blue:heartbeat      ) out hi
 gpio-49  (amlsd               ) in  hi
root@odroid:~#

您可以在名為“GPIO & Export No”的列中找到 gpio-<nr>此擴展連接器的數量。

然後,修改 num_chipselect 和 cs_gpios 屬性。
https://github.com/hardkernel/linux/blob/odroidc4-4.9.y/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts#L451-L454


一些 SPI 從設備需要中斷,如觸摸 LCD、CAN 等。您可以選擇外部 40pin 上的 GPIO 作為中斷引腳,除非您正在使用。

但重要的事實是,您只能在 ODROID-C4 上使用 8 個中斷。
請參閱ODROID-C4 數據表第 197 頁。

如果您同時使用邊沿觸發(下降和上升),它會消耗兩個 GPIO IRQ。因此,如果將所有 GPIO 設置為兩個邊緣,則只能有四個 GPIO IRQ。

如果您想使用 CLI 測試 GPIO IRQ,請參閱此鏈接。
終端上的 IRQ 測試

您可以通過“cat /proc/interrupts”檢查IRQ是否正在使用。

您可以看到 ads7846 使用 GPIO 作為挂機中斷的示例 dts。
https://github.com/hardkernel/linux/blob/odroidc4-4.9.y/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts#L476


如果沒有構建系統,您可以在終端上使用 dtc(device-tree-compiler)。

在您的 ODROID-C4 上安裝設備樹編譯器
sudo apt update
sudo apt install device-tree-compiler
備份您的 dtb 文件

如果您在修改 dtb 文件時遇到問題並且無法啟動,請使用此備份文件覆蓋它。

sudo cp /media/boot/meson64_odroidc4.dtb /media/boot/meson64_odroidc4.dtb.old
從 dtb 反彙編到 dts
sudo dtc -I dtb -O dts /media/boot/meson64_odroidc4.dtb > /media/boot/meson64_odroidc4_my.dts
編輯 dts

在 spi 節點中,修改為你想要的設置,添加從設備,添加 SS/IRQ 引腳等。

從 dts 編譯到 dtb
sudo dtc -I dts -O dtb /media/boot/meson64_odroidc4_my.dts > /media/boot/meson64_odroidc4.dtb
sync
sudo reboot

如果您在修改 dtb 文件時遇到問題並且無法啟動,請使用您備份的文件進行覆蓋。

快速瀏覽

ODROID-C4

四核ARM CORTEX-A55 |4GB RAM |4 USB3 PORTS