查看: 1610|回复: 0

[分享] LPC800特色模块揭秘——开关矩阵

[复制链接]

该用户从未签到

72

主题

80

帖子

0

版主

Rank: 7Rank: 7Rank: 7

积分
724
最后登录
2020-1-3
发表于 2018-11-26 09:34:15 | 显示全部楼层 |阅读模式
本帖最后由 eefishing 于 2018-11-23 15:08 编辑

开关矩阵(Switch Matrix)是LPC800系列产品中,最有特色的功能模块之一。

开关矩阵简称SWM,顾名思义就是一个由多个,甚至多组开关组成的阵列,这个阵列的目的就是把片内外设的输入输出信号线,按照用户的意向,通过编程连接到特定的外部引脚上。

当功能信号被开关矩阵连接到外部引脚后,需要用IOCON模块配置引脚的特性,请看上次的介绍:LPC800特色模块揭秘——输入输出引脚的配置

开关矩阵可以为LPC800的使用者带来很多方便和实用的特性:

- 很多用户都碰到过,设计PCB时芯片引脚的顺序与板上的器件不匹配,走线绕来绕去;有了这个开关矩阵,用户可以按照最佳布线要求,安排MCU的功能引出脚。
- 用户经常会因为产品升级换代,需要重新设计PCB,但只是做少量的修改或扩充,或者仅仅是更换一个功能更强的MCU,而希望尽可能地保持原有的布局和布线走向不变;开关矩阵同样能满足用户的这个需要。
- 通常一款MCU都会内置多个及多种外设,例如LPC824的串行通信外设就包含3个USART、4个I2C和2个SPI,即使不计算其它外设(例如SCT、GPIO等)的引出脚,所有这些串行通信外设的引出脚数目,就已经超过芯片总的引脚数目。有了开关矩阵,用户可以按照自己的意愿引出需要的功能,在引脚总数允许的情况下,可以进行随意的功能组合。

开关矩阵也有其局限性,模拟功能和电源/地线引脚不能通过开关矩阵重新分配引出脚;模拟功能具有固定的不能被重新分配的引出脚,但用户可以按照需要关闭引出脚对应的模拟功能,从而腾出该引出脚用于其它数字功能。


关于LPC800系列的综述,请看这些文章:
LPC800系列选型指南
从系统框图解读LPC800的配置与特性

一、SWM模块特性

LPC800全系列的每个型号都标配SWM开关矩阵。

开关矩阵的功能有两个:
把数字外设的输入输出功能自由地分配到指定的外部引脚。能够自由分配外部引脚的功能称为可移动功能。
使能或关闭模拟功能或需要特定电气特性的功能,例如ADC和/或模拟比较器的输入功能,晶体振荡器的输入输出引脚,具有超快速模式的I2C0功能等。对于这些不能自由分配外部引脚的功能,称为固定功能。

下面两张表分别列出了所有可移动功能和固定功能,以及它们在各个系列中的配置情况。

表1. 可移动功能一览
23.jpg
* 括号中为LPC81x的信号名称

上表中列出了除LPC80x和LPC8N04之外的,所有目前LPC800产品系列的可移动功能信号,可以看出这些信号全部是数字信号。右边四列分别是各个系列的配置情况,格中有数字代表所在行的信号,在对应的系列中是可移动功能,编号的意义将在以后有时间时在应用例程中介绍;格中“-”表示对应的系列没有这个信号。

I2C0_SDA和I2C0_SCL这两个信号只在LPC81x中是可移动功能,在其它系列中都是不可移动的。LPC82x和LPC84x的其它I2C模块,以及I2C1~3的信号是可移动功能信号。

这里需要注意的是,在LPC81x系列中,I2C0_SDA和I2C0_SCL这两个信号是可移动的,但只有把它们安排在PIO0_10和PIO0_11引脚时,才能达到超高速(1Mbit/s),移动到其它的引脚时,只能实现最高400 kbit/s的速率。

固定功能信号分两类:数字信号和模拟信号;这样的区分将涉及到信号间互联的策略,本文后面的段落将讨论这个策略。

表2. 固定功能一览
24.jpg

* 对应的信号与其它信号复用相同引脚
表2中右边四列分别是各个系列的配置情况,格中数字代表所在行的信号,在对应的系列中是否有该功能,编号的意义将在以后有时间时在应用例程中介绍;格中“-”表示对应的系列没有这个信号。

每一个可移动功能,可以被分配使用任意一个引脚。而固定功能只能使用芯片指定的引脚。GPIO的输出端口也只能使用芯片指定的引脚。

LPC80x这个新的子系列的SWM寄存器排列,与其它系列略有不同,但不会影响用户的使用。为节省篇幅,此处暂不列出。


