历史上的今天
今天是:2025年04月01日(星期二)
2021年04月01日 | 飞思卡尔IMX6 gpio配置方法
2021-04-01 来源:eefocus
使用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配置好
史海拾趣
|
【labview】chinese中级Design Pattern - Producer Consumer 【labview】Design Pattern - Producer Consumer chinese 中级 [ 本帖最后由 安_然 于 2010-5-24 15:54 编辑 ]… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 7月22日消息,松下公司21日宣布,将于8月27日发售两款具有录制和播放3D影像功能的等离子电视机“3DVIERA”。松下公司称,这是全球首款集合3D电视和录像功能于一体的新机型。 与分别购置 ...… 查看全部问答> |
|
本人现在用C8051F020的SPI口线对90092进行控制,对90092进行初始化成功,但是不知道如何在屏幕上叠加字符. 比如用SPIWR()这个子程序对90092发送控制命令. 怎样才能在屏幕上有叠加字符显示?请朋友们帮帮忙,谢谢啦!急!… 查看全部问答> |
|
redhat9.0重新编译内核(2.4.20)后USB键盘无法使用的问题? 小弟现在做linux上的framebuffer驱动,在RH9上编译,内核版本也没有动,用的RH9自带的源代码。在重新编译内核时都正常,重启后, grub菜单出现2.4.20-8custom,选择后启动,到出现xwindows登录界面后,该输入用户名密码时,键盘无法使用。之前在gru ...… 查看全部问答> |
|
1. 简述VHDL语句a <= Transport b XOR c AFTER m; 完成的主要功能。2. 分析以下程序段的主要功能:process begin if (clk’event and clk=’1’)   ...… 查看全部问答> |
|
接的是STC的单片机,先谢谢大家了!!!用的代码也附上:另外我中断0和中断1的管脚没接,会不会影响读取数据。数据: E代表精度,K是校验和,中间的三个数据分别是XYZ轴的数据,请问下怎么计算加速度和角度?非常感谢E 0208 023 90048 KE02080 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 11:41 编辑 博文链接: deyisupport./blog/ ... /rs-232-rs-485.aspx 该博文从RS485的原理开始介绍,接着进一步介绍应用领域,应用前景,最后对一个满足工业应用的电路进行分析,论述了一些应用常见 ...… 查看全部问答> |




