使用其他GPIO作为数字I / O?


11

希望这个问题很简单,但我的快速谷歌搜索找不到答案。

我知道RPi有几个可以使用的GPIO以及专用的GPIO(SPI,I2C,UART等)。在我的项目中,我实际上用尽了常规GPIO,并且还希望将SPI,I2C和其他GPIO用作“常规” GPIO。我知道可以做到这一点,但是我想我不确定如何将它们设置为不在SPI / I2C / etc模式下运行,而只能作为常规GPIO运行。

我需要做任何事情来适当地设置它们吗?

Answers:


10

简短的答案

不,您(几乎)不知道。实际上是另一种方式-您必须将它们设置为不是GPIO而是为了实现其特殊目的。唯一的例外是UART引脚。另外,I²C引脚也有一些特殊之处。

UART引脚

内核将UART引脚用于控制台。如果您希望它们可供使用,则必须将系统配置为不使用它们:

  • 编辑/boot/cmdline.txt和删除console=ttyAMA0,115200以及kgdboc=ttyAMA0,115200参数
  • 编辑/etc/inittab并注释掉该行(放在#其前面的字符):

    T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
  • 重新启动您的RaspberryPi

现在,系统不应该使用这些引脚,您可以使用它们

I²C引脚

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是您的实际芯片名称(该模块可以处理几个不同的芯片像pca967xmax732x),并0x27为它的地址I²C(你可以布线时为其配置芯片的地址)。

这将在/sys/class/gpio/目录中创建条目,允许您使用RaspberryPi中的其他GPIO端口相同的方式使用它们,前提是您正在使用sys接口(例如wiringPiSetupSys(),connectionPicture)。不幸的是,Python的RPi.GPIO模块不支持此模式,因此它将无法与此库一起使用此引脚。引脚的编号较高,例如248-255或类似编号。

注意: PCF8574sinking current-它可以提供高达20mA的驱动器灌电流(在低状态下接受),但在高状态下只能提供0.1mA的电流。这意味着您通常将以相反的逻辑(即)使用它+3.3V -> LED -> RESISTOR -> PCF8574_PIN

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.