希望这个问题很简单,但我的快速谷歌搜索找不到答案。
我知道RPi有几个可以使用的GPIO以及专用的GPIO(SPI,I2C,UART等)。在我的项目中,我实际上用尽了常规GPIO,并且还希望将SPI,I2C和其他GPIO用作“常规” GPIO。我知道可以做到这一点,但是我想我不确定如何将它们设置为不在SPI / I2C / etc模式下运行,而只能作为常规GPIO运行。
我需要做任何事情来适当地设置它们吗?
希望这个问题很简单,但我的快速谷歌搜索找不到答案。
我知道RPi有几个可以使用的GPIO以及专用的GPIO(SPI,I2C,UART等)。在我的项目中,我实际上用尽了常规GPIO,并且还希望将SPI,I2C和其他GPIO用作“常规” GPIO。我知道可以做到这一点,但是我想我不确定如何将它们设置为不在SPI / I2C / etc模式下运行,而只能作为常规GPIO运行。
我需要做任何事情来适当地设置它们吗?
Answers:
不,您(几乎)不知道。实际上是另一种方式-您必须将它们设置为不是GPIO而是为了实现其特殊目的。唯一的例外是UART引脚。另外,I²C引脚也有一些特殊之处。
内核将UART引脚用于控制台。如果您希望它们可供使用,则必须将系统配置为不使用它们:
/boot/cmdline.txt
和删除console=ttyAMA0,115200
以及kgdboc=ttyAMA0,115200
参数编辑/etc/inittab
并注释掉该行(放在#
其前面的字符):
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
重新启动您的RaspberryPi
现在,系统不应该使用这些引脚,您可以使用它们
I²C引脚安装了板载1.8k上拉电阻。他们不能被禁用。这在某些情况下限制了这些引脚的使用(但在其他情况下可能很方便)。
如果GPIO引脚上的电量不足,您有时可以通过使用一些其他(但简单)的硬件轻松扩展其数量。例如,对于输出,您可以方便地购买shift registers
或使用或I²C I/O expanders
(也称为“I²C总线扩展器”)。您可以在此处找到使用示例。
PFC8574
(或该家族的类似产品)如此流行,以至于有一个随时可用的内核模块可以为您处理所有通信(在正式的RaspberryPi内核中未启用,您需要编译自己的内核才能使用它)。该模块称为gpio_pcf857x
,只要您已加载该模块modprobe
(以及I²C驱动程序)并且芯片已连接到I²C
总线,则可以按以下方式激活它:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
这里pcf8574
是您的实际芯片名称(该模块可以处理几个不同的芯片像pca967x
和max732x
),并0x27
为它的地址I²C
(你可以布线时为其配置芯片的地址)。
这将在/sys/class/gpio/
目录中创建条目,允许您使用RaspberryPi中的其他GPIO端口相同的方式使用它们,前提是您正在使用sys
接口(例如wiringPiSetupSys()
,connectionPicture)。不幸的是,Python的RPi.GPIO
模块不支持此模式,因此它将无法与此库一起使用此引脚。引脚的编号较高,例如248-255或类似编号。
注意: PCF8574
是sinking current
-它可以提供高达20mA的驱动器灌电流(在低状态下接受),但在高状态下只能提供0.1mA的电流。这意味着您通常将以相反的逻辑(即)使用它+3.3V -> LED -> RESISTOR -> PCF8574_PIN
。