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

  1. #define  MX6Q_PAD_GPIO_19__GPIO_4_5     \
  2. (_MX6Q_PAD_GPIO_19__GPIO_4_5 | MUX_PAD_CTRL(NO_PAD_CTRL))

其中_MX6Q_PAD_GPIO_19__GPIO_4_5定义为:

  1. #define _MX6Q_PAD_GPIO_19__GPIO_4_5         \
  2. IOMUX_PAD(0x0624, 0x0254, 5, 0x0000, 0, 0)

这个IOMUX_PAD宏是定义GPIO的关键宏,其原型为:

  1. #define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs,
  2. _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

找到数据手册page 2433:

从上图可知:_pad_ctrl_ofs = 0x624

2、_mux_ctrl_ofs、_mux_mode

找到数据手册page 2055的内容:

如上图,_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的取值需参考数据手册page 2654:

此时_select_input_ofs=0x8e8,_select_input=0x1

4、_pad_ctrl

_pad_ctrl一般取值为0

综上所述,GPIO_19的配置宏定义如下:

  1. #define _MX6Q_PAD_GPIO_19__KPP_COL_5            \
  2. IOMUX_PAD(0x0624, 0x0254, 0, 0x08E8, 1, 0)
  3. #define _MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT     \
  4. IOMUX_PAD(0x0624, 0x0254, 1, 0x0000, 0, 0)
  5. #define _MX6Q_PAD_GPIO_19__SPDIF_OUT1           \
  6. IOMUX_PAD(0x0624, 0x0254, 2, 0x0000, 0, 0)
  7. #define _MX6Q_PAD_GPIO_19__CCM_CLKO         \
  8. IOMUX_PAD(0x0624, 0x0254, 3, 0x0000, 0, 0)
  9. #define _MX6Q_PAD_GPIO_19__ECSPI1_RDY           \
  10. IOMUX_PAD(0x0624, 0x0254, 4, 0x0000, 0, 0)
  11. #define _MX6Q_PAD_GPIO_19__GPIO_4_5         \
  12. IOMUX_PAD(0x0624, 0x0254, 5, 0x0000, 0, 0)
  13. #define _MX6Q_PAD_GPIO_19__ENET_TX_ER           \
  14. IOMUX_PAD(0x0624, 0x0254, 6, 0x0000, 0, 0)
  15. #define _MX6Q_PAD_GPIO_19__SRC_INT_BOOT         \
  16. IOMUX_PAD(0x0624, 0x0254, 7, 0x0000, 0, 0)

以上的宏定义来自imx6的linux源码的arm/arch/palt-mxc/include/mach/iomux-mx6q.h

飞思卡尔IMX6处理器的GPIO配置方式的更多相关文章

  1. [i.MX]飞思卡尔IMX6处理器的GPIO-IOMUX_PAD说明

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

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

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

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

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

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXRT Bo ...

  5. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...

  6. 飞思卡尔开发板-迅为IMX6开兼容单核 双核 四核Plus开发板

    飞思卡尔开发硬件接口介绍: 核心板参数 尺寸:51mm*61mm CPU:Freescale Cortex-A9 四核 i.MX6Q,主频 1.2 GHz 内存:2GB DDR3 存储:16GB EM ...

  7. 痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RTyyyy系列MCU的Boot配置. 在上一篇文章 Boot简介 里痞子衡为大家介绍了Boot基本原理以及i.MXR ...

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

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

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

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

随机推荐

  1. [mysql]创建数据库并指定编码

    现在用orm比较多,很多mysql表啊都不用自己创建,但是数据库还是要自己创建,记录下sql, 备忘. CREATE DATABASE `mydb` CHARACTER SET utf8 COLLAT ...

  2. [django] 利用多线程增加异步任务

    看到django异步大家的反应应该是celery这种消息队列组件,现在用的最多的最推荐的也是这种方式.然而我这需求就是请求来了,执行一个小程序,但是又不能确定这个小程序啥时候执行完,响应又要及时,丢给 ...

  3. Struts 2 之类型转换器

    Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...

  4. Struts 2 之 OGNL

    OGNL概述 Object-Graph Navigation Language,对象图导航语言 1.能够访问对象的方法,如list.size() 2.能够访问静态属性与静态方法,需要在类名前加上@,如 ...

  5. Swift中声明协议中的class关键字的作用

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 最近在Cocos2D编程for Swift中看到以下一个代码片 ...

  6. iOS9中如何注册远程通知

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在以往的版本中,我们可以通过: [[UIApplication ...

  7. 如何查看App provision profile文件中的钥匙链访问组名称

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们因为某些原因希望安全的在多个App中共享一些信息,我们可以 ...

  8. API创建员工

    DECLARE lc_employee_number PER_ALL_PEOPLE_F.EMPLOYEE_NUMBER%TYPE := 'PRAJ_01'; ln_person_id PER_ALL_ ...

  9. 单幅图像的深度学习,对NYU数据集进行划分

    针对分割问题,官方已经划分好了:http://cs.nyu.edu/~silberman/projects/indoor_scene_seg_sup.html import numpy as np i ...

  10. 贪婪算法(Greedy algorithm)-算法学习之旅(一)

    我研一下学期选修了网络管理,因为是限选课所以我没有认真上课,今天因为快结课考试了,我才去,然后我发现了一个大秘密...... 原来老师从第三节课已经开始讲算法导论的知识了,我是不是错过了什么... 废 ...