关于单片机IO口详解

发布者:婉如Chanel最新更新时间:2015-08-21 来源: eefocus关键字:单片机  IO口 手机看文章 扫描二维码
随时随地手机看文章
个人总结:

这八种必须弄懂!!!!

 

【转】有关推挽输出、开漏输出、复用开漏输出、复用推挽输出 <wbr>以及上拉输入、下拉输入、浮空输入、
 

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

 

(1)GPIO_Mode_AIN 模拟输入 ,应用ADC模拟输入,或者低功耗下省电
(2)GPIO_Mode_IN_FLOATING 浮空输入,可以做KEY识别,RX
(3)GPIO_Mode_IPD 下拉输入 ,在没有信号输入的时候,下拉电阻能使读取input值保持为低,类似推挽,主要是为了增强驱动能力

(4)GPIO_Mode_IPU 上拉输入 ,在没有信号输入的时候,上拉电阻能使读取input值保持为高,类似推挽,主要是为了增强驱动能力,电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分。

(5)GPIO_Mode_Out_OD 开漏输出,IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
(6)GPIO_Mode_Out_PP 推挽输出,IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)GPIO_Mode_AF_OD 复用开漏输出 片内外设功能(TX1,MOSI,MISO.SCK.SS)
(8)GPIO_Mode_AF_PP 复用推挽输出片内外设功能(I2C的SCL,SDA)

 

【转】有关推挽输出、开漏输出、复用开漏输出、复用推挽输出 <wbr>以及上拉输入、下拉输入、浮空输入、
 

 

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

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

 

[page]

如图所示,推挽放大器的输出级有两个“臂”(两组放大元件),一个“臂”的电流增加时,另一个“臂”的电流则减小,二者的状态轮流转换。对负载而言,好像是一个“臂”在推,一个“臂”在拉,共同完成电流输出任务。当输出高电平时,也就是下级负载门输入高电平时,输出端的电流将是下级门从本级电源经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 和 个 NPN 或 NMOS 晶体管的集电极 或漏极 D, 这些晶体管的发射极 或源极 都接到地线上, 只要有一个晶体管饱和, 这个结点(线)就被拉到地线电平上. 因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS), 晶体管就会饱和, 所以这些基极或栅极对这个结点(线)的关系是或非 NOR 逻辑. 如果这个结点后面加一个反相器, 就是或 OR 逻辑.

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

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

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

STM32的非ADC I/O口都是5V容忍,当然可以接5V器件

5V容忍的意思就是I/O口允许输入5V信号电平,但输出的是3V信号电平;至于其它5V器件是否可以正确地识别STM32的3V信号电平,就要看这个器件了。

如果外围器件需要5V信号电平,可以使用STM32的OD输出模式然后使用外置上拉到5V实现。

 

 

 

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

由于浮空输入一般多用于外部按键输入,结合图上的输入部分电路,我理解为浮空输入状态下,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;
 
 
通常有5种方式使用某个引脚功能,它们的配置方式如下:
1)作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。
2)作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。
3)作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。
4)作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。
5)作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。

 

比如要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。

如果要使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚。


关键字:单片机  IO口 引用地址:关于单片机IO口详解

上一篇:状态机编程
下一篇:SPI、IIC、UART、can区别

推荐阅读最新更新时间:2024-03-16 14:29

