芯片端子的多路复用

嵌入式系统中,芯片端口复用是关键,通过IOMUX(Input-Output Multiplexer)控制器来配置不同功能模块如I2C、UART、GPIO等在有限的引脚间切换。IOMUX允许一个引脚在多种工作模式下选择,如ALT0-ALT7,以适应不同信号需求。例如,IMX6ULL芯片的I2C2_SCL可以设置为UART5_TX_DATA的ALT2模式,实现引脚共享。IOMUX_CTL则负责输入选择、端口设置和复用控制。这种技术在资源有限的嵌入式硬件设计中至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

嵌入式软件的开发,经常要和芯片打交道,和个人电脑的通用平台的CPU使用X86或X64架构不同,嵌入式电子产品使用的主控芯片是各种各样的,从8051单片机,到ARM Cortex-M系列,再到ARM Cortex-A系列加Linux系统等。

PC的CPU架构比较统一,型号少,差异自然也小,而电子产品上用的芯片差异就很大,根据使用场景不同,需要不同的引脚或端子数目,同时集成了不同的片上资源,比如I2C、SPI、UART、USB等,并通过端子来将信号传递给外部或捕捉外部信号。

芯片上包含的端子或管脚(pin)是有限的,所以大部分的端子会有多个信号选项,比如可以作为I2C的clock信号,或者作为SPI的CS信号,或者作为AD转换的输入信号,或者作为普通GPIO等。就是让我们的IC可以将一个引脚(PAD)share给多个功能块(function block)。这种共享的实现方式,是将引脚的输入输出信号进行多路复用。

这些信号和端子的对应关系,是由IOMUX(input-output multiplexer)控制的,IO复用控制器。

IOMUX也用来配置端子的其他属性,比如电压档(3.3V / 1.8V)、驱动电流大小等。

这些芯片所接收或产生的信号,都属于外部信号,可以将它们按照模组(module instance)来分类,比如UART1, UART2,i2c1等。

下面以IMX6ULL芯片的某部分Muxing(等于multiplexing) Options为例:

在Chapter 4: External Signals and Pin Multiplexing。

Instance

Port

Pad

Mode

I2C2

SCL

CSI_HSYNC

ALT3

GPIO1_IO00

ALT0

UART5_TX_DATA

ALT2

SDA

CSI_VSYNC

ALT3

GPIO1_IO01

ALT0

UART5_RX_DATA

ALT2

I2C2, 是芯片上4个I2C bus中的第二个,这个放在instance一列。

有两个信号,clock和data,这个是port,是指片上外设使用的信号。即对于I2C总线,使用SCL和SDA两个信号,这里的是芯片里集成的第二个I2C控制器。

这两个信号,可以分配到芯片的不同的端子上,比如SCL就有3个选择,可以选择分配三个引脚的某一个。

Pad指的是引脚或端子名字,是唯一的,命名方式可能是和module有关,也可能是GPIO编号命名,这个根据芯片的Datasheet的定义。

Mode表示的是这个Pad所选择的工作模式,具体支持多少种要以芯片手册为准,比如ALT0 ~ ALT7(Alternative),就是一个Pad最多可以选择对应8种不同的信号。这个ALT数值可以在寄存器里设定,来配置端子对应于不同的信号。

我们注意到,一个PAD加上一个Mode唯一确定了一个引脚的工作状态,表明当前要用于某个信号。

以上面的例子,I2C2的SCL信号,可以选择UART5_TX_DATA这个引脚的ALT2模式,表示这个引脚用于I2C2控制器的SCL信号,这就是一个完整的IOMUX配置项。

我们再看一下以GPIO功能为分组的IOMUX配置:

Instance

Port

Pad

Mode

GPIO1

IO0

GPIO1_IO00

ALT5

IO1

GPIO1_IO01

ALT5

IO2

GPIO1_IO02

ALT5

IO3

GPIO1_IO03

ALT5

...

...

...

IO27

UART3_RTS_B

ALT5

IO28

UART4_TX_DATA

ALT5

IO29

UART4_RX_DATA

ALT5

IO30

UART5_TX_DATA

ALT5

IO31

UART5_RX_DATA

ALT5

这里就看到,PAD名字有的是以GPIO号命名,有的是以Module信号命名。

上面提到的UART5_TX_DATA这个PAD,对应的是GPIO1的第30号Pin,而作为GPIO的功能来使用,选择的就是ALT5模式。

关于多路复用功能,在硬件上包含IOMUX(实现多路复用的逻辑组合,a basic IOMUX cell)和IOMUX_CTL(多路复用控制器,控制信号选择、端子设置等)。

下面的图显示了一个简单的Soc框图,两种端子复用的情况:

第一个是通常的端子复用例子:

Module A, Module B,和Module GPIO 通过IOMUX共享同一个端子,复用配置通过IOMUX_CTL来控制。

第二个是没有使用复用的例子:

端子由Module C专用,信号在Module C和端子之间直接联通,没有IOMUX cell参与。

如图显示的这款芯片的多路复用功能,每个IOMUX cell最多支持8个模式(muxing modes (ALT0–ALT7)),表示每个pin最终可以由8个信号共享。

还可以看到IOMUX_CTL分为控制Input select的,PAD control的,还有MUX control的。

 

(完)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值