打印

IO口的准双端模式有什么用?最好能举个实例

[复制链接]
3981|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fangfly|  楼主 | 2011-1-11 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机IO口的配置时有一种模式为准双端模式,但却一直没发现有什么用,因为我通常把端口设成输入或输出。下面附准双端模式的图与一些说明。



如图,当IO输出为高电平时,其驱动能力很弱,外部负载很容易将其拉至低电平。当IO输出为低电平时,其驱动能力很强,可吸收相当大的电流。
准双向口有三个上拉晶体管,一个“极弱上拉”,当端锁存器为逻辑“1”时打开,当端口悬空时,“极弱上拉”将端口上拉至高电平。
第二个上拉晶体管为“弱上拉”,当端口锁存器为逻辑“1”且端口本身也为“1”时打开,此上拉提供的电流,使准双向口输出为“1”。如果此时端口被外部装置拉到逻辑“0”时,通过施密特触发器,控制“弱上拉”关闭,而“极弱上拉”维持开状态,为了把这个端口拉低,外部装置必须有足够的灌电流能力,使管脚上的电压,降到门槛电以下。
第三个上拉晶体管为“强上拉”,当端口锁存器由“0”跳变到“1”时,这个上拉用来加快端口由逻辑“0”到逻辑“1”的转换速度。
准双向口做为输入时,通个一个施密特触如器和一个非门,用以干扰和滤波。

相关帖子

沙发
HWM| | 2011-1-11 16:53 | 只看该作者
所谓“准双端模式”就是OC加弱上拉并同时配置输入通道的IO模式。由于输出高电平为弱上拉,则当输出高电平时(逻辑1)输出端可被外界强拉至地,这样便构成了输入和输出功能。当然,由于输出高电平是弱上拉的,通常高电平驱动能力相当有限。另外,因为输入低电平时需要较大的电流(相比高阻输入端口),所以不宜用在低能耗要求的系统中。

准双向端口的典型例子就是MCS-51,不妨可以参看相关的资料。

使用特权

评论回复
板凳
qvb123| | 2011-10-14 13:11 | 只看该作者
C51:关于8051单片机I/O端口的双向与准双向的分析
C51的说明书上说:”Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called quasi-bidirectional

  ports. When configured as inputs, they pull high and source current (IIL) when externally pulled low. Port 0, on the other

  hand, is considered truly bidirectional, because it floats when configured as an input. "

  翻译是:因为P1、2、3有固定的内部上拉电阻,所以有时称它们为准双向口。当用做输入时被拉高,低则要靠外部电路拉低。而P0则是真双向口,因为作为输入时它是悬浮的。

在最初的51系列单片机中

P0口:双向8位三态I/O口

P1口:准双向8位I/O口

P2口:准双向8位I/O口

P3口:准双向8位I/O口

这里特别要主要准双向与双向三态I/O的区别:

P1口,P2口,P3口是3个8位准双向的I/O口,各口线在片内均有固定的上拉电阻,当这三个准双向I/O口作输入口使用时,要向该口先写1,另外准双向I/O口无高阻的“浮空”状态。

而双向口P0口线内无固定上拉电阻,由两个MOS管串接,既可开漏输出,又可处于高阻的“浮空”状态,故称为双向三态I/O口。  

“准”就是“基本上的意思”,也就是“准双向口”不是正真的双向口。

  其实重点在P0口。

  P0口是双向指的是它被用作地址/数据端口时,只有在这个时候,P0口才处于两个开关管推挽状态,当两个开关管都关闭时,才会出现高阻状态.当P0口用于一般I/O口时,内部接Vcc的那个开关管是与引脚(端口)脱离联系的,这个时候,只有拉地的那个开关管其作用,P0口作为输出,是必须外接上拉电阻的,不然就无法输出高电平;

  如果P0口作为输入,则必须先对端口写1,使拉地的开关管断开,这个时候,如果不接上拉电阻,则是高阻状态,就是一个双向口,如果接上拉电阻,则本身输出高电平,对输入信号的逻辑无影响(注意是对逻辑无影响,对实际参数有无影响我不确定,但是我认为是有的).

  双向与准双向,根本原则是双向包含了高阻这个状态,而不在于是否需要先写1或者不写,P1~P3口因为有内部上拉电阻,因此无论如何不是双向;P0口内部无上拉电阻,在处于数据/地址功能时,自动完成3态的转换,是双向,处于一般I/O口时,如果不接外部上拉,而且先向端口写了1,那么就处于高阻状态,此时,它也是一个人为的双向口,这与它处于地址/数据功能时的自动双向有区别,以及与P1~P3处于输入时输出锁存器为1是有区别的跟I2C总线上那种漏极开路或者集电极开路结构差不多. 通过上拉电阻(或者下拉电阻)来提供一种电平的驱动.

  当作为输入使用时,就将开关断开,这样就只剩下上拉(或者下拉)电阻,因而阻抗比较高,

  可以由其它设备驱动该IO口。准双向口在做为输入使用时,实际上还是一种输出状态.

  只是该输出状态的内阻比较大而已. 而真正的双向IO口,有方向控制寄存器,作为输入

  使用时输出部分被断开.

  双向口与准双向口的区别为双向口有高阻态,输入为真正的外部信号,准双向口内部有上拉,故高电平为内部给出不是真正的外部信号!软件做处理时都要先向口写“1”!

  P0口为真正的双向口,其余为准双向口!

  说明一点:51的基础是8031,8031的I/O口只有P1口!

  而P0及P2口为外扩存储器,P3为多功能口!

  51后来增加了其余口的I/O口功能!

  P0内部无上拉(开漏输出),外加NMOS电路需接上拉!

  输入为高阻悬浮态!

  P0的驱动能力是单个其余口的两倍!

使用特权

评论回复
地板
qvb123| | 2011-10-14 13:18 | 只看该作者
  双向口与准双向口的区别为双向口有高阻态,输入为真正的外部信号,准双向口内部有上拉,故高电平为内部给出不是真正的外部信号!软件做处理时都要先向口写“1”!

使用特权

评论回复
5
lyjian| | 2011-10-14 21:42 | 只看该作者
软件做处理时都要先向口写“1”!
**********************
典型的教科书说法.

使用特权

评论回复
6
bewind| | 2011-10-14 22:38 | 只看该作者
5# lyjian
对于不确定的,还是写1比较保险吧,你有什么异议呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

50

帖子

1

粉丝