i.MX8MP平台开发分享(IOMUX篇)- 硬件原理
创始人
2024-05-03 22:05:09

专栏目录:专栏目录传送门

平台内核
i.MX8MP5.15.71

文章目录

    • 1.前言
    • 2.IOMUX原理
    • 3. 寄存器实例:UART1_RX
      • 3.1 PAD: UART1_RXD
      • 3.2 PAD: SD1_CMD
      • 3.3 PAD: SAI2_RXC
      • 3.4 Input select
      • 3.5 功能实现
    • 4.SION

1.前言

我们都知道,芯片包含数量有限的引脚,其中大部分有多种信号选择。这些信号到引脚和引脚到信号的选择是由输入输出多路复用器称为IOMUX。IOMUX也被用来配置其他引脚的特性,比如说电压水平和驱动强度等等。

2.IOMUX原理

以下面的MUX选项为例,Instance为芯片内部设备IP,Port为这个设备IP的引脚(在内部),Pad是芯片上我们能看到的引脚;Mode是指复用模式,支持8种复用模式。

image-20221227105756296

IOMUX有四类寄存器,它们分别是mux控制寄存器、pad控制寄存器,input选择寄存器和GPR通用控制寄存器。

对于模块的引脚输出功能,参考红色的路径。对于一个MUX单元来说,有6个模块的引脚连接到这个MUX单元,它们可能是模块1,2,3…6这6个模块中的某一根引脚。这个MUX单元连接到唯一的PAD,这个PAD就是我们在芯片外部能看到的引脚。现在我们想要让模块1的引脚输出信号,会遇到哪些问题?下面我们按照信号流动方向往前推,从红色路径可以看到,首先是会遇到MUX单元,这里有6个信号混合,需要设置这个MUX寄存器让其选中输出我们想要的信号。现在这个PAD已经链接到了模块1的引脚,然后我们也许还需要配置这个输出引脚的上下拉和电压值,这个时候就需要配置PAD控制寄存器。最后我们想要的信号就从芯片内部走出来了。

iomux.drawio

对于模块的引脚输入功能,参考蓝色的路径。现在模块1想从上面相同的外部引脚获取输入信号,那么这个信号又该如何从芯片外部流入内部的模块1呢?首先会经过PAD,然后又会经过MUX单元(这里的MUX单元和上面是反向的),这里我们也还需要设置MUX寄存器,经过MUX单元后,会来到INPUT SELECT输入选择单元。对于这个输入选择单元来说,链接有多个模块引脚。我们则需要配置这个输入选择寄存器,选择数据输入的MUX单元。

上面的引脚输入功能,我们称之为菊花链。对于模块X的引脚输入,由INPUT SELECT输入选择寄存器控制输入源,这个输入源来自多个IOMUX单元,比如cell1,cell2和cell3都能将外部信号输入到模块X的输入引脚。

image-20221227125627485

使用不同的PAD,对应不同的MUX控制寄存器。

PAD命名规则:IOMUXC_SW_PAD_CTL_PAD_,

MUX命名规则:IOMUXC_SW_MUX_CTL_PAD_

Input select寄存器命名规则比较复杂,一般是IOMUX___SELECT_INPUT ,例如RX引脚的输入选择寄存器就是IOMUXC_UART1_UART_RXD_MUX_SELECT_INPUT。

3. 寄存器实例:UART1_RX

下面以串口1的TX和RX引脚为例,对于TX引脚,可以选择三个PAD,UART1_RXD,SD1_CMD和SAI2_RXC;对于RX,可以选择UART1_TXD,SD1_CLK和SAI2_RXFS。

image-20221227131732714

3.1 PAD: UART1_RXD

PAD电气属性控制寄存器:IOMUXC_SW_PAD_CTL_PAD_UART1_RXD,MUX控制寄存器:IOMUXC_SW_MUX_CTL_PAD_UART1_RXD。

3.2 PAD: SD1_CMD

PAD电气属性控制寄存器:IOMUXC_SW_PAD_CTL_PAD_SD1_CMD,MUX控制寄存器:IOMUXC_SW_MUX_CTL_PAD_SD1_CMD。

3.3 PAD: SAI2_RXC

PAD电气属性控制寄存器:IOMUXC_SW_PAD_CTL_PAD_SAI2_RXC,MUX控制寄存器:IOMUXC_SW_MUX_CTL_PAD_SAI2_RXC。

3.4 Input select

RX引脚的输入选择寄存器:IOMUXC_UART1_UART_RXD_MUX_SELECT_INPUT。

3.5 功能实现

以PAD SD1_CMD为例分析RX功能的实现过程,电气属性寄存器就不分析了,对于MUX控制寄存器来说,MUX_MODE应该选择100,

image-20221227134615566

对于输入选择寄存器,DAISY应该选择001。

image-20221227134712195

4.SION

IOMUX有一个有限的选项可以覆盖默认的焊盘功能,并强制输入路径激活(ipp_ibe==1’b1),而不考虑相应模块驱动的值。这可以通过设置SION(软件输入开)位来实现。IOMUXC_SW_MUX_CTL寄存器中的SION(软件输入开启)位(如果有的话)设置为 “1”。

使用场景:

  1. LoopBack - 模块x驱动PAD,同时接收PAD的值作为输入。
  2. GPIO捕获 - 模块x驱动垫子,值由GPIO捕获。

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...