0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LPC800 前生今世-第七章 输入输出控制器(GPIO)

恩智浦MCU加油站 来源:未知 2023-11-02 08:55 次阅读

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

LPC800系列中提供了很多封装和输入输出引脚数量的选项:

wKgaomVC9JWAUbqnAABcgYhiuyk745.png表1 LPC800各系列引脚数

没有单独的模拟比较器供电引脚,其它封装都有单独的模拟比较器供电引脚。

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

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

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

一、LPC800的引脚配置功能

LPC800的引脚具有下述功能:

内部上拉或下拉电阻

漏极开路模式

输入迟滞(Hysteresis)

可配置的数字式毛刺滤波

模拟模式

下图是一个标准引脚的功能示意图:wKgaomVC9JWANqL3AAI-LA3cFEk319.png 图1.引脚功能图

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

1.1标准推拉输出

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

下图是LPC82x数据手册中Electrical pin characteristics列表中的相关参数:wKgaomVC9JeAAgLpAAGWTKK3gs4049.png

VOH表示当引脚输出高时的情况,即输出电流4mA3mA时,引脚的电压值最多可以达到VDD-0.4V。例如,某个引脚有一个825Ω对地电阻,当VDD=3.3V时,电阻上的电流为4mA,达到手册规定的最大允许电流,此时引脚端的电压将不会低于2.9V,这远高于TTLCMOS高电平的电压。

在实际应用中,通常可以用一个串联了几百Ω小电阻LED,通过输出高电平点亮LED。小电阻的具体阻值可以按照LED的压降计算得出,或按照经验测试出来。

VOL表示当引脚输出低时,允许外部输入电流的大小。作为例子,可以用一个串联了小电阻的LED,跨接在VDD和引脚之间,通过输出低点亮LED

IOHIOL表示当引脚输出高或低时,能够输出或输入的电流大小。

为了一些需要大电流驱动的应用,在LPC800系列中,还有一些引脚能够输出较大的电流,当输出高时,输出电流可以达到20mA。下表是LPC82x数据手册中,关于PIO0_2PIO0_3PIO0_12PIO0_16的输出参数表。利用这一特性,用户可以使用这些引脚,控制片外大电流的电路,例如直接驱动电流环的通信电路。

wKgaomVC9JeAJlGuAAF6-9jhEVI617.png

1.2开漏输出

开漏模式通常用于I2C通信和其它需要双向通信的场合。控制图中“开漏输出”控制信号有效,不管输出还是输入信号,也不管输出是高还是低,绿色框中上方的那个MOS管始终处于截止状态。

使用开漏输出模式时,通常用户需要在该引脚的芯片外部设置一个上拉电阻,此电阻的大小由外部输入电路的输入阻抗决定。

当引脚输出低时,绿色框中下方的MOS管导通,引脚被拉低;此时外部上拉电阻上流过的电流,会通过引脚注入下方的MOS管,因此上拉电阻不能太小,要保证注入电流不能超出芯片能够承受的范围。从上一节的引脚参数表中可以看到,一般引脚的灌入电流为4mA,即当VDD3.3V时,外部的等效上拉电阻不能小于825Ω

当引脚输出高时,绿色框中下方的MOS管截止,引脚的电平由外部电路决定。此时片外的上拉电阻将把信号线拉至高电平。

实际上,当在开漏输出引脚输出高时,两个MOS管都是处于截止状态,该引脚对外呈现高阻状态。利用这一特性,允许多个器件的开漏输出引脚相互连接在一起,通过“线与”实现双向通信。

为了实现I2C的高速模式+,或其它大电流驱动的需要,LPC800系列中,还有几个引脚允许灌入较大的电流。在适当的配置下,不管是推拉输出还是开漏输出模式下,当引脚输出低时,可以有多达20mA的灌入电流。

下图摘录于LPC82x的数据手册,可以看出PIO0_10PIO0_11具有灌入大电流的能力。读者可以自行查看其它型号的数据手册,找出相应的引脚。

wKgaomVC9JeAdGygAAG129wwljk857.png

1.3数字输入

1中橙色框里的电路就是数字输入部分。当引脚处于输入模式时,绿色框中的两个MOS管均处于截止状态,不对引脚的外部电平产生影响。

当引脚配置为数字输出时,这部分输入电路仍然连接在引脚的回路中,并没有断开,即用户可以在配置为数字输出的引脚上读回信号线的状态。当引脚配置为开漏输出时,I2C就是利用这一特性实现了在同一个信号线上的双向通信,用户也可以利用这一特性,自行实现双向通信。

