GPIO 功能应用笔记 - 飞凌 OKMX6DL/Q
飞凌嵌入式应用笔记,基于 FETMX6DL/Q 核心版,Linux 3.0.35
原始文件: /工作相关/飞凌嵌入式imx6全部资料/嵌入式相关(小发光硬件部分)/20200219 孙润民/飞凌电子/OKMX6DL、Q系列产品应用笔记/GPIO 功能应用笔记.pdf 文件大小: 923 KB 页数: 13页 提取方式: PDF文本提取(pdf-inspector),text_based类型 处理日期: 2026-09-20
核心内容
本文档详细介绍了在飞凌 OKMX6DL/Q 开发板上使用 GPIO 的方法,包括用户空间操作和内核空间配置。
一、GPIO 用户空间操作
Linux 3.0.35 提供标准的 GPIO 接口:/sys/class/gpio/
目录结构:
export:导出 GPIOunexport:撤销导出gpiochip0~gpiochip192:GPIO 组(GPIO1~GPIO7)
GPIO 编号计算公式:
GPIO编号 = (BANK-1) × 32 + N
其中 BANK 为 GPIO 组号,N 为该组内引脚序号。
示例:GPIO7-IO03 → (7-1)×32+3 = 195
常用操作命令:
# 导出 GPIO
echo 195 > /sys/class/gpio/export
# 取消导出
echo 195 > /sys/class/gpio/unexport
# 配置方向(in/out/high/low)
echo out > /sys/class/gpio/gpio195/direction
# 读取值
cat /sys/class/gpio/gpio195/value
# 设置值
echo 1 > /sys/class/gpio/gpio195/value二、修改 Pinmux 配置
关键文件:
- 引脚复用定义:
arch/arm/plat-mxc/include/mach/iomux-mx6q.h - 板级配置:
arch/arm/mach-mx6/board-mx6q_sabresd.h
修改步骤:
- 在 board-mx6q_sabresd.h 中添加 GPIO 配置
- 注释掉原来的复用功能
- 重新编译内核并烧写
示例:释放 SD3 卡引脚作为 GPIO
/* GPIO 配置 */
MX6Q_PAD_SD3_CLK__GPIO_7_3,
MX6Q_PAD_SD3_CMD__GPIO_7_2,
MX6Q_PAD_SD3_DAT2__GPIO_7_6,
// ... 其他引脚
/* 注释掉原来的 USDHC3 配置 */
/* MX6Q_PAD_SD3_CLK__USDHC3_CLK_50MHZ, ... */三、Datasheet 查表方法
GPIO 寄存器(8个32位寄存器):
| 寄存器 | 描述 |
|---|---|
| GPIOx_DR | 数据寄存器(输出) |
| GPIOx_GDIR | 方向控制 |
| GPIOx_PSR | 状态寄存器(输入) |
| GPIOx_ICR1/ICR2 | 中断触发方式 |
| GPIOx_IMR | 中断屏蔽 |
| GPIOx_ISR | 中断状态 |
| GPIOx_EDGR_SEL | 边沿触发选择 |
查找配置步骤:
- 在 Datasheet 搜索引脚名称(如 EIM_A22)
- 找到 ALT Mode(如 ALT5)
- 查看 Pad Settings(PKE、PU/PD 等)
- 查找 IOMUXC_SW_MUX_CTL_PAD_XXXX 寄存器
四、常见问题处理
- Device or resource busy:引脚被其他功能占用,检查内核 pinmux 配置
- 功能异常:可能被串口等占用,检查硬件电路上拉下拉
关键要点
- GPIO 编号 = (BANK-1)×32 + N
- 导出前必须确认 pinmux 未配置为其他功能
- 修改内核配置后需重新编译
关联知识
- 类似应用笔记:OKMX6X-Python移植笔记、LVDS移植应用笔记-飞凌OKMX6DL
- FPGA培训资料:FPGA设计概述-基础概念与流程、FPGA培训-Verilog基础与电路设计
- IMX6 技术手册:i.MX-Yocto-Project-用户指南-L4.1.15