IO口结构详解

绝世美人儿
847次浏览
2021年02月11日 03:28
最佳经验
本文由作者推荐

-

2021年2月11日发(作者:宽敞)


1.



什么就是源型、漏型?什么就是上拉电阻 ?下拉电


阻?什么就是线驱动输出、集电极开路输出、推挽式


输 出?




我们先来说说集电极开路输出 得结构。


集电极开路输出得结构如图


1


所示,


右边得那个


三极管集电极什么都不接,所以叫做集电极开 路(左边得三极管为反相之用,使输入为


“0”


时,输出也为< /p>


“0”


)。对于图


1

,当左端得输入为


“0”


时,前面得三极管截止(即集电极


c



发射极


e


之间相当于断开),所以


5v


电源通过


1k


电阻加到右边得三极管上,右边得三极

管导通(即相当于一个开关闭合);当左端得输入为


“1”


时,前面得三极管导通,而后面得


三极管截止(相当于开关断开)。


我们将图


1


简化成图

< p>
2


得样子。图


2


中得开关 受软件控制,


“1”


时断开,


“0”< /p>


时闭合。很明显


可以瞧出,当开关闭合时,输出直接接地,所以输 出电平为


0


。而当开关断开时,则输出端


悬空了,即高阻态。这时电平状态未知,如果后面一个电阻负载(即使很轻得负载)到地,

那么输出端得电平就被这个负载拉到低电平了,所以这个电路就是不能输出高电平得。







再瞧图三。图三中那个


1k


得电阻即就 是上拉电阻。如果开关闭合,则有电流从


1k



阻及开关上流过,但由于开关闭与时电阻为


0


(方便我 们得讨论,实际情况中开关电阻不为


0


,另外对于三极管还存在 饱与压降),所以在开关上得电压为


0


,即输出电平为


0


。如果


开关断开,则由于开关电阻为无穷大( 同上,不考虑实际中得漏电流),所以流过得电流为


0


,因此在


1k


电阻上得压降也为


0


,所以输出端得电压就就是


5v


了,这样就能输出高 电平


了。但就是这个输出得内阻就是比较大得(即


1kω


),如果接一个电阻为


r


得负载,通过分


压计算,就可以算得最后得输出电压为


5*r/(r+1000)< /p>


伏,即


5/(1+1000/r)


伏。所 以,如果


要达到一定得电压得话,


r


就 不能太小。如果


r


真得太小,而导致输出电压不够得话,那我< /p>


们只有通过减小那个


1k


得上拉电阻来增 加驱动能力。但就是,上拉电阻又不能取得太小,


因为当开关闭合时,

< br>将产生电流,


由于开关能流过得电流就是有限得,


因此限 制了上拉电阻


得取值,


另外还需要考虑到,

当输出低电平时,


负载可能还会给提供一部分电流从开关流过,

因此要综合这些电流考虑来选择合适得上拉电阻。



如果我 们将一个读数据用得输入端接在输出端,


这样就就是一个


io< /p>


口了



51


得< /p>


io


口就就是


这样得结构,其中


p0


口内部不带上拉,而其它三个口带内部上拉),当我们要使用输入功


能时,只要将输出口设置为


1


即可,这 样就相当于那个开关断开,而对于


p0


口来说,就就

< p>
是高阻态了。







对于漏极开路(

< br>od


)输出,跟集电极开路输出就是十分类似得。将上面得三极管换成

< p>
场效应管即可。这样集电极就变成了漏极,


oc


就 变成了


od


,原理分析就是一样得。



另一种输出结构就是推挽输出。推挽输出得结构就就是把上面得上拉电阻也换成一个开关 ,


当要输出高电平时,上面得开关通,下面得开关断;而要输出低电平时,则刚好相反。 比起


oc


或者


od

来说,这样得推挽结构高、低电平驱动能力都很强。如果两个输出不同电平得输


出口 接在一起得话,就会产生很大得电流,有可能将输出口烧坏。而上面说得


oc

< p>


od



出则不会有这样 得情况,


因为上拉电阻提供得电流比较小。


如果就是推挽输出得 要设置为高


阻态时,则两个开关必须同时断开(或者在输出口上使用一个传输门)


,这样可作为输入状


态,


avr


单片机得一些


io


口就就是这种结构。



2



AVR


单片机


IO


口得结构分析



AVR



IO


就是真正双向


IO


结构,


由于大部分网 友都就是从标准


51


转过来得,


受标准


51


得准双向


IO

与布尔操作概念影响,


没能掌握


AVR


IO


操作,


所以有必要撰文说明 一下,


其实采用真正双向


IO


结构得新 型


MCU


很多,常用得有增强型


51< /p>



