主要参照《iMX6ULL参考手册》中第 32 章:Chapter 32 IOMUX Controller (IOMUXC)。
一、概述
IOMUX控制器(IOMUXC)与IOMUX一起,使IC可以在一个pad上共享多个功能块。这种共享是通过复用pad的输入和输出信号来实现的。
每个模块都需要一个特定的pad设置(如上拉或保持),每个pad最多有8个复用选项(称为ALT模式)。pad设置参数由IOMUXC控制。
IOMUX仅由几个基本IOMUX单元组合而成的组合逻辑组成。每个基本IOMUX单元只处理一个pad复用信号。
IOMUX/IOMUXC 的连通性如图32-1所示。
1、特点
-
32 bit软件多路复用控制寄存器(
IOMUXC_SW_MUX_CTL_PAD_<PAD NAME>
、IOMUXC_SW_MUX_CTL_GRP_<GROUP NAME>
)配置每个 pad 或预定义的每组 pad 中 8 个复用模式字段中的 1 个。并使能 pad 输入路径(SION bit
)。 -
32 bit软件pad控制寄存器(
IOMUXC_SW_PAD_CTL_PAD_<PAD_NAME> or IOMUXC_SW_PAD_CTL_GRP_<GROUP NAME>
)配置特定的 pad 或 预定义的组 pads。 -
32 bit 通用寄存器 - 14个 32 bit 寄存器允许 Soc 根据需求用作任何用途。
-
32 bit 选择控制寄存器控制模块输入路径,当多个 pad 驱动该模块输入时。
每个 SW MUX/PAD CTL IOMUXC 寄存器仅支持一个 pad 或 一组 pad。
硬件只实现软件所需的最小寄存器数量。例如,如果Pad x上只使用ALT0和ALT1模式,那么Pad x的软件多路复用器控制寄存器中只会生成一个位寄存器作为多路复用器模式控制字段。
软件复用控制寄存器允许 pad 强制成为不受功能方向影响的输入引脚。这能被用作 loopback 和 GPIO data capture。
二、时钟
这里的表描述了IOMUXC的时钟源。
请参阅时钟控制器模块(CCM)的时钟设置,配置和门控信息。
三、功能描述
本节提供了块的完整功能描述。
IOMUXC 由 2 个子块。
- IOMUXC_REGISTERS 包括所有 IOMUXC 寄存器。
- IOMUXC_LOGIC 包括所有 IOMUXC 组合逻辑(IP接口控制、地址解码器、可观察复用控制)。
IOMUX由一些基本的 iomux_cell 单元组成。如果一个pad只需要配置一种功能模式,就不需要IOMUX,信号可以直接从模块连接到IO。当一个特定的 pad 需要配置两个或更多的功能模式时或当需要一种功能模式和一种测试模式时,就需要IOMUX单元。
基本的 iomux_cell 设计,它允许两级HW信号控制如图32-2所示。
1、ALT6和ALT7扩展复用模式
ALT7和ALT6扩展复用模式允许系统中的任何信号(熔丝、pad 输入,JTAG或软件寄存器)覆盖任何软件配置并强行设置 ALT6/ALT7 复用模式。
它还允许一个IOMUX软件寄存器来控制一组pad。
2、通过SION bit选择Loopback
存在一个有限的选项来覆盖默认的pad功能,并强制输入路径处于激活状态(ipp ibe==1’b1),而不管相应模块驱动的值是多少。这可以通过将 IOMUXC_SW_MUX_CTL 寄存器中的SION (Software Input On)位设置为1来实现。
用途包括:
- LoopBack - 模块x驱动pad并接收pad值作为输入。
- GPIO Capture - 模块x驱动pad,值由GPIO捕获。
3、多个pad同时输入到同一模块
在某些情况下,多个pad可能驱动单个模块输入引脚。这种情况需要再增加一级IOMUX控制。一个专用的软件控制寄存器控制多路复用器,以选择所需的输入路径。
涉及的模块端口需要两个软件配置命令,一个用于为这个pad选择模式(可编程通过 IOMUXC_SW_MUX_CTL_< PAD> 寄存器),另一个用于将其定义为输入路径(通过链寄存器)。
四、IOMUXC GPR内存映射寄存器定义
见《参考手册》。
五、IOMUXC SNVS内存映射寄存器定义
见《参考手册》。
六、IOMUXC 内存映射寄存器定义
见《参考手册》。