查看: 2360|回复: 3

[分享] LPC800特色模块揭秘——输入输出引脚的配置

[复制链接]

该用户从未签到

72

主题

80

帖子

0

版主

Rank: 7Rank: 7Rank: 7

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

一款MCU,最重要的是要有输入输出引脚,引脚的数量要够丰富,功能要够齐全,还要有灵活的输入输出控制方式。

在LPC800系列中提供了很多封装,和输入输出引脚数量的选项,下表列出了除LPC80x和LPC8N04之外,所有系列的引脚数目统计一览。LPC80x和LPC8N04将另有文章介绍,下同。

表1. LPC800各系列引脚数目
11.png

从表1可以看出,所有LPC800产品的引脚利用率是非常高的,除了供电引脚外,所有其它引脚,包含调试引脚、外接晶振的引脚和所有具有模拟功能的引脚,都可以作为普通的数字输入输出使用。甚至芯片的复位引脚,也可以在芯片启动后被配置为数字输入输出引脚。这大大增加了产品的可用性和配置的灵活性。

这里要强调一个重要的概念,引脚通常被称为GPIO引脚,但引脚不等同于GPIO控制器。在LPC800中,引脚的配置由IOCON模块实现,而GPIO模块只实现软件对引脚输入电平的直接读取,和对输出引脚的电平高低的控制。

所有需要用到输入输出引脚的模块,例如UART、I2C、SPI、ADC、定时器等,都需要使用IOCON配置外部引脚。使用GPIO模块之前,也都需要使用IOCON配置外部引脚。

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



1、LPC800的引脚配置功能
LPC800的引脚具有下述功能:
- 内部上拉或下拉电阻
- 漏极开路模式
- 输入滞后(Hysteresis)
- 可配置的数字式毛刺滤波
- 模拟模式

下图是一个标准引脚的功能示意图。

图1. 引脚功能图
12.png

这个示意图可以分为三个部分,上面是输出部分,下面是输入部分,中间是一个维持输入信号的维持电路。
下面分别关注不同的功能部分。

1. 标准推拉输出
这是最常用的输出模式,图1中绿色框中的两个MOS管的导通和截止,决定了输出电平的高低。
采用这种模式时,芯片直接推动对应的引脚信号,并具有一定的信号驱动能力。具体驱动能力的大小,每个产品系列会不尽相同,用户需要查看数据手册中的参数说明。
下面是LPC82x数据手册中Electrical pin characteristics列表中的相关参数。

13.png

VOH表示当引脚输出高时的情况,即输出电流为4mA或3mA时,引脚的电压值最多可以达到VDD - 0.4V。例如,某个引脚有一个825Ω对地电阻,当VDD=3.3V时,电阻上的电流为4mA,达到手册规定的最大允许电流,此时引脚端的电压将不会低于2.9V,这远高于TTL或CMOS高电平的电压。
在实际应用中,通常可以用一个串联了几百Ω小电阻的LED,通过输出高点亮LED。小电阻的具体阻值可以按照LED的压降计算得出,或按照经验测试出来。
VOL表示当引脚输出低时,允许外部输入电流的大小。作为例子,可以用一个串联了小电阻的LED,跨接在VDD和引脚之间,通过输出低点亮LED。
IOH和IOL表示当引脚输出高或低时,能够输出或输入的电流大小。
为了一些需要大电流驱动的应用,在LPC800系列中,还有一些引脚能够输出较大的电流,当输出高时,输出电流可以达到20mA。
下表是LPC82x数据手册中,关于PIO0_2、PIO0_3、PIO0_12和PIO0_16的输出参数表。利用这一特性,用户可以使用这些引脚,控制片外大电流的电路,例如直接驱动电流环的通信电路。

14.png

