Edit online

引脚配置

4 Nov 2024
Read time: 2 minute(s)

Luban-Lite SDK 中,修改同一个 pinmux.c 文件,可以配置相同板卡的 GPIO 引脚功能。

例如,对于以下 D133CBS RISC-V Kunlun Pi 开发板,可以使用target/d13x/kunlunpi88-nor/pinmux.c 文件来配置 GPIO 引脚功能。

注: 每一个需要使用到的引脚都应显式地设置为指定功能,包括通用 GPIO、I2C、UART、SPI 等功能。

配置 pinmux.c 文件

在 pinmux.c 中,根据需要修改结构体数组来配置每个引脚的功能。 pinmux.c 文件路径: target/<CPU>/<board>/pinmux.c

注: 项目中的 BootLoader 和 RT-Thread 共享 pinmux 配置, 因此在修改 pinmux.c 之后,必须先编译 BootLoader, 再编译 RT-Thread,否则 pinmux 配置可能无法生效。

自 V1.0.4 之后,Luban-Lite 支持使用 mb 命令,一键编译 BootLoader 和 RT-Thread。

在 pinmux.c 中,通过结构体数组,对所有 pin 脚的功能进行管理,并在系统启动时统一做配置。
struct aic_pinmux aic_pinmux_config[] = {
    ...
};
每个 pin 脚的配置,使用结构体描述。例如,PA.0 和 PA.1 引脚的配置如下:
struct aic_pinmux
{
    unsigned char       func;    // 功能编号
    unsigned char       bias;    // 内部上下拉设置,一般无需修改
    unsigned char       drive;   // 驱动能力,若需要修改,请联系专业人士确认
    char *              name;    // 引脚名称字符串,例如 "PA.0"
};
struct aic_pinmux aic_pinmux_config[] = {
#ifdef AIC_USING_UART0
    /* uart0 */
    {5, PIN_PULL_DIS, 3, "PA.0"},   // PA.0 配置功能 5,用作串口 0
    {5, PIN_PULL_DIS, 3, "PA.1"},   // PA.1 配置功能 5,用作串口 0
#endif
...
};

PA.0 和 PA.1 引脚功能均设置为 5,用作串口 0。注意,同一个引脚只能配置一个功能。

注: 若要配置某 pin 脚用于通用 GPIO 功能,则需将功能配置为 1。关于引脚功能的详细描述,可参考用户手册中的引脚复用功能表。

使用检查工具 pinmux_check

为检查引脚功能配置,Luban-Lite 提供 pinmux_check 工具。具体使用流程如下所示:

  1. 在 RT-Thread 配置中,选择启用 pinmux_check 工具,执行编译和烧录:
    Local packages options  --->
        ArtInChip packages options  --->
            [*] aic-pinmux-check  --->
                [*]   Enable pinmux check tools
  2. 系统启动之后,输入 pinmux_check-h 命令,查看帮助菜单。
    aic /> pinmux_check -h
    Compile time: Apr 23 2024 15:39:22
    Usage: pinmux_check [options]
            -s, --start            print PIN start from PXn . Default as start from PA0
            -c, --count            print PIN count.
            -h, --help
    
    Example:
        pinmux_check -s PA0 -c 2
  3. 查看 PA0、PA1 的引脚配置。
    aic /> pinmux_check -s PA0 -c 2
    PA0: 0x00000035, fun[5], drv[3], pull[0], IE[0], OE[0], IE_FORCE[0]    # fun[5] 表示 PA0 配置为功能 5,drv[3]表示驱动能力为 3;
    PA1: 0x00000035, fun[5], drv[3], pull[0], IE[0], OE[0], IE_FORCE[0]    # fun[5] 表示 PA1 配置为功能 5,drv[3]表示驱动能力为 3