二、SWM模块的内部构成

下面这个框图来自LPC800的用户手册:

图1. 开关矩阵(SWM)框图
25.png

这个图全面地描绘了开关矩阵与各个内部外设、连接外部引脚的焊盘、GPIO模块以及引脚中断单元之间的关系。这张图只画出了一个外部引脚和与之对应的内部结构,其它引脚及内部结构和这张图基本一样;以LPC824封装为HVQFN33的芯片为例,它有29个GPIO引脚,则其内部就有29套上图这样的电路。

对于某些不具备模拟功能的引脚,它们的片内结构将不包含上图中的模拟部分(黄色区域)。

GPIO引脚与GPIO端口的概念

在进入开关矩阵内部查看它的构造之前,先要澄清一个概念,即GPIO引脚和GPIO端口在物理上是不相同的,前者是芯片的外部信号,后者是芯片的内部信号。
GPIO模块的引出端口是以PIOx_m命名,这些引出端口都是内部信号;每个GPIO端口都唯一对应一个外部引脚,所以LPC800的所有外部引脚,除了电源、地线和两个模拟参考电压引脚之外,都是以对应的GPIO端口来命名的,即也是PIOx_m,在具体使用时不要搞混了。

按照用户手册的功能描述,可以把LPC824的最大引脚封装的开关矩阵,用下图示意性地展现出来。
这张图清晰地展示了一个完整的开关阵列(矩阵)的结构;此图只是一个帮助理解和记忆的示意图,并不代表芯片内部的真实电路。
图中左边一列的PIO0_0~PIO0_28表示外部引脚,而右边一列的PIO0_0~PIO0_28表示GPIO模块的内部输出端。
图2. LPC824的HVQFN33封装内部开关矩阵完整示意图
26.png

下面把SWM的功能分成三个组,分别进行介绍。(注:这里的分组只是为了方便说明,实际上在芯片手册中并没有这种分组。)



三、SWM功能开关组

A、固定功能开关组
上图左侧以黄色标注的一组开关,可以称它为固定功能开关组,每一个开关旁边,都用黄字标示该开关对应的固定功能信号。这组开关中,在芯片复位后,多数开关默认为断开固定功能与外部引脚的连接;但有三个信号特殊,在芯片复位后,SWDIO、SWCLK和RESETN对应的开关,默认地将这三个信号连接到外部引脚上。

另外PIO0_1对应的固定功能信号,有一个模拟功能(ACMP_I2)和一个数字功能(CLKIN);PIO0_6、PIO0_14和PIO0_23,分别对应两个固定功能模拟信号;这些信号的连接示意图如下。

图3. LPC824的复用固定功能模拟信号开关示意图
26.png

固定功能开关组:决定需要把某个固定功能信号,连接到对应的外部引脚。这组开关是一对一的;以LPC82x为例,表2列出了25个固定功能,其中有四对固定功能信号复用输入引脚,因此共有25个固定功能开关。(注:LPC82x中最大配置的芯片有25个固定功能,其它芯片中固定功能则少于这个数目)

模拟的固定功能信号对应的开关是排他性的,当对应的模拟信号连接到外部引脚时,其它任何信号不能再连接到该引脚;数字的固定功能信号对应的开关,用于把使能的信号连接到对应的引脚,但不排斥其它可移动功能也连接到这个相同的引脚。

图4. 固定功能开关组(模拟信号)示意图
27.png

图5. 固定功能开关组(数字信号)示意图
28.png

引脚使能寄存器0(PINENABLE0)中的每一位,对应图4或图5所示的一个开关控制。

B、可移动功能开关组
图2中部兰色阴影框起来的部分,可以称为可移动功能开关组。在这个纵横矩阵中,每个交叉点都是一个开关;每列(纵向)只能有一个开关闭合;每行(横向)可以有多个开关闭合;复位后所有开关默认为断开。

可移动功能开关组:该组开关决定需要把某个可移动功能信号,连接到哪个外部引脚。表1的第一列的每一个可移动功能,都对应这样的可移动功能开关组;仍以LPC82x为例,表1列出了48个可移动功能,也就是说芯片内部实现了48个这样的开关组。(注:LPC82x最大配置的芯片有48个可移动功能,其它芯片中可移动功能数目请参考表1。)

图6. 可移动功能开关组(共48组)示意图A
29.png

每个引脚分配寄存器0~11(Pin assign register)都有4个字节,每个字节控制上图所示的一个可移动功能开关组,即每个引脚分配寄存器,控制四个可移动功能信号的引脚分配。

