飞思卡尔IMX6 gpio配置方法

使用imx6 的gpio时候需要关注board-mx6q_sabresd.h中的内容

本文以MX6Q_PAD_CSI0_DAT10__UART1_RXD进行详细说明:

(1)用source insight查看MX6Q_PAD_CSI0_DAT10__UART1_RXD

#define  MX6Q_PAD_CSI0_DAT11__UART1_RXD		\
		(_MX6Q_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL(MX6Q_UART_PAD_CTRL))
主要由 _MX6Q_PAD_CSI0_DAT11__UART1_RXD | MUX_PAD_CTRL组成

(2)查看:_MX6Q_PAD_CSI0_DAT11__UART1_RXD 

#define _MX6Q_PAD_CSI0_DAT11__UART1_RXD			\
		IOMUX_PAD(0x0654, 0x0284, 3, 0x0920, 1, 0)
(3)查看 IOMUX_PAD
#define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs, \
		_sel_input, _pad_ctrl)					\
	(((iomux_v3_cfg_t)(_mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT) |	\
		((iomux_v3_cfg_t)(_mux_mode) << MUX_MODE_SHIFT) |	\
		((iomux_v3_cfg_t)(_pad_ctrl_ofs) << MUX_PAD_CTRL_OFS_SHIFT) | \
		((iomux_v3_cfg_t)(_pad_ctrl) << MUX_PAD_CTRL_SHIFT) |	\
		((iomux_v3_cfg_t)(_sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT) | \
		((iomux_v3_cfg_t)(_sel_input) << MUX_SEL_INPUT_SHIFT))
(4)产看 MUX_PAD_CTRL

#define MUX_PAD_CTRL(x)		((iomux_v3_cfg_t)(x) << MUX_PAD_CTRL_SHIFT)
(5)可以发现 MUX_PAD_CTRL的意思和 IOMUX_PAD 的_pad_ctrl参数是一个意思。

(6)IOMUX_PAD的参数意思分别如下

_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

控制寄存器的取值(具体内容通过MUX_PAD_CTRL)

(7)查看datasheet:对应可以找到 (0x0654, 0x0284, 3, 0x0920, 1, 0)参数的具体意思

(8)在iomux-v3.h可以看个控制寄存器的具体取值:

#define NO_PAD_CTRL			(1 << 17)
#define NO_PAD_I			0
#define NO_MUX_I			0
#ifdef CONFIG_SOC_IMX6Q
#define PAD_CTL_LVE			(1 << 22)
#define PAD_CTL_LVE_MASK		(1 << 22)
#define PAD_CTL_DDR_SEL_LPDDR2		(2 << 18)
#define PAD_CTL_DDR_SEL_DDR3		(3 << 18)
#define PAD_CTL_DDR_SEL_MASK		(3 << 18)
#define PAD_CTL_HYS			(1 << 16)

#define PAD_CTL_PUS_100K_DOWN		(0 << 14)
#define PAD_CTL_PUS_47K_UP		(1 << 14)
#define PAD_CTL_PUS_100K_UP		(2 << 14)
#define PAD_CTL_PUS_22K_UP		(3 << 14)

#define PAD_CTL_PUE			(1 << 13)
#define PAD_CTL_PKE			(1 << 12)
#define PAD_CTL_ODE			(1 << 11)

#define PAD_CTL_SPEED_LOW		(1 << 6)
#define PAD_CTL_SPEED_MED		(2 << 6)
#define PAD_CTL_SPEED_HIGH		(3 << 6)

#define PAD_CTL_DSE_DISABLE		(0 << 3)
#define PAD_CTL_DSE_240ohm		(1 << 3)
#define PAD_CTL_DSE_120ohm		(2 << 3)
#define PAD_CTL_DSE_80ohm		(3 << 3)
#define PAD_CTL_DSE_60ohm		(4 << 3)
#define PAD_CTL_DSE_48ohm		(5 << 3)
#define PAD_CTL_DSE_40ohm		(6 << 3)
#define PAD_CTL_DSE_34ohm		(7 << 3)

#define PAD_CTL_SRE_FAST		(1 << 0)
#define PAD_CTL_SRE_SLOW		(0 << 0)
(9)最终通过32位的寄存器地址配置32位的寄存器把gpio配置好






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值