如何在 BeagleBoneBlack 上启用和使用 SPI

P M*_*ham 5 linux spi beagleboneblack

我有一个 BeagleBoneBlack Wireless,我想使用 SPI(和 I2C)。我发现很难获得有关如何在 BBB 上设置和使用 SPI 的明确说明。首先,我不清楚 BBB 的默认配置是什么。我似乎有两个 SPI 设备:

$ ls /dev/spi*
/dev/spidev1.0  /dev/spidev1.1  /dev/spidev2.0  /dev/spidev2.1
Run Code Online (Sandbox Code Playgroud)

我似乎也有 I2C:

$ ls /dev/i2c*
/dev/i2c-0  /dev/i2c-1  /dev/i2c-2
Run Code Online (Sandbox Code Playgroud)

我不清楚这些总线是否实际上多路复用到引脚,或者它们是否真的不可用。如果它们连接到引脚,究竟哪条总线是哪条?

我尝试使用引脚多路复用信息(来自此处)进行检查,该信息告诉我对于 SPI1 芯片选择 0,我应该使用偏移量为 0x19C 的引脚,因此我查询了该引脚上的模式:

$ sudo cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins | grep 44e1099c
pin 103 (44e1099c.0) 00000002 pinctrl-single
Run Code Online (Sandbox Code Playgroud)

它作为模式 2 返回,这对我来说不是很有用(它不是 SPI)。我试图按照有关为此设置覆盖的说明(从这里),但这需要对我的内核进行一些调整,即使那时似乎也无济于事。

请有人指点我一些说明,使这更清楚一点,并且理想情况下与我使用的内核版本(4.4.30)相匹配?

P M*_*ham 4

经过大量挖掘后,我发现最新版本的 BBB(当然是我拥有的无线版本)使用通用Cape设备树覆盖,并且似乎添加/删除覆盖现在不是处理引脚配置的首选方法。

现在可以使用该实用程序完成引脚配置config-pin,这对我来说确实有效。例如,要使 SPI0 可访问(设备驱动程序已存在):

config-pin P9.17 spi
config-pin P9.18 spi
config-pin P9.21 spi
config-pin P9.22 spi
Run Code Online (Sandbox Code Playgroud)

这在不同的引导中并不持久,所以我将其添加到我的.profile. 我怀疑有一种更简洁的方法,它可能会返回设备树覆盖,但这正是我开始需要的。

有关这种新的引脚配置方法的文档很难找到。