打印
[ZLG-ARM]

LPC2220的BANK0扩有程序存储器,那么还能否将D0---D7用作GPIO?

[复制链接]
1637|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leon0001|  楼主 | 2008-5-7 15:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问,利用LPC2220,外扩了SST39VF1601,ISL25616AL,那么,利用D0--D7读取外部计数器的数值时,由于外部计数器没有地址,所以,必须用D0---D7当作GPIO,IN,来输入计数值。

那么,问题:当把D0----D7设为GPIO时,是不是影响了外部存储器SST39VF1601程序的读取,应为要在flash中调试或者运行?所以,由于外部BANK0接了flash,不能把D0----D7用作GPIO?

急!

相关帖子

沙发
wlq_9| | 2008-5-7 16:59 | 只看该作者

re

一般来说,总线是不能作为普通IO用的.
如果计数器上没有使能信号,计数器的输出会影响到你的总线.最好的办法是你把计数器的使能信号分配到没用到的地址上.

使用特权

评论回复
板凳
leon0001|  楼主 | 2008-5-8 09:09 | 只看该作者

具体是这样的

计数器用的是TI的SN74LV8154,使用了数据总线的D0---D7,另外,存储器上使用了数据总线的D0---D15.
所以,在读取计数器值时就有了以下问题:
(1)由于没有地址线连接到计数器,所以,对计数值的读取,没有地址可以操作。因此,在读计数器值时,必须首先设置PINSEL2,把D0--D7设置为GPIO,然后,利用GPIo读其进行读取。在读完后,再回复D0---D7为数据总线。说明:8154是双16位计数器,通过级联,作为了一个单32位计数器使用,其有8根数据线,通过4个控制端,分别控制其输出32位中的8位。
(2)如果通过修改PINSEL2,把D0---D7修改成GPIO,这样一来,岂不是外部存储器就不能用啦,而LPC2220没有内部存储器,程序放在外部BANK0的flash中,则这样一修改,程序就不能用啦,也就是不能读计数值啦。

请问,我的理解对么?
麻烦的是,当时考虑不周,板子都弄好啦,也不好修改啦。

使用特权

评论回复
地板
wlq_9| | 2008-5-8 09:18 | 只看该作者

没有使能信号的话

自己在外面加个带使能的缓冲即可.如果直接挂总线上,计数器输出会影响到总线的信号.例如计数器输出0x00,而RAM读出来的数据是0xFFFF,结果就会被强制拉成0xFF00,程序根本就没有办法执行.

使用特权

评论回复
5
leon0001|  楼主 | 2008-5-9 09:39 | 只看该作者

多谢啦,wlq_9

现在我是这样做的,
我把板子上D0---D7断开,然后,让计数器输出接D16---D23,
由于存储器只用了D0--D15,所以,把D16---D23用作GPIO,输入,来读取计数器输出值。
但现在又出现问题啦:
   计数器设置良好,我查看了它的信号,良好。
   但对其读值时,始终为0;
   然后,我用示波器查看计数器某个输出引脚信号情况,频率始终为8.3K,在输入几百k时,输出电压高电平为5.0以上至5.6,在200k左右时,高电平才2.2v,不知道这是为什么?
   读数据一直为0.

使用特权

评论回复
6
wlq_9| | 2008-5-12 09:23 | 只看该作者

先置输出为1

再置为输入读数据.注意总线的配置寄存器PINSEL.还有ARM的输入电平别高于5V,可能会烧引脚,ARM脚接5V电平时最好接一电阻控制一下电流.

使用特权

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

本版积分规则

61

主题

139

帖子

0

粉丝