用2812的数据线和地址线控制开关量遇到麻烦

2019-07-16 21:14发布

1.jpg

tica, SimSun, sans-serif, Hei">大家好,我有个小电路调了好几天,头疼死了,求帮看看,电路如上图,实际应用时在SXD0—SXD7处加了上拉电阻。我是利用2812的地址总线做片选信号,地址是0xc0002,然后用数据线输出电平控制LED灯,主要是想试下这个功能,我有好多I/O口要扩展,但上面电路的问题是,循环执行*(int *)0xc0002 = 0x000f;这个语句时可以正常点亮指示灯,但就是不能把状态在74CHT373中锁存住。
我单独用PWM1和PWM2做I/O口调试了74CHT373,GpioDataRegs.GPASET.bit.GPIOA1=1; (让373的LE从高电平变为低电平)  GpioDataRegs.GPACLEAR.bit.GPIOA0=1; (让2812的数据总线XD0从高电平变低电平) 用这两个语句就可以正常锁存数据,但反过来就锁存不了。

2.jpg

后来我理解为2812地址线译码后的控制信号LE改变时,保持时间内D值已经改变了才导致不能锁存。
谁有什么办法能帮我看看到底怎么解决,是我硬件上出了问题还是软件上,搞了好几天,烦躁的要命,谁快帮帮我吧,万分感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
assingle
1楼-- · 2019-07-16 21:42
本帖最后由 gk320830 于 2015-3-9 19:34 编辑

这个必须要在数据线数据改变之前,加载373的锁存信号,用总线的那种方式,你可以参考所用器件手册中的总线读写控制时序。你自己要求的那种时序,看看用2812可以满足不可以。
我在做个类似,数据要锁存的项目,因为看过2812的总线时序不可直接满足,所以用I/O口加电平转换芯片另外做时序代替了。你要是想人为改变这个时序的话,在数据总线上加一个延时芯片,用同向驱动器就可以了。请注意看数据手册。
建议使用74ALVC244(3.3V)试试,使数据线上数据(单单就这个部分,数据线到373前段),固定延时15NS左右,这个部分的问题就解决了。
具体做法是割掉现在到373的数据线,跳线到244,244输出再到373输入端。

一周热门 更多>