图7. 可移动功能开关组(共48组)示意图B
30.png
上图是图6的另一种画法,虚线框起来的一组开关,由引脚分配寄存器的对应字节控制。任何时候,只能有一个开关闭合或所有开关断开。

C、GPIO开关组
图2右侧以橘红色标注的一组开关,称为GPIO开关组。

当其中任一开关闭合时,对应的GPIO输出端口依固定功能开关的状态,将有可能连接到外部引脚。当某个开关K所在行中有任意一个开关闭合时,这个开关K会自动断开,很显然这样可以避免GPIO模块的输出,与可移动功能信号相互冲突。

GPIO开关组:该组开关决定是否要把GPIO模块的某个端口输出到对应的引脚。

图8. GPIO开关组示意图

31.png

将GPIO模块的某个端口的输出,连接到外部引脚的条件有两个:一是没有任何作为输出的可移动功能,被分配到对应的引脚;二是没有使能对应的固定功能。例如:如果要输出GPIO模块的PIO0_6信号,则应该关闭对应的固定功能ADC_1和VDDCMP。

模拟焊盘与数字焊盘

从图1可以看出,每个引脚都有两个内部连接点(焊盘),分别处理数字信号和模拟信号;实际使用中,由对IOCON(输入输出配置)模块的设置,决定数字焊盘的输入输出特性;而使用数字焊盘还是模拟焊盘与外部引脚相连接,则由开关矩阵决定;当在开关矩阵中使能了某个端口的固定模拟功能,则该外部引脚将使用模拟焊盘;其它情况下,不论引脚是分配了可移动的功能信号,还是固定功能的数字信号,或是GPIO的输出端,该外部引脚都是对应数字焊盘的信号。

四、SWM的使用特性
从图2和以上的描述,可以总结出以下一些特性:
- 一旦使能某个固定模拟功能时,该功能将占用对应的引脚,所有其它任何信号都不能使用该引脚。
- 当使能某个固定数字功能信号时,其他的可移动数字信号,也可以被分配使用该引脚,即多个信号线在芯片内部是互通的。例如使能了CLKIN输入功能后,还可以分配一个或多个SCT的输入端至相同的引脚,这样CLKIN信号也同时输入至SCT中。
- 如果某个引脚对应的固定功能未使能时,一个或多个可移动功能可以被分配使用该引脚;当没有任何可移动功能使用该引脚时,对应的GPIO输出端口将能够取得该引脚的控制权。使用GPIO输出功能时,需要关闭对应的固定功能并且没有任何可移动功能使用对应的引脚。
- 一个或多个可移动功能可以被分配使用相同的引脚,但其中只能有一个可移动输出功能(包含双向功能信号)。多个可移动输入功能可以使用同一个引脚;例如多个SCT的输入端可以使用同一个引脚,这样可以用一个外部信号同步SCT的多组定时。
- 当可移动输入功能与某个可移动输出功能被分配到同一个引脚时,这些输入功能将接收前述输出功能的信号。使用者可以用这个特性实现很多环回的操作;例如把USART的RXD和TXD信号通过此方式连接,实现自循环。
- 不管引脚连接到哪种数字功能信号(固定数字功能、可移动功能或GPIO模块),GPIO模块的输入端都始终与它对应的引脚连接,GPIO输入寄存器将反映引脚的数字电平状态。
- 当任意模拟信号被分配使用外部引脚,该引脚的模拟焊盘被使能,同时数字焊盘将被断开。
- 当任意数字输出信号被分配到外部引脚,该引脚的数字焊盘被使能。
- 只要引脚的数字焊盘被使能(未断开),对应的引脚中断就会有输入信号,即该引脚的输入信号(如果被使能的话)将可能触发引脚中断。

下面这个简单的流程图,以另一种方式描述了开关矩阵的用法。

图9. 开关矩阵的使用
31.png


五、SWM使用注意事项

开关矩阵的使用相当简单,但有以下几点需要注意的:
1、配置开关矩阵时,必须先打开SWM的时钟,配置完成后,可以关闭SWM的时钟节省功耗。
2、不能把多于一个的输出功能或双向功能信号,分配至同一个引脚上。
3、只要引脚不是模拟功能,不管是输出功能还是输入功能,对应的GPIO输入端始终连接到引脚,这样通过GPIO端口随时可以读出引脚的电平状态。同时,如果在SYSCOM中选择了该端口作为中断触发源,该引脚将可能触发中断,尤其当该引脚为数字输出功能时,芯片内部的输出信号也会触发中断。

关于开关矩阵的工作原理、虚拟的内部结构以及使用特性,今天先介绍到这里,下次将介绍LPC800中其它一些特色的功能模块。



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-29 23:00 , Processed in 0.123451 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表