2. 开漏输出
开漏模式通常用于I2C通信,和其它需要双向通信的场合。
控制图1中“开漏输出”控制信号有效,不管输出还是输入信号,也不管输出是高还是低,绿色框中上方的那个MOS管始终处于截止状态。
使用开漏输出模式时,通常用户需要在该引脚的芯片外部设置一个上拉电阻,此电阻的大小由外部输入电路的输入阻抗决定。
当引脚输出低时,绿色框中下方的MOS管导通,引脚被拉低;此时外部上拉电阻上流过的电流,会通过引脚注入下方的MOS管,因此上拉电阻不能太小,要保证注入电流不能超出芯片能够承受的范围。从上一节的引脚参数表中可以看到,一般引脚的灌入电流为4mA,即当VDD为3.3V时,外部的等效上拉电阻不能小于825Ω。
当引脚输出高时,绿色框中下方的MOS管截止,引脚的电平由外部电路决定。此时片外的上拉电阻将把信号线拉至高电平。
实际上,当在开漏输出引脚输出高时,两个MOS管都是处于截止状态,该引脚对外呈现高阻状态。利用这一特性,允许多个器件的开漏输出引脚相互连接在一起,通过“线与”实现双向通信。
为了实现I2C的高速模式+,或其它大电流驱动的需要,LPC800系列中,还有几个引脚允许灌入较大的电流。在适当的配置下,不管是推拉输出还是开漏输出模式下,当引脚输出低时,可以有多达20mA的灌入电流。
下图摘录于LPC82x的数据手册,可以看出PIO0_10和PIO0_11具有灌入大电流的能力。读者可以自行查看其它型号的数据手册,找出相应的引脚。

15.png

3. 数字输入
图1中橙色框里的电路就是数字输入部分。当引脚处于输入模式时,绿色框中的两个MOS管均处于截止状态,不对引脚的外部电平产生影响。
当引脚配置为数字输出时,这部分输入电路仍然连接在引脚的回路中,并没有断开,即用户可以在配置为数字输出的引脚上读回信号线的状态。当引脚配置为开漏输出时,I2C就是利用这一特性实现了在同一个信号线上的双向通信,用户也可以利用这一特性,自行实现双向通信。
LPC800的输入模式还有几个特殊的特性,可以方便地辅助用户实现相应的功能,随后会一一介绍。

4. 反向输入
使能这个模式后,当输入引脚为低电平时,软件会在寄存器读到’1’;反之当输入引脚为高电平时,软件会在寄存器读到’0’。用户可以按照应用的要求,自主配置是否需要“输入反向”。
一般情况下,基本用不到该功能。只有在片外使用负逻辑电路时,为了软件逻辑的方便,可以启用此功能。

5. 输入的数字滤波
用户可以使能这个功能,自动地过滤掉输入信号中可能出现的毛刺。例如,可以利用它,实现按键的自动去抖动。
如果输入信号的频率较高,则需要关闭此功能。
经过适当配置,数字滤波功能能够滤除的最窄脉冲,是小于一个主时钟周期的脉冲,即当系统主时钟为30MHz时,宽度小于33ns的信号会被滤除。数字滤波功能可以滤除的最宽脉冲,则是小于3 x 255个主时钟周期的脉冲,即当系统主时钟为30MHz时,可以滤除宽度小于25.5us的脉冲,这已经足够实现一般按键去抖动的要求。

6. 输入的数字滤波
这个功能是指,当一个外部输入信号由低变高,或由高变低时,芯片内部会推迟输入状态的翻转。
下面是LPC82x数据手册中引脚静态特性的参数表截图。

16.png

当外部输入电平为0.7VDD时,芯片会识别为’高’(VIH),即当VDD=3.3V时,VIH=2.3V;当外部输入电平为0.3VDD时,芯片会识别为’低’(VIL),即当VDD=3.3V时,VIL=1.0V。
当使能输入迟滞功能时,按照上面截图的参数,芯片会在外部信号变化过程中,推迟0.4V改变内部寄存器的数值。
举个例子,当外部信号从3.0V下降到0V的过程中,如果没有迟滞功能,内部寄存器的数值会在信号刚好降到低于1.0V时,从’1’变为’0’;如果引入迟滞功能,只有信号降到低于0.6V时,内部寄存器的数值才会变化。同理,当外部信号上升时,没有迟滞功能时,内部寄存器的数值会在外部电平刚好超过2.3V时变化,使能迟滞功能后,内部寄存器的数值要在外部电平超过2.7V时才变化。
使用这个功能的好处是,当外部输入信号变化迟缓,滤除电平上的小幅抖动,内部寄存器的数值不至于随外部信号的抖动而频繁变化,减少软件处理的负担。

