如何在 BeagleBoneBlack 上启用和使用 SPI



我有一个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

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

我试图使用引脚多路复用信息(从这里开始)来检查这一点,它告诉我对于 SPI1 芯片选择 0,我应该使用带有偏移0x19C的引脚,所以我查询了该引脚上的模式:

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

它以模式 2 的形式返回,这对我来说不是很有用(它不是 SPI)。我试图按照有关为此设置覆盖的说明(从这里开始),但这需要对我的内核进行一些调整,即使这样似乎也没有帮助。

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

经过大量挖掘,我发现最新版本的 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

这在靴子上并不持久,所以我把它添加到我的.profile.我怀疑有一种更整洁的方法,可能会返回到设备树覆盖,但这是我开始需要的。

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

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

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

http://elinux.org/BeagleBone_Black_Enable_SPIDEV

最新更新