在linux或android系统中,假如我们要配置飞思卡尔IMX6处理器的GPIO管脚,比如是GPIO_19这个管脚,那么要像这样:
#define MX6Q_PAD_GPIO_19__GPIO_4_5                              \
                                (_MX6Q_PAD_GPIO_19__GPIO_4_5| MUX_PAD_CTRL(NO_PAD_CTRL))
其中_MX6Q_PAD_GPIO_19__GPIO_4_5定义为:
  #define _MX6Q_PAD_GPIO_19__GPIO_4_5         \  
         IOMUX_PAD(0x0624, 0x0254, 5, 0x0000, 0, 0)
这个IOMUX_PAD宏是定义GPIO的关键宏,其原型为:
#define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs,   
       _sel_input, _pad_ctrl)
IOMUX_PAD宏有6个参数,每个参数的意思是:

参数

含义

_pad_ctrl_ofs  

控制寄存器的偏移地址(16进制)

_mux_ctrl_ofs

MUX控制寄存器的偏移地址(16进制), 用于选择引脚的功能

_mux_mode

MUX模式,bit0~3,范围0~7

_select_input_ofs   

SELECT_INPUT寄存器偏移地址(16进制)

_select_input  

Daisy Chain模式, bit0~1,范围0~3

_pad_ctrl

bits to be set in register _pad_ctrl_ofs for  configuration selection

具体的含义要结合IMX6数据手册【Chapter 36 IMOUX Controller(IOMUXC)】的内容。
以下就GPIO_19这个管脚的配置进行说明:
1、_pad_ctrl_ofs
找到数据手册:
 
从上图可知:_pad_ctrl_ofs = 0x624
2、_mux_ctrl_ofs、_mux_mode
找到数据手册的内容:
如上图,_mux_ctrl_ofs取值为0x254,_mux_mode范围为000~110
只有_mux_mode = 0时,_select_input_ofs和_select_input才有效,其余时候_select_input_ofs和_select_input 都为0。
3、_select_input_of、_select_input
当_mux_mode = 0时,_select_input_ofs的取值需参考数据手册:
 
此时_select_input_ofs=0x8e8,_select_input=0x1
4、_pad_ctrl
_pad_ctrl一般取值为0
综上所述,GPIO_19的配置宏定义如下:
  #define _MX6Q_PAD_GPIO_19__KPP_COL_5            \  
         IOMUX_PAD(0x0624, 0x0254, 0, 0x08E8, 1, 0)  