7. 输入维持
在原文的用户手册中,该功能被称为Repeater(重复)模式。
图1中紫色虚线框中的部分实现输入维持模式。
当外部输入为高电平时,输入维持电路在引脚内部接入一个弱上拉电阻;当外部输入为低电平时,则在引脚内部接入一个弱下拉电阻。这样所产生的效果就是,如果外部电路不再驱动这个信号线,该信号线不至于处于浮空状态。
我们知道,CMOS电路的输入端,在处于浮空状态时,会导致较大的漏电流增加功耗,同时也非常容易受到外界信号的干扰。使能输入维持模式,则可以避免这种浮空状态,减少了系统的无谓功耗,也提高了系统的可靠性。

8. 引脚的内部上拉或下拉
上一段介绍的“输入维持”模式里的上拉电阻和下拉电阻,是由对应电路自动引入,用户也可以按照自己的应用逻辑,直接使能引脚内部的上拉或下拉电阻,同样可以达到避免信号线浮空的目的。
与输入维持模式不同的是,应用程序可以自行决定在外部电路浮空时,需要保持信号线的高电平状态,还是低电平状态。
另外使能引脚的内部上拉或下拉,独立于引脚的输入或输出模式。即不管引脚是输入还是输出,都可以配置有内部上拉或下拉。
按照数据手册中的参数推算,内部上拉电阻或下拉电阻的等效阻值,典型值是100kΩ左右。读者可自行查看手册中的相应部分。

9. I2C模式
在LPC800系列中,引脚PIO0_10和PIO0_11拥有特殊的I2C模式,除了支持标准和快速I2C模式,还可以支持I2C快速+模式。这两个引脚是真开漏输出,即在这两个引脚的输出电路中,没有图1绿色框中上边的那个MOS管;而普通的“非” 真开漏引脚,是通过始终让上边那个MOS管处于截止状态,实现开漏输出的功能。
在LPC800中,只有I2C0可以配置为快速+模式。从SWM部分可以看到,LPC81x的I2C0引脚可以经SWM配置到任意引脚,但只能在引脚PIO0_10和PIO0_11上使用快速+模式;其它LPC800系列产品中,I2C0的引脚是不能经SWM移动的。
当I2C的输出引脚使用PIO0_10和PIO0_11时,需要配置这两个引脚为I2C模式;当I2C的输出使用其它引脚时,则需要配置对应的引脚为开漏模式。

10. 模拟功能的输入/输出
对于模拟输入功能来说,不需要在IOCON中做任何配置,一旦在SWM模块使能了某个模拟输入功能后,该引脚对应的数字输入输出功能就被屏蔽。即作为模拟引脚时,图1中绿色框和蓝色框的输出MOS全部截止,橙色的输入线路也处于关闭状态,引脚上的数字输入输出电路均处于高阻状态。
相比其它系列,在LPC84x中增加了两个DAC模拟输出,这两个DAC对应的配置寄存器相比其它引脚的配置寄存器,多了一个模拟输出的控制位。和模拟输入一样,当选择了模拟输出后,该引脚的数字输入输出电路即被屏蔽。


2、引脚的5V兼容特性
当引脚配置为数字输入模式时,除了与VDDCMP共用的PIO0_6引脚外,其它的引脚都可以承受外部5V的电压。PIO0_6只能承受与VDD相同的电压。
当引脚配置为模拟输入时,则不能承受外部5V的电压,用户需特别留意。
作为输入时,引脚能够承受5V的输入电压。这个特性极大地方便了使用LPC800产品,与传统的5V器件在同一个系统里的互联,即一个5V器件的数字输出引脚,可以直接连接到LPC800的数字输入端。
反之,LPC800的数字输出引脚可以直接与5V器件的输入端相连,但5V器件是否能够正确地识别LPC800输出的高电平,用户需自行查看这个5V器件的手册来决定。


3、复位后引脚的默认状态
结合SWM和GPIO的功能,系统复位后除了与SWDIO、SWCLK和RESETN对应的功能外,所有的可移动功能都与引脚断开,即引脚内部与GPIO模块相连;同时由于GPIO模块中所有的端口复位后默认为输入,因此在复位后,除PIO0_2、PIO0_3和PIO0_5外,所有其它引脚都是数字输入,并且使能了内部弱上拉电阻。
在最新的LPC84x产品中,引入了一个新的模块——FAIM(快速初始化存储器),它可以在系统复位时,按照事先安排好的逻辑,在软件还未运行时,快速地配置好引脚的弱上拉、弱下拉或输入维持模式。


