EDN China > 其它文章 > 嵌入式系统 > 正文
?

双向IO转准双向(开漏输出)IO的软件控制

作者:hotpower: EDN China?? 2008年12月08日 ?? 收藏0

  EDN博客精华文章??作者:hotpower

  问题:

  2138的io如果不是开漏输出是不是不能模拟IIC

  在很多MCU/ARM/DSP中,IO都是真正的双向IO.

  一般由方向(输出输入模式)和读写等控制寄存器组成

  如LPC2138的IODIR,IOSET,IOCLR,IOPIN等。

  而在应用中有时需要IO去模拟1-Wire,I2C,SPI等总线时序,

  故其数据线是需要双向IO的,这样双向IO在读时序的写'1'过程时

  是不可以在输出模式下输出高电平的,因为这样将会与接口设备发生“线与”

  虽然可以用二极管来阻止“线与”的发生,但破坏了双向的设计要求。

  如出现“操作不慎会输出大电流?”

  wswh2o 发表于 2008-12-5 16:25 侃单片机 ←返回版面???

  楼主: 2138的io如果不是开漏输出是不是不能模拟IIC

  操做不慎会输出大电流?

  故应该在总线上外接上拉电阻,在输出‘1’时将其变为输入模式,利用外部

  上拉电阻来输出‘1’。此时的IO就相当于“开漏”IO.

  这样控制软件的编写也非常简单:

  1.输出寄存器永远写‘0’

  2.读IO不变,还是输入模式。

  3.写IO时,写‘0’为输出模式,写‘1’为输入模式。

  这样原本应该控制IOSET,IOCLR的变为了控制IODIR。

  所以:

  hotpower 发表于 2008-12-5 18:03 侃单片机 ←返回版面???

  3楼: IO设置为输入模式就是“开漏输出”

  输出0---设置为输出模式,拉低IO

  输出1---设置为输入模式,外部上拉为1

  这种双向IO转准双向IO的方法在一些键扫描的应用尤为重要,

  因为这些IO一般都串联电阻防止IO线与,可能是需要双向,故不能

  加二极管来防止线与的发生。

  当键扫描有效时,假设扫描行‘0’,非扫描行‘1’,(读IO)输入中断上拉‘1’

  那么有键压下时,扫描行‘0’,非扫描行‘1’的“抽头”处实际是

  2个串联电阻的分压处,

  故读IO得到是大约1/2VCC,这只是理论上的,考虑动态电阻,有些芯片可能

  会测试到键压下,但可能是时好时坏,很不稳定,当多键压下是就测不到键压下了。

  我遇到过别人设计的这样的电路,考虑时单向扫描,将其电阻换为二极管才算解决。

  虽然这个问题不是问题,但也要特别注意。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

开漏输出? LPC2138? IO设置?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