3.3.2 GPIO应用
开发板预置了 GPIO Python 库 Hobot.GPIO
,用户可以通过如下命令导入GPIO库。
root@ubuntu:~# sudo python3
Python 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import Hobot.GPIO as GPIO
>>> GPIO.VERSION
'0.0.2'
>>> GPIO.model
'RDK_S100'
提示
以下所提及的管脚仅作示例说明,不同平台的端口值存在差异,实际情况应以实际为准。亦可直接使用/app/40pin_samples/
目录下的代码,该代码已在板子上经过实际验证。
设置引脚编码方式
开发板的引脚编码有 4 种模式:
- BOARD:物理引脚序号,与开发板的丝印序号一一对应。
- BCM:根据博通SoC制定的GPIO命名规则。
- CVM: 使用字符串代替数字,对应于CVM / CVB连接器的信号名称。
- SOC: 对应的编号是芯片内部的 GPIO 管脚序号。
本文推荐用户使用BOARD
编码模式,设置编码的方式如下:
注意:编码每次只能设置一次,如果想要重新设置,需要GPIO.cleanup()
后重新设置
GPIO.setmode(GPIO.BOARD)
# or
GPIO.setmode(GPIO.BCM)
# or
GPIO.setmode(GPIO.CVM)
# or
GPIO.setmode(GPIO.SOC)
查询编码方式:
GPIO.getmode()
程序会输出 BOARD, BCM, CVM, SOC or None
其中的一种结果。
警告信息
以下几种情况下运行代码,会有警告日志输出,但并不会影响正常功能:
- 用户尝试使用的GPIO,已在其他应用程序中使用;
- 在设置模式和通道之前,尝试调用
GPIO.cleanup
清理管脚;
如要屏蔽警告信息,可通过如下命令实现:
GPIO.setwarnings(False)
管脚配置
信息
在RDK S100
平台上,支持40-pin
GPIO拓展, 40-pin
在使用过程中有如下的限制:
40-pin
上有一组引脚涉及到二选一(UART2, I2C5)。40-pin
上PCM相关引脚如果要使用需要波动拨码开关。
上述描述细节可以查看下图:
管脚定义请参考 管脚配置与定义
GPIO管脚在使用之前,需要进行相应的配置,具体如下:
设置为输入的方式如下:
GPIO.setup(channel, GPIO.IN)
设置为输出的方式如下:
GPIO.setup(channel, GPIO.OUT)
也可以为输出通道指定一个初始值,例如:
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)
另外,工具支持同时设置多个输出通道,例如:
# set gpio(18,12,13) to output
channels = [18, 12, 13]
GPIO.setup(channels, GPIO.OUT)
输入操作
要读取通道的值,请使用:
GPIO.input(channel)
命令返回值为 0 或者 1。 0 代表 GPIO.LOW, 1 代表 GPIO.HIGH。