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

[复制链接]
2625|5
 楼主| leon0001 发表于 2008-5-7 15:23 | 显示全部楼层 |阅读模式
请问,利用LPC2220,外扩了SST39VF1601,ISL25616AL,那么,利用D0--D7读取外部计数器的数值时,由于外部计数器没有地址,所以,必须用D0---D7当作GPIO,IN,来输入计数值。<br /><br />那么,问题:当把D0----D7设为GPIO时,是不是影响了外部存储器SST39VF1601程序的读取,应为要在flash中调试或者运行?所以,由于外部BANK0接了flash,不能把D0----D7用作GPIO?<br /><br />急!<br />
wlq_9 发表于 2008-5-7 16:59 | 显示全部楼层

re

一般来说,总线是不能作为普通IO用的.<br />如果计数器上没有使能信号,计数器的输出会影响到你的总线.最好的办法是你把计数器的使能信号分配到没用到的地址上.
 楼主| leon0001 发表于 2008-5-8 09:09 | 显示全部楼层

具体是这样的

计数器用的是TI的SN74LV8154,使用了数据总线的D0---D7,另外,存储器上使用了数据总线的D0---D15.<br />所以,在读取计数器值时就有了以下问题:<br />(1)由于没有地址线连接到计数器,所以,对计数值的读取,没有地址可以操作。因此,在读计数器值时,必须首先设置PINSEL2,把D0--D7设置为GPIO,然后,利用GPIo读其进行读取。在读完后,再回复D0---D7为数据总线。说明:8154是双16位计数器,通过级联,作为了一个单32位计数器使用,其有8根数据线,通过4个控制端,分别控制其输出32位中的8位。<br />(2)如果通过修改PINSEL2,把D0---D7修改成GPIO,这样一来,岂不是外部存储器就不能用啦,而LPC2220没有内部存储器,程序放在外部BANK0的flash中,则这样一修改,程序就不能用啦,也就是不能读计数值啦。<br /><br />请问,我的理解对么?<br />麻烦的是,当时考虑不周,板子都弄好啦,也不好修改啦。
wlq_9 发表于 2008-5-8 09:18 | 显示全部楼层

没有使能信号的话

自己在外面加个带使能的缓冲即可.如果直接挂总线上,计数器输出会影响到总线的信号.例如计数器输出0x00,而RAM读出来的数据是0xFFFF,结果就会被强制拉成0xFF00,程序根本就没有办法执行.
 楼主| leon0001 发表于 2008-5-9 09:39 | 显示全部楼层

多谢啦,wlq_9

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

先置输出为1

再置为输入读数据.注意总线的配置寄存器PINSEL.还有ARM的输入电平别高于5V,可能会烧引脚,ARM脚接5V电平时最好接一电阻控制一下电流.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

139

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部