2026年全国大学生嵌入式芯片与系统设计竞赛报名已正式启动。本次瑞芯微&飞凌嵌入式赛题共设置了三个参赛平台(ELF 2开发板、ELF-RV1126B开发板、ELF-RK3506开发板)供选手选择。为助力参赛队伍更好地完成项目设计,本文将以RK3506平台的复用GPIO为例,详细讲解从硬件查询到软件配置的完整实现流程。
在开始配置之前,首先需要了解ELF-RK3506开发板的接口布局特点。ELF-RK3506开发板配备两组40Pin排针,其中一组兼容树莓派40Pin接口,集成了I2C、SPI、UART等常用通信接口及多路GPIO;另一组则引出额外的IO排针,可复用为LCD、DSMC等功能接口。
引脚选择原则:进行引脚复用时,应优先选择40Pin排针上的引脚,这类引脚位于开发板标准排针接口,无需额外焊接,接线更加便捷。
引脚复用表路径:ELF-RK3506开发板资料包\05-硬件资料\05-4管脚分配表
在引脚复用表中,通过查看Alt0~Alt8列可了解各引脚的可选功能;在Alt0列中所有GPIOn_xy的引脚都可以被复用成GPIO功能。遵循“优先选用40Pin排针引脚”的布局原则,最终选定将连接器引脚号为86的引脚复用成GPIO0_A0功能。
硬件原理图路径:ELF-RK3506开发板资料包\05-硬件资料\05-0 PDF原理图
从硬件原理图可知,连接器86引脚号对应开发板功能UART1_TX。
核心板的功能引脚通过连接器传输到底板,下面需要确认目标引脚在底板上的具体物理接口位置。
在原理图中搜索UART1_TX网络标号,对应开发板P9排针的8引脚。
在完成硬件引脚确认后,接下来需要进行软件层面的配置工作,主要包括设备树中的IOMUX配置和设备节点配置。
如果引脚不进行其他功能的复用,引脚默认就是GPIO功能。
连接器引脚号为86的引脚开发板功能为UART1_TX,需要在设备树中关闭UART1节点,关闭UART1功能之后默认就是GPIO功能。
打开kernel/arch/arm/boot/dts/elf-3506-common.dtsi,关闭UART1节点引用。
&uart1 { status = "disabled"; pinctrl-names = "default"; pinctrl-0 = <&rm_io0_uart1_tx &rm_io1_uart1_rx>; };
配置完成后,需要重新编译内核以生成包含新配置的镜像文件。
执行编译命令,生成内核镜像:
elf@ubuntu:~/work/ELF-RK3506-linux-source$./build.sh kernel
编译完成后,将在kernel目录下生成boot.img内核镜像文件。
编译生成新的内核镜像后,下一步是将其烧录到开发板并进行验证。
将kernel目录下生成的boot.img内核镜像文件烧录到开发板。
开发板启动后,/dev 目录下UART1对应的设备节点ttyS1已经不存在。
注意:GPIO引脚的电平范围为0~3.3V,严禁对此引脚接入超过3.3V的电压。
GPIO的命名规则为GPIOn_xy其中x的表现形式有ABCD四种。在GPIO计算编号的过程中,A对应1,B对应2,C对应3,D对应4。
计算公式为:
以GPIO1_D0为例,计算其GPIO编号。
GPIO0_A0=0×32 (1−1)×8 0=0
将GPIO引脚配置为输出模式后,在完成相关设置操作后,可使用万用表测量该引脚的电压状态,以验证GPIO输出模式是否配置成功。
root@elf3506-buildroot:~# echo 0 > /sys/class/gpio/export //系统需要导出控制的GPIO引脚编号 root@elf3506-buildroot:~# echo out > /sys/class/gpio/gpio0/direction //设置为输出 root@elf3506-buildroot:~# echo 1 > /sys/class/gpio/gpio0/value //设置IO输出高电平 root@elf3506-buildroot:~# echo 0 > /sys/class/gpio/gpio0/value //设置IO输出低电平 root@elf3506-buildroot:~# echo 0 > /sys/class/gpio/unexport //系统取消导出
将GPIO引脚配置为输入模式后,通过向该引脚施加高电平或低电平信号,随后可以使用cat命令读取并查看该引脚的当前电平状态。
root@elf3506-buildroot:~# echo 0 > /sys/class/gpio/export //系统需要导出控制的GPIO引脚编号 root@elf3506-buildroot:~# echo in > /sys/class/gpio/gpio0/direction //设置为输出 root@elf3506-buildroot:~# cat /sys/class/gpio/gpio0/value //查看引脚状态 root@elf3506-buildroot:~# echo 0 > /sys/class/gpio/unexport //系统取消导出
关注
6077文章
45507浏览量
671185免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com