加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:20:21 所属栏目:Linux 来源:网络整理
导读:在linux或android系统中,假如我们要配置飞思卡尔IMX6处理器的GPIO管脚,比如是GPIO_19这个管脚,那么要像这样: #define MX6Q_PAD_GPIO_19__GPIO_4_5? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???(_MX6Q_PAD_GPIO_19__GPIO_4_5| MUX_P
在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)
这个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,0x08E8,1,0)??
#define _MX6Q_PAD_GPIO_19__ENET_1588_EVENT0_OUT? ?????
? ?? ?? ?IOMUX_PAD(0x0624,0)??
??#define _MX6Q_PAD_GPIO_19__SPDIF_OUT1? ?? ?? ?????
? ?? ?? ?IOMUX_PAD(0x0624,2,0)??
??#define _MX6Q_PAD_GPIO_19__CCM_CLKO? ?? ?? ???
? ?? ?? ?IOMUX_PAD(0x0624,3,0)??
??#define _MX6Q_PAD_GPIO_19__ECSPI1_RDY? ?? ?? ?????
? ?? ?? ?IOMUX_PAD(0x0624,4,0)??
??#define _MX6Q_PAD_GPIO_19__GPIO_4_5? ?? ?? ???
? ?? ?? ?IOMUX_PAD(0x0624,0)??
??#define _MX6Q_PAD_GPIO_19__ENET_TX_ER? ?? ?? ?????
? ?? ?? ?IOMUX_PAD(0x0624,6,0)??
??#define _MX6Q_PAD_GPIO_19__SRC_INT_BOOT? ?? ?? ???
? ?? ?? ?IOMUX_PAD(0x0624,7,0)

?

以上的宏定义来自imx6的linux源码的arm/arch/palt-mxc/include/mach/iomux-mx6q.h 希望对大家有帮助~~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读