如何在 BeagleBone Black 上启用和使用 SPI

How to enable and use SPI on the BeagleBoneBlack

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

$ ls /dev/spi*
/dev/spidev1.0  /dev/spidev1.1  /dev/spidev2.0  /dev/spidev2.1

我似乎也有 I2C:

$ ls /dev/i2c*
/dev/i2c-0  /dev/i2c-1  /dev/i2c-2

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

我尝试使用引脚多路复用信息 (from here) 进行检查,它告诉我对于 SPI1 芯片 select 0 我应该使用偏移量为 0x19C 的引脚,所以我查询了模式在该图钉上:

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

它作为模式 2 返回,这对我来说不是很有用(它不是 SPI)。我尝试按照有关为此设置覆盖的说明进行操作 (from here),但这需要对我的内核进行一些调整,而且即使那样似乎也没有帮助。

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

首先你应该检查设备树配置。 uEnv.txt 中有现成可用的配置。您也可以像这样手动更改

https://learn.adafruit.com/setting-up-io-python-library-on-beaglebone-black/spi

http://elinux.org/BeagleBone_Black_Enable_SPIDEV

经过大量挖掘后,我发现最新版本的 BBB(当然是我拥有的无线版本)使用 universal cape 设备树覆盖,现在看来 adding/removing 覆盖不是处理引脚配置的首选方式。

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

config-pin P9.17 spi
config-pin P9.18 spi
config-pin P9.21 spi
config-pin P9.22 spi

这不是跨靴子持久的,所以我将它添加到我的 .profile。我怀疑有一种更简洁的方法,可能 returns 到设备树覆盖,但这是我开始所需要的。

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