本帖最后由 stm1024 于 2025-1-21 23:33 编辑
今日测评演示一下RK3588的GPIO系统。
Linux提供了GPIO子系统,在/sys/class/gpio/中,可以看到很多这样的文件夹:
其中,除了export和unexport外,都是使用了gpioxx来命名的文件夹,这些文件夹就对应了一个针脚。
我们可以选择开发板上的一个针脚,测试GPIO的输出,针脚定义如下:
这里选择7号针脚,注意,这一长串中,官方手册是这样描述的:
网络标号解释说明:如UART6--UART9--TX
左侧 UART6是3576核心板引脚功能
中间 UART9是3588核心板引脚功能
右侧 TX是底板用作的功能(可为空)
因此,这里应该使用的是**色底色的针脚,亦即GPIO3_B3。
那么我们需要计算其GPIO口对应的编号,计算方式很简单,例如GPIO口的定义为GPIOn_Xy,其中n可能是0~7之类的数字,而X表示A,B,C等,y又是数字,
在 RK3588 上确定GPIO编号的公式为: GPIOn_Xy=n*32+(X-1)*8+y,其中A=1,B=2,C=3,诸如此类。
因此,回到这个例子中,GPIO3_B3的编号就应该是3*32+(2-1)*8+3=107
使用export导出GPIO,相当于初始化。这里我们要使用GPIO序号来导出对应的GPIO口。
可以看到,该文件夹下面已经多出了一个gpio107的文件夹,cd进入该文件夹,查看有如下文件: 这些文件用于控制和查看 GPIO 引脚的状态和配置,其中:
- active_low : 是否电平逻辑取反。1:取反,0:不取反。
- device : 该文件是一个符号链接,指向与 GPIO 引脚关联的设备。
- direction: 设置GPIO方向,out:输出,in:输入。
- edge:配置引脚的中断边沿检测。可以是 none(无边沿检测)、rising(上升沿)、falling(下降沿)或 both(双边沿)。
- power :管理 GPIO 引脚的电源设置。
- subsystem :该文件是一个符号链接,指向该 GPIO 引脚所属的子系统。
- uevent :用于与用户空间工具(如 udev)进行交互,通常不直接操作。
- value :GPIO电平值。
- 常用的主要是direction和value
由于我们需要驱动一个LED,将LED的正极接到40PIN的1号针脚3V3,然后将负极接到7号针脚,相当于是使用灌电流的方式驱动,在低电平的时候LED点亮,高电平的时候LED熄灭。先查看和修改GPIO的方向:
可以看到GPIO的方向被配置为了输出。
这个时候可以发现LED已经被点亮了:
查看value的值,发现是0,这与硬件接线保持相同:
如果需要熄灭LED,则只需要向其中写入1即可: 这个时候LED也同步熄灭了。 最后,如果不使用该GPIO口,则应该使用unexport注销GPIO,方法是:echo GPIO序号 > unexport
OK,今天的评测就到这里,下一步测试使用程序方式控制LED运行。
|