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

2008-12-9 00:23 5165 1 1 分类: MCU/ 嵌入式

问题:


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,这只是理论上的,考虑动态电阻,有些芯片可能


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


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


解决。


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


 

文章评论0条评论)

登录后参与讨论
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
我要评论
0
1
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /2 下一条