幸狐Luckfox Pico RV1103【GPIO教程】

1] GPIO 编号计算:


GPIO 有5个 bank,GPIO0 到 GPIO4,每个 bank 有32个 pin,命名如下:

GPIO0_A0 ~ A7 

GPIO0_B0 ~ B7 

GPIO0_C0 ~ C7 

GPIO0_D0 ~ D7 

GPIO1_A0 ~ A7 .... 

GPIO1_D0 ~ D7.... 

GPIO4_D0 ~ D7

GPIO 数量可以计算如下,以 GPIO1_C7_d为例:
GPIO1_C7_d = 1*32 + 2*8 + 7 = 55
(A=0, B=1, C=2, D=3)

2] 使用 GPIO sysfs 接口控制 I/O:

echo
55 > /sys/class/gpio/export cd /sys/class/gpio/gpio55 echo out > direction echo 1 > value # 输出高 echo 0 > value # 输出低 设置 GPIO4_C6输出:



3] 测试官方SDK提供的GPIO例程:

源代码:luckluckfox-gpio-test.c

3-1] 例程传输到Pico开发板

3-2] 运行该程序之前要先确保赋予可执行权限:chmod 777 ./luckfox_gpio_test

3-3] 运行luckluckfox_gpio_test:

4] 验证luckfox_gpio_test例程:

4-1] 使用插件LED接入下述几个引脚

4-2] 实验现象是LED依次点亮和熄灭




】FAQ:

GPIO 数量可以计算如下,以 GPIO1_C7_d为例:

GPIO1_C7_d = 1*32 + 2*8 + 7 = 55

(A=0, B=1, C=2, D=3)


解释一下这个计算过程。

在某些单片机或芯片中,引脚(PIN)或IO口(I/O Port)通常采用编号系统来进行标识和访问。
这个编号系统通常由多个部分组成,如GPIO组、GPIO组内字母、数字等。

在该例子中,GPIO1_C7_d是一个引脚的标识,逐个解析GPIO1_C7_d的含义:

    解释计算过程:         
         计算式 “1 * 32 + 2 * 8 + 7 = 55” 的目的是将 GPIO1_C7_d 转换为一个数字标识,其中:

         “1 * 32” 表示 GPIO组的编号(Group)乘以每个GPIO组内包含的引脚数量。这里的 GPIO1 组每组有32个引脚。

         “2 * 8” 表示 GPIO组内字母的索引(Group Letter)乘以每个字母标识的引脚数量。    
          在该设备中,该字母代表 C,表示其在组内的第三个字母,每个字母有8个引脚。

          “7” 表示第7个引脚的编号(Digit)。

    通过将这些部分相乘并相加,得到的结果是引脚 GPIO1_C7_d 的数字标识为55。

    这种数字标识的计算方式有助于唯一标识和访问每个引脚,方便在编程中进行引脚的配置和控制。

    GPIO组(Group): 这里是GPIO1。
    GPIO组用于区分不同的引脚组,一个芯片上可能有多个GPIO组。

    GPIO组内字母(Group Letter): 这里是C。
    GPIO组内字母用于细分每个GPIO组中的引脚,通常从A开始递增。(A=0, B=1, C=2, D=3)

    数字(Digit): 这里是7,表示GPIO组内C字母下的第7个引脚。

    后缀(Suffix): 这里是字母d。
    后缀通常用于区分不同的功能或属性,例如输入(input)或输出(output)。