LPC800的输入模式还有几个特殊的特性,可以方便地辅助用户实现相应的功能,随后几节会一一介绍。

1.4输入反向

使能这个模式后,当输入引脚为低电平时,软件会在寄存器读到’1’,反之当输入引脚为高电平时,软件会在寄存器读到’0’。用户可以按照应用的要求,自主配置是否需要“输入反向”。

一般情况下,基本用不到该功能。只有在片外使用负逻辑电路时,为了软件逻辑的方便,可以启用此功能。

1.5输入的数字滤波

用户可以使能这个功能,自动地过滤掉输入信号中可能出现的毛刺。例如,用户可以利用它,实现按键的自动去抖动。
如果输入信号的频率较高,则需要关闭此功能。

经过适当配置,数字滤波功能能够滤除的最窄脉冲,是小于一个主时钟周期的脉冲,即当系统主时钟为30MHz时,宽度小于33ns的信号会被滤除。数字滤波功能可以滤除的最宽的脉冲,则是小于3 x 255个主时钟周期的脉冲,即当系统主时钟为30MHz时,可以滤除宽度小于25.5us的脉冲,这已经足够实现一般按键去抖动的要求。

1.6输入信号迟滞(Hysteresis)

这个功能是指,当一个外部输入信号由低变高,或由高变低时,芯片内部会推迟输入状态的翻转。

下面是LPC82x数据手册中引脚静态特性的参数表截图:wKgaomVC9JiAEswIAAGR9taXtyo431.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时才变化。

使用这个功能的好处是,当外部输入信号变化时,可以滤除电平上的小幅抖动,内部寄存器的数值不至于随外部信号的抖动而频繁变化,减少软件处理的负担。

1.7输入维持

在原文的用户手册中,该功能被称为Repeater(重复)模式。

1中紫色虚线框中的部分实现输入维持模式。当外部输入为高电平时,输入维持电路在引脚内部接入一个弱上拉电阻;当外部输入为低电平时,则在引脚内部接入一个弱下拉电阻。这样所产生的效果就是,如果外部电路不再驱动这个信号线,该信号线不至于处于浮空状态。

我们知道,CMOS电路的输入端,在处于浮空状态时,会导致较大的漏电流增加功耗,同时也非常容易受到外界信号的干扰。使能输入维持模式,则可以避免这种浮空状态,减少了系统的无谓功耗,也提高了系统的可靠性。

1.8脚的内部上拉或下

上节介绍的“输入维持”模式里的上拉电阻和下拉电阻,是由对应电路自动引入,用户也可以按照自己的应用逻辑,直接使能引脚内部的上拉或下拉电阻,同样可以达到避免信号线浮空的目的。

与输入维持模式不同的是,应用程序可以自行决定在外部电路浮空时,需要保持信号线的高电平状态,还是低电平状态。

另外使能引脚的内部上拉或下拉,独立于引脚的输入或输出模式。即不管引脚是输入还是输出,都可以配置有内部上拉或下拉。

按照数据手册中的参数推算,内部上拉电阻或下拉电阻的等效阻值的典型值是100kΩ左右。读者可自行查看手册中的相应部分。

1.9 I2C模式

LPC800系列中,引脚PIO0_10PIO0_11拥有特殊的I2C模式,除了支持标准和快速I2C模式,还可以支持I2C快速+模式。这两个引脚是真开漏输出,即在这两个引脚的输出电路中,没有图1绿色框中上边的那个MOS管;而普通的“非” 真开漏引脚,是通过始终让上边那个MOS管处于截止状态,实现开漏输出的功能。

LPC800中,只有I2C0可以配置为快速+模式。从SWM章节可以看到,LPC81xI2C0引脚可以经SWM配置到任意引脚,但只能在引脚PIO0_10PIO0_11上使用快速+模式;其它LPC800系列产品中,I2C0的引脚是不能经SWM移动的。

I2C的输出引脚使用PIO0_10PIO0_11时,需要配置这两个引脚为I2C模式;当I2C的输出使用其它引脚时,则需要配置对应的引脚为开漏模式。

1.10模拟输入/输出

对于模拟输入功能来说,不需要在IOCON中做任何配置,一旦在SWM模块使能了某个模拟输入功能后,该引脚对应的数字输入输出功能就被屏蔽。即作为模拟引脚时,图1中绿色框和蓝色框的输出MOS全部截止,橙色的输入线路也处于关闭状态,引脚上的数字输入输出电路均处于高阻状态。

