查看: 4849|回复: 1

[分享] 【经验分享】飞思卡尔IMX6处理器的GPIO配置方式

[复制链接]

该用户从未签到

45

主题

2369

帖子

0

金牌会员

Rank: 6Rank: 6

积分
3275
最后登录
1970-1-1
发表于 2014-2-26 16:48:13 | 显示全部楼层 |阅读模式
在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

找到数据手册:

1.jpg

从上图可知:_pad_ctrl_ofs = 0x624

2_mux_ctrl_ofs_mux_mode

找到数据手册的内容:
2.jpg
如上图,_mux_ctrl_ofs取值为0x254,_mux_mode范围为000110

只有_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的取值需参考数据手册:

3.jpg

此时_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
希望对大家有帮助~~

 
 
 
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-26 16:58:30 | 显示全部楼层

    RE:(经验分享)飞思卡尔IMX6处理器的GPIO配置方式

    支持楼主
    大家有问题可以多讨论
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 13:51 , Processed in 0.085489 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表