PIC,AVR


等。

< br>


先简单得回顾一下标准


51


得 准双向


IO


结构





这种准双向


IO


结构得特点就是:



1


、输出结构类似


OC


门,输出低电平时,内部< /p>


NMOS


导通,驱动能力较强


(800u A)



输出高电平靠内部上拉电阻,驱动能力弱


(60uA)




2


、永远有内部电阻上拉


(P0


口除外

< p>
)


,高电平输出电流能力很弱,所以即使


IO


口长时


间短路到地也不会损坏


IO




(


同理,


IO


口低电平输出能力较强


,

< br>作低电平输出时不能长时间短路到


VCC)


< p>
3


、作输入时,因为


OC


门有



线与



特性


,


必须把


IO


口设为高电平


(


所以按键多为共地接



)



4


、作输 出时,输出低电平可以推动


LED(


也就是很弱得


)


,输出高电平通常需要外接缓


冲电路


(


所以


LED


多为共阳接法


)



5


、软件 模拟


OC


结构得总线反而比较方便


-- ---


例如


IIC


总线



*P0


口比较特殊,做外部总线时,就是推挽输出, 做普通


IO


时没有内部上拉电阻,所



P0


口做按键输入需要外接上拉电阻。



*OC



:


三 极管得叫集电极开路,场效应管得叫漏极开路,简称开漏输出。具备


线与



能力


,



0



0




*


为什么设计成输出时高电平弱,低 电平强


----


就是考虑了当年流行得


TTL


器件输入特





相信我们大多数人都接触过


51


单片机,


51


单片机得

I/O


口就是准双向


I/O


口。< /p>


其实这


种说法就是不严谨得,


我们知道,


51


单片机有


4



I/O


口,


分别就是


P0



P1



P2



P3




4



I/O


口得结构并不完全一致,其中


P0


口就是标准得双向


I/O


口,而


P1


P2



P3

则就是准双向


I/O


口。



关于准双向


I/O


口与双向

< br>I/O


口得区别请瞧另一篇文章



准双向


I/O


口与标准双向


I/O< /p>


口得区别




A VR


单片机得


I/O


口就是标准得双向


I/O



,它得


IO


结构就就比


51



I/O


口复杂多


了,


单就是 控制端口得寄存器就有


3



PORT x


(数据寄存器)



DDRx


(数据方向寄存器)



PINx


(端口输入引脚);另外还有一个


SFIOR(


特殊功 能


I/O


寄存器


)

,这个寄存器中得


PUD


位控制全部


I/O


口得上拉电阻就是允许还就是被禁止。



下图就是


AVR


单片机通用


I/O


口结构示意图:



从图中可以瞧 出,


每组


I/O


口配备三个

< p>
8


位寄存器,


它们分别就是数据方向寄存器


DDRx


,数据寄存器


PORTx

< p>
,与输入引脚寄存器


PINx


< br>x


表示端口序号)。


I/O


口得 工


作方式与表现特征由这


3



I/O


口寄存器控制。




数据方向寄存器


DDRx

< p>
用于控制


I/O


口得输入输出方向,


即控制


I/O


口得工作方式为输

出方式还就是输入方式。




DD Rx=1


时,


I/O


口处于输出工作方 式。此时数据寄存器


PORTx


中得数据通过一个


推挽电路输出到外部引脚,


如下图。


AVR


得输出采用推挽电路提高了


I/O


口得输出能力 ,



PORTx=1


时,


I/O


引脚呈现高电平,


同时可提供输出

< p>
20mA


得电流;


而当


P ORTx=0


时,


I/O


引脚呈现低电 平,同时可吸纳


20mA


电流。因此,


AVR



I/O


在输出方式下提供了比 较大


得驱动能力,可以直接驱动


LED


等小功率外围器件。




< p>
DDRx=0


时,


I/O


处于输入工作方式。此时引脚寄存器


PINx


中得数据就就是外 部引


脚得实际电平,通过读


I/O


指令 可将物理引脚得真实数据读入


MCU


。此外,当


I/O


口定义


为输入时(


DD Rx=0



,通过


PORTx


得控制,可使用或不使用内部得上拉电阻,如下图:




AVR


单片机通用

< br>I/O


端口得主要特点为:



双 向可独立位控得


I/O



< p>
ATmega16



PA



PB



PC



PD


四个端口都就是


8


位双向


I/O


口,每一位引脚都可以


单独得进行定义,相互不受影响。如用户可以在定义


PA


口第


0



2



3



4


、< /p>


5



6


位用于输


入得同时定义第


1


< br>7


位用于输出,互不影响。



Push-Pull


大电流驱动


(


最大


40mA)

-


-


-


-


-


-


-


-