4、引脚模式配置
在LPC800产品中,每个引脚都对应一个32位寄存器,用于配置本文第一部分中介绍的各项功能和模式。下面几张表格列出了所有引脚的IOCON配置寄存器的每位功能。

表2. LPC81x、LPC82x、LPC83x和LPC84x的引脚配置寄存器列表
17.png

表3. LPC82x、LPC83x和LPC84x的引脚配置寄存器列表(不含LPC81x)
18.png

表4. LPC84x的引脚配置寄存器列表
20.png

上述表格中列出了每个寄存器的第0~16位,寄存器的第17~31位均为保留位。其它位的意义如下:
▲        Res:保留位。
▲        MODE:配置引脚的上下拉电阻和输入维持模式,见前面1.8和1.7节。意义如下:
- 0b00: 无上下拉电阻。
- 0b01:有下拉电阻。
- 0b10:有上拉电阻。这是所有引脚在系统复位后对应的默认配置。
- 0b11:输入维持模式。
▲        HYS:输入信号迟滞(见1.6节)使能。
- 0:输入无迟滞。这是除LPC84x以外产品,在系统复位后的默认配置。
- 1:使能。这是LPC84x在系统复位后的默认状态。
▲        INV:输入反向(见1.4节)。
- 0:没有输入反向。这是所有LPC800产品在系统复位后的默认配置。
- 1:输入反向。
▲        OD:开漏输出(见1.2节)。
- 0:非开漏输出。这是所有LPC800产品在系统复位后的默认配置。
- 1:开漏输出。这些引脚不是“真”开漏引脚。
▲        I2CMODE:“真”开漏引脚的I2C模式(见1.9节)。
- 0b00:I2C的标准和快速模式。这是所有LPC800产品在系统复位后的默认配置。
- 0b01:标准的GPIO功能,需在片外配置上拉电阻。
- 0b10:I2C的快速+模式
- 0b11:保留组合。
▲        CLK_DIV:输入数字滤波功能使用的滤波时钟(详见下面S_MODE的说明)。
- 0x0~0x6:分别选择IOCONCLKDIV0~IOCONCLKDIV6。IOCONCLKDIVx在SYSCON寄存器中定义。系统复位后的默认配置为0x0。
- 7:保留。
▲        S_MODE:输入数字滤波选择(见1.5节)。
- 0b00:没有输入数字滤波。这是所有LPC800产品在系统复位后的默认配置。
- 0b01:滤除短于1个滤波时钟周期的毛刺脉冲。
- 0b10:滤除短于2个滤波时钟周期的毛刺脉冲。
- 0b11:滤除短于3个滤波时钟周期的毛刺脉冲。
▲        DACOUT:DAC输出模式(见1.10节)。只有LPC84x才有该配置位,此位置在其它产品中为保留位。
- 0:非DAC输出模式。这是所有LPC84x产品在系统复位后的默认配置。
- 1:使能DAC输出模式。

用户可以参照这里的说明进行寄存器级的编程,更重要的是通过了解这些寄存器位,能够更加深入地了解IOCON的配置功能和选项,即使是使用SDK提高的函数时,也能清楚和明白各项参数的意义。
关于输入输出引脚的各项功能,以及配置方式今天先介绍到这里,下次将介绍LPC800中其它一些特色的功能模块。

回复

使用道具 举报

  • TA的每日心情
    慵懒
    前天 16:01
  • 签到天数: 1480 天

    [LV.10]以坛为家III

    203

    主题

    2万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    92793
    最后登录
    2024-4-29
    发表于 2018-11-23 14:16:39 | 显示全部楼层
    写的非常不错,赞一个
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    帖子

    0

    注册会员

    Rank: 2

    积分
    57
    最后登录
    2021-6-11
    发表于 2021-6-11 16:07:45 | 显示全部楼层
    没有80x系列
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-1-4 14:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    0

    主题

    172

    帖子

    0

    高级会员

    Rank: 4

    积分
    573
    最后登录
    2024-4-28
    发表于 2022-8-9 19:13:43 | 显示全部楼层
    学习了,谢谢!
    每天登陆学习一下
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-29 18:25 , Processed in 0.129890 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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