您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]BF531异步空间疑问
本帖共有988个阅读者
发表帖子 发表投票 回复主题
[求助]BF531异步空间疑问
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]BF531异步空间疑问


上传的图片
  20111158561847.jpg [ 35.91 KB 759×450 ] (缩略时请点击查看原图)

 

如上图,BF531需外接一个4MB的FLASH,同时还需另外的4组片选信号。而BF531的4个外部异步空间AMS0-AMS3刚好只有4MB。如果按下面的逻辑
FLASH_A19 = AMS0 & AMS2
FLASH_A20 = AMS0 & AMS1
FLASH_WE  = AWE
FLASH_CE  = AMS0 & AMS1 & AMS2 & AMS3
就刚好可以访问FLASH的4MB空间。但是这时无法对另外的4组片选信号进行控制。
请问,如何利用BF531的A17,A18,A19,#AOE,#AWE,#ARE进行操作呢?如果用AMS3和A17,A18,A19进行译码
AMS3  A19  A18  A17    CS      对应BF531空间
  0         1    1    1         CS0     0x203E0000
  0         1    1    0         CS1     0x203C0000
  0         1    0    1         CS2     0x203A0000
  0         1    0    0         CS3     0x20380000
但是,这样译码时,FLASH高位空间就会被占用,同时,在访问这些空间时,如何知道访问的是FLASH的空间,还是外部片选CS0,CS1,CS2,CS3呢?谢谢各位了。



「该帖子被 blackfin 在 2011-11-05 09:06:09 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/11/5 9:04:28
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

bf531只有4MB空间,如果接4MBflash,所有地址空间都被占用,即使再译码接外设,其外设的地址空间也是位于flash空间内的,你可以找一个IO,连接flash OE管脚,访问外设时,将IO拉高,禁止flash工作,当IO拉低时,进制所有外设工作。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/11/5 22:32:39
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

哦,那如果我只能用接入CPLD的这几根DSP引脚进行译码,实现对四组片选和FLASH尽可能多的访问有没可能,还是说要去掉AMS3当作其余外部片选控制(也就是说FLASH_CE  = AMS0 & AMS1 & AMS2 直接少掉对FLASH 1MB的访问能力,以防止在访问四组片选时,分不清访问的是FLASH的空间还是片选)?

还有一个问题,我看到有人外扩FLASH 8MB时,将BF531的A1-A19接FLASH的A1-A19,A20和A21跟上面一样通过AMS0-AMS3译码,而将FLASH的A0空着。这是什么原理?这样访问的第一个地址是不是0x000003,第二个为0x000007.....即每次访问跳过4个空间,但这样要如果存储这4个空间呢?


这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/11/7 8:43:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

应该将AMS3留出控制你的外设,以防止与flash地址冲突。

EBIU的空间大小决定了不可能将flash接到8MB,除非有其他控制线参与,如置高为选择前4MB,置低为后4MB,分块处理。

blackfin的数据线为16bit,所以在访问0地址时,会将地址1的数据读出,所以你说的那种8MB的接法,实际上是将2,3地址数据空除,实际有效空间仍为4MB。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/11/7 11:08:41
blackfin(论坛游民)
blackfin
头衔:社区公民
帮派:无帮无派
帖数:114
金钱:1105
积分:153
注册时间:2011/6/10
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
哦,谢谢!不过版主在二楼的回答中,应该是用IO控制FLASH_CE而不是FLASH_OE吧?因为FLASH_OE只是控制输出(取读取FLASH数据)。对么?

这家伙很懒,什么也没有留下!
等级:论坛游民 参考IP地址:*.*.*.*
2011/11/11 14:20:31
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

对,是FLASH_CE。如果使用IO的话,需要注意默认情况下,IO选择的是FLASH,避免上电瞬间IO指向外设,导致flash读取代码错误。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/11/15 20:33:19
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154455 Call, 1 Queries, Processed in 0.015625 second(s),