Atmel新款闪存MCU满足USB嵌入式应用需求
Atmel Corporation日前推出四款带有USB控制器的全新AVR闪存微控制器(Flash MCU)。AT90USB微控制器设计用于满足在主机和功能模式中需要USB连接的嵌入式应用的各种不同要求。 目前正在使用的USB设备数量超过10亿;在占领计算机和外围设备领域之后,USB在消费产品和工业设备领域也正在迅猛发展。数据存储、数据传输、产品配置和固件更新是推动这一趋势的关键应用。AT90USB1286和AT90USB646具有USB口,用于需要与USB主机相连的应用。AT90USB1287和AT90USB647符合USB On-The-Go(OTG)标准,在应用中作为两用设备(Dual Role Device, DRD),
[嵌入式]
飞思卡尔单片机DZ60---TPM1\TPM2溢出中断
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ //TPM中断实验,LED1灯每一秒钟闪烁一次? //1:时钟来源选择 TPM1SC中的 CLKS //2:可编程的时钟分频器,通过设置TPM1SC中的PS位。 //3:开中断。TPM1SC中的TOIE位? //4:16位的计数器与比较器设置。即TPM1CNTH与 TPM1MOD? 当两者相等时产生中断置位标志进入中断函数。 #define LED1 PTDD_PTDD0 #define LED2
[单片机]
MCS-51单片机指令系统“读-改-写”方式指令
51 单片机有四个 8 位的并行接口。由于内部结构的特点,并行接口在输出 0、1 的时候,能力是不一样的。输出 0 的时候,能力较强,但输出 1 的时候,能力就很差了,而 P0 口,则要外接上拉电阻才能输1。 单片机从端口读入数据的通道有两个,一个是从锁存器引入,一个是从输出引脚处引入,分别叫做“读锁存器”和“读引脚”。单片机在进行端口输出时,经常要参考其上一次的输出状态。 Example:使一个LED灯闪烁。编程序时需要从输出引脚读前一次的输出状态,然后将其求反输出。如果上次是输出“1”使LED点亮,这时候虽然端口上输出逻辑是“1”,但是由于LED的二极管作用将输出高电平拉至“0”电平(0.7V左右),通过引脚读进来就是
[单片机]
[单片机框架][DFU] Dfu升级例子 带crc校验+超时机制+led指示灯+芯片加锁+芯片自擦
自动检测剩余空间是否支持备份升级,防止升级失败变砖。 /******************************************************************************** * @file main.c * @author jianqiang.xue * @Version V1.0.0 * @Date 2021-04-03 * @brief NULL ********************************************************************************/ /* Includes -------------------
[单片机]
单片机定时中断的几种精确定时编程方法
简介:MCS-51单片机的中断响应延迟时间,取决于其它中断服务程序是否在进行,或取决于正在执行的是什么样的指令。单中断系统中的中断响应时间为3~8个 机器周期 。无论是哪一种原因引起的误差,在精确定时的应用场合,必须考虑它们的影响,以确保精确的定时控制。根据定时中断的不同应用情况,应选择不 同的精确定时编程方法。 文中以定时器T1工作在定时方式1为例,晶振频率为12MHz 。 1 方法1 在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和 启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的
[单片机]
PIC16F877单片机的液晶显示模块接口技术
  引言   由于液晶显示器(LCD)具有功耗低、体积小、质量轻、超薄等其他显示器无法比拟的优点,它广泛用于各种智能型仪器和低功耗电子产品中。点阵式(或图形式) LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动、动画、闪烁、文本特征显示等功能,用途十分广泛。本文在简介液晶显示器MG-12232的驱动器SED1520F0A的结构、功能的基础上,介绍了PIC16F877单片机的LCD硬件接口电路和软件编程特点。   一、PIC16F877与MG-12232的硬件接口电路   1.SED1520F0A的接口信号   SED1520F0A属行列驱动及控制合一的小规模液晶显示驱动芯片,电路简单
[单片机]
PIC16F877<font color='red'>单片机</font>的液晶显示模块接口技术
单片机为核心的温室智能控制系统
  引言   随着社会的进步和工农业生产技术的发展,许多产品对生产和使用环境的要求越来越严,人们对温度、湿度、光强、二氧化碳浓度、灰尘等环境因素的影响越来越重视了。为此,本文以农业技术发展为目的开发了一种智能控制系统。   众所周知,光、温度、湿度是农业生产不可缺少的因素,所以本设计将其作为重点数据来处理,而目前市场上普遍存在的温度检测仪器大都是单点测量,而且温度信息传递不及时,精度达不到要求,不利于农业控制者根据温度变化及时做出决定。而湿度传感器价格昂贵,大多使用进口元件,但事实上,农用精度要求并不高,现在国产湿度传感器完全可以适用。为此,本设计开发了一种能够同时测量多点,并实时性高、精度高,能够综合处理多点温度信息,并能进
[单片机]
什么是汽车微控制器?汽车MCU的特点、分类及应用
随着智能汽车的发展,用户对汽车的安全性、稳定性、智能化不断提出更新的要求。车载各项功能的实现都需要复杂的芯片组和算法的稳定支持,MCU将发挥更大的作用。 什么是汽车微控制器? 汽车微控制器又称MCU,是汽车电气控制系统的核心部件。MCU必须具备良好的高温性能和稳定性,才能控制车内所有电子系统,包括多媒体、音响、导航、悬架等。与普通MCU相比,汽车MCU对品质要求更高,在复杂环境下不易损坏汽车的。一般来说,最重要的是可靠性和温度范围,民用级为0-70℃,工业级为20-85℃,汽车级为40-85℃。 MCU将成为“汽车大脑”的重要组成部分,是汽车的智能大脑,发挥着“思考、计算、控制”的核心功能。随着汽车电子电气架构向集中式演进,M
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved