打印

大家是如何锁存IO口状态,谢谢!

[复制链接]
5962|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyboy|  楼主 | 2009-5-26 14:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用到锁存器,连接如下:

锁存器的OE接地(低电平有效),单片机的IO口经过反相器接到锁存器的输入口,另外用单片机的另外一个IO口也经过反相器接到LE锁存引脚上(低电平锁存),锁存器的输出引脚的状态在上电后的状态是什么?(这个电路实现了复位IO锁存,但上电的时候状态出了问题)

补充:单片机IO口上电是高电平

经过测试发现是高电平,可我希望上电后是低电平与IO初始化状态一致。如何改进?

我怀疑是上电锁存太快,没留给输入足够的建立时间导致,我在LE接一个上拉电阻,输出后来就变成低电平,但用示波器观察,输出端还是会有一段上升的高电平
 

相关帖子

沙发
lbx_00| | 2009-5-26 19:12 | 只看该作者

你这样不可靠

把单片机的RST的信号(你外围应该有为单片机复位的信号源)参与到锁存器的初始负位中去,也就是用逻辑门把RST信号和你现在用的那个I/O有机的结合,使RST为高时(我认为单片机高电平复位),无论I/O如何,对LE输出高电平,
当RST为低时,LE听从I/O的指挥。

使用特权

评论回复
板凳
ayb_ice| | 2009-5-27 21:21 | 只看该作者

IC?

使用特权

评论回复
地板
NE5532| | 2009-5-28 09:30 | 只看该作者

没看懂你到底想干啥

OE这些都是总线时序,为啥要去干预呢?像自己给自己动手术的感觉。

使用特权

评论回复
5
zyboy|  楼主 | 2009-5-28 11:36 | 只看该作者

就是希望CPU复位时IO输出状态保持不变呀

我用IO口控制外围的一些设备,由于单片机复位的时候,IO会恢复高电平,这样会改变对外围设备的控制。所以希望在IO口后面加个锁存器保持IO口状态,这样复位后,这样对外围的控制就可以保持不变。

我采用的是74HC573,OE如果不控制的话,如何可以实现?对芯片的总线控制不是经常干的事?只是由于时序考虑的不好,建立时间和保持时间等等控制的不好,导致一些中间或未知状态!

使用特权

评论回复
6
NE5532| | 2009-5-28 16:24 | 只看该作者

你的设计思想有问题

复位状态影响了你的驱动电路,那你的驱动电路极性就应该做出修改,使得复位多长时间,驱动电路都不会误动作。很简单的一个问题,被你弄复杂了。

使用特权

评论回复
7
zyboy|  楼主 | 2009-5-28 17:21 | 只看该作者

那你说如何设计呀?谢谢

 我的设计要求很简单,通过一个IO口控制设备,上电的时候是希望是低电平。另外希望复位后IO的状态保持(比如我在设备运行期间设置了IO口为高电平,我希望复位后还是高电平,但断电后上电我希望恢复低电平)

 2楼的是个好建议!,谢了。


使用特权

评论回复
8
dengm| | 2009-5-28 17:27 | 只看该作者

上电控制....电阻/电容/2极管



      Px.x ---+---- 74hc14 --- LE OF 74hc573
              |
              |
              +---|>|----+----10K ---VCC
                         |
                        -+- +
                        -+-  10uf
                         |
                         地

使用特权

评论回复
评论
oldzhang 2015-10-8 20:10 回复TA
用文本 -|>|-代表二极管,妙 
9
zyboy|  楼主 | 2009-5-28 17:38 | 只看该作者

楼上的画的没看懂晕!

能否详细描述一下,谢谢

使用特权

评论回复
10
dengm| | 2009-5-28 17:44 | 只看该作者

re

第一行 是你的原电路, 
电阻/电容/2极管 是后加的

使用特权

评论回复
11
zyboy|  楼主 | 2009-5-28 17:50 | 只看该作者

是不是利用电容延长了IO口由低到高的上升时间?我先也是想增加一个硬件延时,不过好像还是会有中间状态出现,不过,谢谢了

使用特权

评论回复
12
NE5532| | 2009-5-28 19:10 | 只看该作者

2楼的时序要控制好,否则端口先变高就麻烦了。

建议楼主用一个下降沿锁存的锁存器来做。用一根端口来做控制I/O输出,另外一根用来做锁存信号,每一次变化端口状态,都通过锁存器来做,复位以后就可以保持原来的状态了。

至于要区分是上电复位还是外部手动复位,可以看单片机有没有提供这个状态标志,PIC和AVR都有,程序检测一下,是上电复位,就把端口状态初始化为低就可以了。

使用特权

评论回复
13
zyboy|  楼主 | 2009-5-28 19:48 | 只看该作者

楼上的倒提醒我了!哈哈

不用锁存器,用触发器如何?
先回忆一下哈
锁存器是应该都是电平触发的,没听过边沿触发的。

记得有人说过,在FPAG中能用触发器绝不用锁存器,果然有道理!锁存器还会带来毛刺问题。

一点想法
如果能保证数据早于控制信号的情况下,用锁存器
否则,最好用触发器
复位的时候,显然无法保证,输出状态就会有问题。

这是我瞎想的,请大侠指教,谢谢!

使用特权

评论回复
14
NE5532| | 2009-5-28 21:53 | 只看该作者

你无法保证哪个信号先出现。

用边沿来做应该是比较稳妥的了。我是没查具体的型号,不过只知道用边沿这个理儿,剩下的就靠楼主自己了,嘿嘿。

使用特权

评论回复
15
41dean| | 2009-5-29 16:15 | 只看该作者

同意2楼的思路

因为你这个具有2个不同的复位想法,与通断电相关、与复位有关等,你把这几个因素综合考虑应该就可以,只是个人想法,不一定正确

使用特权

评论回复
16
ljs33200| | 2015-3-16 11:11 | 只看该作者
楼主 请问你这个问题是否解决了?
我的设计要求很简单,通过一个IO口控制设备,上电的时候是希望是低电平。另外希望复位后IO的状态保持(比如我在设备运行期间设置了IO口为高电平,我希望复位后还是高电平,但断电后上电我希望恢复低电平)

我现在也想做这个功能,求指教,万分感谢

使用特权

评论回复
17
ansi| | 2015-10-8 16:59 | 只看该作者
74HC573尺寸有点大,PCF8574TS 小一点, 端口扩展及IO口复位锁存实现,就是是IIC总线接口的,不是IO控制的,稍显不便。

使用特权

评论回复
18
oldzhang| | 2015-10-8 20:03 | 只看该作者
本帖最后由 oldzhang 于 2015-10-8 20:21 编辑
就是希望CPU复位时IO输出状态保持不变呀

而复位时IO会变,你的IO控制OE和LE当然会变了呀。
可以考虑用2根IO的某种逻辑关系去驱动锁存器的LE,而这种逻辑关系在复位时(IO全高)是无效的。
而OE接地就行。因为复位时,IO的电平会同时变高,而你在使用LE完后,把2根IO都变高。


使用特权

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

本版积分规则

101

主题

356

帖子

0

粉丝