相比其它系列,在LPC84x中增加了两个DAC模拟输出,这两个DAC对应的配置寄存器相比其它引脚的配置寄存器,多了一个模拟输出的控制位。和模拟输入一样,当选择了模拟输出后,该引脚的数字输入输出电路即被屏蔽。

二、引脚的5V兼容

当引脚配置为数字输入模式时,除了与VDDCMP共用的PIO0_6引脚外,其它的引脚都可以承受外部5V的电压。PIO0_6只能承受与VDD相同的电压。

当引脚配置为模拟输入时,则不能承受外部5V的电压,用户需特别留意。

作为输入时,引脚能够承受5V的输入电压,这个特性极大地方便了使用LPC800产品,与传统的5V器件在同一个系统里的互联,即一个5V器件的数字输出引脚可以直接连接到LPC800的数字输入端。

反之,LPC800的数字输出引脚可以直接与5V器件的输入端相连,但5V器件是否能够正确地识别LPC800输出的高电平,用户需自行查看这个5V器件的手册来决定。

三、复位后引脚的默认状态

结合SWM章节和GPIO章节的描述,系统复位后除了与SWDIOSWCLKRESETN对应的功能外,所有的可移动功能都与引脚断开,即引脚内部与GPIO模块相连;同时由于GPIO模块中所有的端口复位后默认为输入,因此在复位后,除PIO0_2PIO0_3PIO0_5外,所有其它引脚都是数字输入,并且使能了内部弱上拉电阻。

最新LPC84x产品中,引入了一个新的模块-FAIM(快速初始化存储器),它可以在系统复位时,按照事先安排好的逻辑,在软件还未运行时快速地配置好引脚的弱上拉、弱下拉或输入维持模式。详见FAIM对应章节。

3.1未用引脚的配置

为了减少干扰和减小功耗,建议在软件启动后,立即把不用的悬空引脚,配置为输出并输出低电平同时关闭内部的上拉电阻。

四、引脚模式配置

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

wKgaomVC9JiAHv1NAAD5uCRl_iw695.png表2.LPC81xLPC82xLPC83xLPC84x引脚配置寄存器列表

wKgaomVC9JiAVceYAAApIpBnAxE023.png 表3.LPC82xLPC83xLPC84x

引脚配置寄存器列表(不含LPC81x)

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

上述表格中列出了每个寄存器的第0~16位,寄存器的第17~31位均为保留位。其它位的意义如下:

wKgaomVC9JiAOvIAAACdoZkeBQ4640.png

五、使用IOCON的数字滤波功能实现按键去抖动的例程

使用数字滤波实现按键去抖,配置过程很简单,只需三步:

1、使能IOCON时钟

2、配置IOCONCLKDIVx的分频系数;

3、配置对应引脚的配置寄存器。

以下是初始化LPC824-Lite开发板上的KEY_USERKEY_ISP按键的例程。

在例程中使用了下列宏定义:wKgaomVC9JiAZ30MAAATdzmZrCc138.png

wKgaomVC9JiAfbIPAACPQDf62IU703.png代码片段1.配置KEY_USER和KEY_ISP按键数字滤波功能的函数

代码的第0411行是对应的,此例程使用了IOCONCLKDIV0作为滤波时钟,并设置分频系数为255,在主频为30MHz时,可以滤除最大255x3=765个周期,即25.5us的脉冲。

END

更多恩智浦AI-IoT市场和产品信息,邀您同时关注“NXP客栈”微信公众号

wKgaomVC9JmAN-SCAABCdkRE230268.jpg      

NXP客栈


恩智浦致力于打造安全的连接和基础设施解决方案,为智慧生活保驾护航。

长按二维码,关注我们

恩智浦MCU加油站


这是由恩智浦官方运营的公众号,着重为您推荐恩智浦MCU的产品信息、开发技巧、教程文档、培训课程等内容。

wKgaomVC9JmAGeSCAAATNlPH08Y015.jpg  

长按二维码,关注我们


原文标题:LPC800 前生今世-第七章 输入输出控制器(GPIO)

文章出处:【微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17370

    浏览量

    352982
  • 恩智浦
    +关注

    关注

    14

    文章

    5892

    浏览量

    108507