#define _MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT     \  
         IOMUX_PAD(0x0624, 0x0254, 1, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__SPDIF_OUT1           \  
         IOMUX_PAD(0x0624, 0x0254, 2, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__CCM_CLKO         \  
         IOMUX_PAD(0x0624, 0x0254, 3, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__ECSPI1_RDY           \  
         IOMUX_PAD(0x0624, 0x0254, 4, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__GPIO_4_5         \  
         IOMUX_PAD(0x0624, 0x0254, 5, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__ENET_TX_ER           \  
         IOMUX_PAD(0x0624, 0x0254, 6, 0x0000, 0, 0)  
  #define _MX6Q_PAD_GPIO_19__SRC_INT_BOOT         \  
         IOMUX_PAD(0x0624, 0x0254, 7, 0x0000, 0, 0)
以上的宏定义来自imx6的linux源码的arm/arch/palt-mxc/include/mach/iomux-mx6q.h
希望对大家有帮助~~

[i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明的更多相关文章

  1. 飞思卡尔IMX6处理器的GPIO配置方式

    在linux或android系统中,假如我们要配置飞思卡尔IMX6处理器的GPIO管脚,比如是GPIO_19这个管脚,那么要像这样: [cpp] view plaincopy #define  MX6 ...

  2. 飞思卡尔imx6开发板Linux下GPIO驱动

    控制GPIO_1_28的输出: #define MY_BOMB_GPIO       IMX_GPIO_NR(1, 28) 配置为输出方式: gpio_direction_output (MY_BOM ...

  3. 飞思卡尔 imx6 GC0308 摄像头驱动配置调试过程

    GC0308摄像头驱动程序使用的是linux v4l2协议,通过i2c信号进行控制.GC0308摄像头.对上电时序要求非常严格,一定要依据datasheet初始化摄像头. 本驱动使用的3.10内核,所 ...

  4. 盘点飞思卡尔i.MX多媒体处理器前世今生 (转)

    现如今,移动处理器领域,大家关注最多的是德州仪器.高通.展讯.MTK,甚至包括Intel,但是请别忘记飞思卡尔,他的i.MX处理器已经发展到第六代. 那么我们今天就来盘点下i.MX的前世今生吧. i. ...

  5. 基于飞思卡尔i.MX 6Quad Sabrelite开发板的触摸屏调试

    1      概述 本次任务是在飞思卡尔i.MX 6Quqd Sabrelite开发板上调试触屏驱动,触屏芯片是Goodix的gt828芯片,触屏接口是I2C. 操作系统:android 4.0.4 ...

  6. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(1)- 概览

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的基本特性. ARM Cortex-M微控制器芯片厂商向来竞争激烈,具体可参看我的另一篇文章<第一 ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(5)- 划时代新品RT1170

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的划时代新品i.MXRT1170. 自2017年开始,每年的6月25日恩智浦都会在北京举行微控制 ...

  8. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU特性那些事(1)- 概览

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的基本特性. ARM Cortex-M微控制器芯片厂商向来竞争激烈,具体可参看我的另一篇文章&l ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU开发那些事 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是飞思卡尔i.MX RT系列微控制器相关知识. 飞思卡尔半导体(现恩智浦半导体)于2017年开始推出的i.MX RT系列开启了高性能MC ...

随机推荐

  1. 【Mybatis】 入门

    一.概述 1.1 JDBC 1.2 JDBC编程中问题 1.3 MyBatis介绍 1.4 Mybatis架构 二.MyBatis入门程序 2.1 需求 2.2 引入MyBatis依赖 2.3 配置 ...

  2. 说说你对kubernetes的理解(简单)

    目录 整体概述 pod工作流程 k8s网络 flannel 网络策略,network proxy 几套证书理解 组件 master管理节点上组件 node节点 整体概述 k8s是一个编排工具,是谷歌的 ...

  3. Linux命令——finger

    简介 查询并显示系统用户的相关信息. 最小化安装Linux可能没有改名了,需要单独安装. RHEL/CentOS yum install finger* -y Ubuntu  apt-get inst ...

  4. git管理分支某公司的流程

  5. Redis4.0之持久化存储

    一,redis概述与实验环境说明 1.1 什么是redis redis是一种内存型的NoSQL数据库,优点是快,常用来做缓存用  redis存储数据的方法是以key-value的形式  value类型 ...

  6. 团队第六次作业-Beta冲刺及发布说明

    1.相关信息 Q A 作业所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/ 作业要求 https: ...

  7. Linux网络编程综合运用之MiniFtp实现(四)

    从今天开始,正式进入MiniFtp的代码编写阶段了,好兴奋,接下来很长一段时间会将整个实现过程从无到有一点点实现出来,达到综合应用的效果,话不多说正入正题: 这节主要是将基础代码框架搭建好,基于上节介 ...

  8. 转【Ubuntu】添加虚拟网卡的三种方式

    原文:https://blog.csdn.net/White_Idiot/article/details/82934338 ------------------------------ 1. ifco ...

  9. matlab(2) Logistic Regression: 画出样本数据点plotData

    画出data数据 data数据 34.62365962451697,78.0246928153624,030.28671076822607,43.89499752400101,035.84740876 ...

  10. EditPlus编译运行java文件

    ok ---------------两张图完成