[ZLG-ARM] lpc2200开发板 bank2 设定使用问题。

[复制链接]
2249|5
 楼主| wohuazhen 发表于 2008-1-15 11:48 | 显示全部楼层 |阅读模式
我想用bank2来访问外部I/O,我直接在开发板的工程模板里修改了<br />LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=BCFG2<br />LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0x0000fbef<br />STR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;[R0]<br /><br />PINSEL2的设定不需要修改。<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R0,&nbsp;=PINSEL2<br />&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;:DEF:&nbsp;EN_CRP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0x0f814910<br />&nbsp;&nbsp;&nbsp;&nbsp;ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R1,&nbsp;=0x0f814914<br />&nbsp;&nbsp;&nbsp;&nbsp;ENDIF<br />设定位8位的外部存储器访问。<br />程序里这样写的。<br />volatile&nbsp;uint8&nbsp;*ip;<br />__asm{nop;}//1<br />ip=(volatile&nbsp;uint8&nbsp;*)(0x82000fff);//2<br />ip[0]=0x08;//3<br />但是在仿真的时候发现跳过了第二句话。外部led也没有变化。<br />请问我这样的设定有什么问题吗?
 楼主| wohuazhen 发表于 2008-1-15 16:42 | 显示全部楼层

smartARM2200中RBLE的问题

我刚学ARM7不久。用的是smartARM2200的板子。好处是有完整的工程模板,需要修改的很少。如果自己写start.s,那很累,也不好搞。<br />上周刚把书上的例子都运行,看了看。<br />这周开始做点自己的东西。<br />先是用p1.16~p1.20做GPIO,做了一些串行的东西来显示数码管,控制一些器件。<br />接着打算用bank2来访问一下外部I/O。由于原来都是用51,做的都是8位的,所以设定为8bit的。设BCFG2的值为0x0000ffef,即RBLE设为0。但是发现可以读,不能写。用示波器查看发现没有写信号,但是有CS2的信号(写的时候)。后来将RBLE设为1。就可以读写了。<br />回头看看书,觉得有些困惑。书上讲8bit时RBLE为0;16/32bit时RBLE为1。<br />这是为什么呢?
 楼主| wohuazhen 发表于 2008-1-15 16:44 | 显示全部楼层

设BCFG2的值为0x0000fbef,即RBLE设为0。

设BCFG2的值为0x0000fbef,即RBLE设为0。
zlgarm 发表于 2008-1-15 17:06 | 显示全部楼层

回复如下:

wohuazhen,您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;在LPC2200系列ARM中,为了适应外部存储器组的宽度和类型,EMC提供了一组字节选择信号,要实现这些功能,需要对相应存储器配置寄存器中的RBLE位进行设定。<br />&nbsp;&nbsp;&nbsp;&nbsp;对外部存储器组进行写访问时,RBLE位决定WE信号是否有效;<br />&nbsp;&nbsp;&nbsp;&nbsp;对外部存储器组进行读访问时,RBLE位决定BLSn信号是否有效。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_wzj
 楼主| wohuazhen 发表于 2008-1-16 09:01 | 显示全部楼层

不理解

<font color=#1D15FF><U>如果开发板存储器是16位宽度的,那么必须将RBLE设置为1,才能进行正常读写。</U></font><br /><font color=#1D15FF>smartARM2200上bank0和bank1是16位的,但bank2虽是16位的接口,可是我把它连接到我的cpld上,仅连接了D0~D7,A12~A15,nWE,nOE,CS2,GND,3.3V,然后对8位的74377进行操作,可是发现写不了。我把RBLE设为1,就可以了。但是这个时候我设的MW仍是00啊。</font><br /><font color=#1D15FF>您指的是只要外部bank0指定了16位宽,那么bank2的RBLE就要设为1吗?没道理啊。</font>
zlgarm 发表于 2008-1-17 09:07 | 显示全部楼层

回复如下:

wohuazhen&nbsp;您好!<br /><br />&nbsp;&nbsp;&nbsp;1、如果您把LPC2200系列ARM的BLS0与cpld的WE信号连接就要把RBLE设置为0<br /><br />&nbsp;&nbsp;&nbsp;2、如果您把LPC2200系列ARM的WE与cpld的WE信号连接就要把RBLE设置为1<br /><br />&nbsp;&nbsp;&nbsp;总结:对外部存储器组进行写访问时,RBLE决定WE信号是否有效(低电平有效)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对外部存储器组进行读访问时,RBLE决定BLSn信号是否有效(低电平有效)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_wzj
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

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