引脚配置
5 Dec 2024
Read time: 2 minute(s)
在 Baremetal 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 之后,Baremetal 支持使用 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
为检查引脚功能配置,Baremetal 提供 pinmux_check
工具。具体使用流程如下所示:
- 在 RT-Thread 配置中,选择启用 pinmux_check
工具,执行编译和烧录:
Local packages options ---> ArtInChip packages options ---> [*] aic-pinmux-check ---> [*] Enable pinmux check tools
-
系统启动之后,输入 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
-
查看 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;