历史上的今天
返回首页

历史上的今天

今天是:2025年04月02日(星期三)

正在发生

2021年04月02日 | STM32输出与输入概念区别

2021-04-02 来源:eefocus

最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:


(1)GPIO_Mode_AIN 模拟输入

(2)GPIO_Mode_IN_FLOATING 浮空输入

(3)GPIO_Mode_IPD 下拉输入

(4)GPIO_Mode_IPU 上拉输入

(5)GPIO_Mode_Out_OD 开漏输出

(6)GPIO_Mode_Out_PP 推挽输出

(7)GPIO_Mode_AF_OD 复用开漏输出

(8)GPIO_Mode_AF_PP 复用推挽输出

对于刚入门的新手,我想这几个概念是必须得搞清楚的,平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种,但一直未曾对这些做过归纳。因此,在这里做一个总结:


推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。


推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。


详细理解:


2

如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经VT3拉出。这样一来,输出高低电平时,VT3 一路和 VT5 一路将交替工作,从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路的负载能力,又提高开关速度。


开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).


开漏形式的电路有以下几个特点:


1. 利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。


2. 一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)


3. OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。


4. 可以将多个开漏输出的Pin,连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系。这也是I2C,SMBus等总线判断总线占用状态的原理。补充:什么是“线与”?:


在一个结点(线)上, 连接一个上拉电阻到电源 VCC 或 VDD 和 n 个 NPN 或 NMOS 晶体管的集电极 C 或漏极 D, 这些晶体管的发射极 E 或源极 S 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑.


其实可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。


关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:


6ebd493549d90459cb6e7&690

该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。


浮空输入:对于浮空输入,一直没找到很权威的解释,只好从以下图中去理解了


3




由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。


上拉输入/下拉输入/模拟输入:这几个概念很好理解,从字面便能轻易读懂。


复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)


最后总结下使用情况:


在STM32中选用IO模式

(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

(2)带上拉输入_IPU——IO内部上拉电阻输入

(3)带下拉输入_IPD—— IO内部下拉电阻输入

(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电

(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)

(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

STM32设置实例:

(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB, GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0);

(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;


推荐阅读

史海拾趣

B&K Precision公司的发展小趣事

为了进一步拓展国际市场,B&K Precision在全球范围内设立了多个分公司和办事处。其中,2012年在中国设立的分公司百科中国仪器有限公司是一个重要的战略布局。这一举措不仅加强了公司在亚洲市场的地位,也为各地客户提供了更为迅速和便捷的售后服务保障。同时,通过与国际知名企业的合作与交流,B&K Precision不断吸收先进的技术和管理经验,为公司的持续发展注入了新的动力。

以上五个故事,展现了B&K Precision公司从车库起步到成为全球电子测量领域领导者的发展历程。通过不断创新和拓展业务,公司成功应对了市场变化和挑战,成为了电子行业中的佼佼者。

Crystalfontz America Inc公司的发展小趣事

Crystalfontz America Inc公司自成立以来,一直致力于LCD、OLED等显示模块的研发和生产。在早期的发展阶段,公司面临着技术上的诸多挑战。然而,通过持续的技术投入和研发团队的不懈努力,公司成功突破了多项关键技术,推出了一系列具有竞争力的显示模块产品。这些产品在市场上获得了广泛认可,为公司的快速发展奠定了坚实基础。

High Energy Corp公司的发展小趣事

随着产品技术的不断提升,Crystalfontz America Inc公司开始积极拓展市场。公司通过与各大电子设备制造商建立合作伙伴关系,将产品应用于嵌入式系统、机架式服务器、仪器集群等领域。同时,公司还积极参加各类行业展会和技术交流活动,提升品牌知名度,吸引更多潜在客户。这些举措有效推动了公司市场份额的扩大和业务的快速增长。

振宝佳(DMBJ)公司的发展小趣事

随着电子产业的不断发展,SMT贴片技术逐渐成为电子信息产业的支柱技术之一。振宝佳公司紧跟时代步伐,在网络、通信、军事、工业控制以及汽车电子、家电等所有电子领域里全部采用了SMT贴片技术。这一技术的应用不仅提高了产品的集成度和可靠性,也为客户提供了更加优质的产品和服务。

ELPIDA公司的发展小趣事

ELPIDA公司成立于1999年,是日本在DRAM(动态随机存取存储器)领域的重要企业。它的成立是对当时日本半导体产业的一次重要整合,由NEC、日立、三菱电机等公司的DRAM业务合并而成。这一举措旨在振兴日本在DRAM领域的竞争力,并保护国内DRAM产业。

Advanced Electronic Packaging公司的发展小趣事

随着国内市场的逐渐饱和,Advanced Electronic Packaging公司开始将目光投向海外市场。公司积极参与国际电子展会和技术交流活动,展示其先进的封装技术和优质产品。同时,公司还加大了对海外市场的宣传力度,通过线上线下相结合的方式提升品牌知名度和影响力。在不懈的努力下,公司的产品和服务逐渐赢得了国际市场的认可和青睐,海外市场份额逐年攀升。

问答坊 | AI 解惑

不到六个月发表IEEE论文- 几点中肯建议

谨此献给:性急,有压力,及爱吃快餐的老师和兄弟姐妹们。…

查看全部问答>

USB 驱动的安装

我按照网上的例程写了一个USB摄像头的驱动程序 用EVC得到了一个 Ov511.dll 请问应该把它放在哪个目录下啊 我放在“我的设备”里了 没放在任何一个文件夹内 为什么总提示我 安装USB驱动程序CAM时出错 呢…

查看全部问答>

关于KernelIoControl

请问各位高手 KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_I2CIrq, sizeof(UINT32), &g_I2CSysIntr, sizeof(UINT32), NULL)) 的作用是什么呢?? …

查看全部问答>

FL2440如何加密?

我做了个Linux的应用程序放在FL2440的核心板,想对它进行加密。目前我想到的方法有:1. 绑定板上的电子器件    a. 绑定CPU、内存、flash:  可是发现S3C2440 没有唯一序列号,内存、flash也没找到序列号。    b ...…

查看全部问答>

急问stm32串口使用dma接受的问题

我是接受gps信息 一次接受500个 因为要接受一次处理一次 所有使用正常模式。    但是我debug 只能接受一次的数据 我使用重新配置dma的方式 接受下一次  但是好像只是接受到一个字符 然后就像死机一样  再怎么 ...…

查看全部问答>

有没有国庆期间的STM和uCOS培训班

有没有国庆节假期内举办的培训班? 内容:STM32F10系列和uC OS-II操作系统 地点:最好是在南京,附近其他城市也可…

查看全部问答>

在C430里如何访问SR

在C430里如何访问SR 我直接访问: SR|=BIT5; 编译的结果是SR没有定义 请教 如何访问SR…

查看全部问答>

【晒经典】通用型手机充电器电路简单实用

本帖最后由 dontium 于 2015-1-23 13:26 编辑   我要说的芯片是APB708N,这款好啊!   好在哪里,简约不简单。   大多数的市场上的带USB线的充电器里边都是它。   费话少说上图哈:     PCB图 &nb ...…

查看全部问答>

2600-PCT-x/4200-PCT-x参数曲线跟踪仪配置(四)

半导体参数测试软件,适用于组件与分立器件   ACS基本版本软件是专为利用吉时利仪器的高性能能力而开发的,它包括几个履行常见高功率器件测试的样本库。与其他系统不同的是,该软件在测量通道配置方面,给用户带来几乎不受限制的灵活性, ...…

查看全部问答>