原文标题:LPC800 前生今世-第七章 输入输出控制器(GPIO)

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPIO错误排查与解决

    在嵌入式系统和微控制器编程中,通用输入输出GPIO)是最常见的接口之一。然而,在使用GPIO时,我们可能会遇到各种错误。 1. 理解GPIO
    的头像 发表于 01-09 09:46 493次阅读

    GPIO在物联网中的应用

    个过程中,通用输入输出GPIO)接口扮演着重要的角色。 1. GPIO简介 通用输入输出GPIO)是一种数字接口,用于微
    的头像 发表于 01-09 09:43 169次阅读

    如何配置GPIO引脚

    在嵌入式系统设计中,GPIO(通用输入/输出)引脚是连接微控制器与外部世界的重要桥梁。它们可以被配置为输入
    的头像 发表于 01-09 09:39 170次阅读

    gpio接口是干什么的 gpio四种输入输出模式怎么选择

    GPIO接口的作用 GPIO(General Purpose Input/Output)接口,即通用输入输出接口,是一种用于连接和控制各种外部设备的数字接口。它由一组引脚组成,可以通过
    的头像 发表于 10-06 16:07 4483次阅读

    误差放大器的输入输出关系

    误差放大器(Error Amplifier)在电子测量和控制系统中扮演着至关重要的角色,其输入输出关系对于理解和设计这些系统至关重要。以下是对误差放大器输入输出关系的详细解析,包括其工作原理、
    的头像 发表于 09-11 15:32 1498次阅读

    寄存输入输出方式

    寄存输入输出方式是数字电路设计中至关重要的部分,它决定了数据如何在寄存中进出以及处理的效率。下面将详细探讨寄存的几种主要输入输出方式
    的头像 发表于 09-05 14:09 1664次阅读

    PLC运动控制中的输入输出设备

    在PLC(可编程逻辑控制器)运动控制系统中,输入输出设备扮演着至关重要的角色。这些设备不仅负责将外部信号传递给PLC,还负责将PLC的处理结果输出到外部执行机构,从而实现对机械设备运动
    的头像 发表于 09-03 10:52 1106次阅读

    TSC2046E-Q1低压输入输出触摸屏控制器数据表

    电子发烧友网站提供《TSC2046E-Q1低压输入输出触摸屏控制器数据表.pdf》资料免费下载
    发表于 07-26 09:12 0次下载
    TSC2046E-Q1低压<b class='flag-5'>输入输出</b>触摸屏<b class='flag-5'>控制器</b>数据表

    STM32 GPIO八种模式及工作原理详解

    一. 前言   GPIO全称General Purpose Input Output,是微控制数字输入/输出的基本模块,可以实现微控制器与外
    的头像 发表于 07-22 09:32 6980次阅读
    STM32 <b class='flag-5'>GPIO</b>八种模式及工作原理详解

    PLC输入输出信号异常的原因分析

    在工业自动化领域中,PLC(可编程逻辑控制器)作为控制系统的核心部件,其性能的稳定性和可靠性对于整个生产线的正常运行具有至关重要的影响。然而,在实际应用中,PLC的输入输出信号异常问题时有发生,这不
    的头像 发表于 06-12 11:25 2547次阅读

    为什么可以将一个GPIO引脚同时配置为输入输出模式呢?

    的一系列高低电平。 那么对于GPIO6而言,在发送起始信号的时候,是输出模式,接收信号的时候是输入模式,也就是说需要将一个引脚同时配置为输入输出模式。 我注意到,在
    发表于 06-05 07:37

    快速搞懂GPIO控制器的六种模式

    在嵌入式系统和单片机开发中,GPIO(通用输入输出控制器是一个非常重要的组件。GPIO引脚的灵活性使它们能够执行多种功能,从简单的输入输出
    的头像 发表于 05-18 08:04 1661次阅读
    快速搞懂<b class='flag-5'>GPIO</b><b class='flag-5'>控制器</b>的六种模式

    什么是GPIOGPIO组成原理

    GPIO全拼叫General Purpose Input Output(通用输入输出)简称IO口也叫总线扩展GPIO口是由引脚,功能寄存
    发表于 04-28 12:30 7493次阅读
    什么是<b class='flag-5'>GPIO</b>?<b class='flag-5'>GPIO</b>组成原理

    STM32 GPIO弱上拉能做输入输出吗?

    STM32 GPIO 弱上拉能做输入输出
    发表于 04-07 07:07

    PLC的输入输出接口是否需要进行隔离保护?

    PLC(可编程逻辑控制器)的输入输出接口是否需要进行隔离保护,取决于具体的应用场景和需求。
    的头像 发表于 02-23 09:09 2288次阅读