使用 SPBA01B 扩展器的几点心得.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

使用SPBA01B扩展器的几点心得

第一次玩SPBA01B,控制一片28F128J3,结果被它搅得头昏脑胀,差点歇菜,准备彻底放弃它(被客户催的屁滚尿流!!!),改用74LVC374锁存地址和控制信号。但是PCB板已经画好,重新设计来不及了,只好到超市买了一堆雪糕和汽水,彻底降温后静下心来慢慢研究,原来掌握了它的老底还是蛮好用的。其实几个关键点掌握之后就好控制了:

CI是做什么的?Cascadeinfordaisychain(官方说法:级联XX?找不到合适的词汇形容它)

其实它类似于复位信号,你的设计不使用级联工作方式的话,它就是复位信号,可以和系统上其它外设的复位信号接在一起(低有效)。你的系统一加电,首先要对系统初始化,外围扩展器件也要一一复位初始化,这时候,给它一个复位就行了。

如果用一个IO口来控制CI,IO得长期保持高电平。复位的时候设为低电平,再设为高电平并且后面一直保持着。SPBA01B在CI变低一瞬间,开始复位初始化,在CI变高的时候恢复正常。

复位之后,设置它的ID号,就是要给它一个名份,在级联方式下,要靠ID号来识别第几个SPBA01B被选中了。就像一夫多妻制下的“大太太”、“二姨太”、“三姨太”等等,得有个辈分头衔的顺序,一个压着一个,免得你争我夺乱了套。它是在SPBA01B的P_0DH_BMIVolumeID($000D)寄存器内定义的,通过写入指令来确定。

单个不级联的SPBA01B是不是就默认自己是老大呢?错!!!你还是得给它写一个ID号,不然它拒绝工作。呵呵!没名份它是不干的(多现实啊!天下有多少个傻女人为心爱的男人默默奉献一切不计名份,结果男人发达之后,嫌她人老珠黄一脚踹!无耻啊!我们一定要做有责任心的好男人,但我不反对多交几个女朋友!!!)。

配置工作方式,它必须要明确知道自己应该做啥工作,是IO扩展呢?还是访问存储器?这个要设置P

_23H_BEXConfig($0023)中的各个相关位,参考一下DataSheet吧,写得挺细的呢!

上面三项工作做完之后,它就可以正式开始工作了。注意啊:上面三项没做好的话,它甩都不甩你。如果SPBA01B不睬你,那就要考虑一下上面三个步骤哪里出了差错。

它是如何工作的呢?(就是工作原理啊,明白了吧!)

首先,它的肚量只有64K“单元”(字节,为何不直接用字节描述,而是用单元呢?后面慢慢道来。),这是它内部自己用的地址空间(地址线A0-A15,分为高低两个字节分别写入对应的锁存器),和外部扩展用于访问存储器的地址线A0-A21不是一回事,别混淆了。

然后它又把自己的64K单元空间分成几段,每段的用途各不相同:

第一段:0x00-0x31是它的寄存器段,所有的控制寄存器全部在这里呢;第二段:0x4000-0x7FFF,16K单元的范围映射到外部访问的存储器上;

第三段:0x8000-0xBFFF,又是16K单元映射到外部的存储器上;你可能好奇,干嘛不和上面的16K

单元合起来统称32K单元呢,呵呵!还是在后面再告诉你吧。

第四段:0xC000-0xFFFF,据称是给RAM留的,它的例子里是这么讲的,但现在是空的,啥用没有!

所以,你通过访问它不同的地址空间来切换它的功能。当你设定的地址是访问它的0x00-0x31单元,就肯定是对它内部寄存器操作了,它的数据线就和CPU的总线挂在一起了。而它的外部存储器扩展信号,像片选CE#、读信号RE#啊等等全部为高,扩展的存储器不能被访问。

当你访问0x4000-0xBFFF单元时,就会在它的存储器控制引脚上产生对应的CE#,OE#或WE#等信号,这时候就该外部的存储器工作了。而SPBA01B自己的数据线会彻底悬浮,和CPU数据线脱离。

按照DataSheet的描述,它最大只能扩展访问4MByte,我扩展的28F128J3却有16MByte,怎么做到的呢?呵呵!现在到解释“单元”这个疑问的时候了。

虽然SPBA01B内部是8bit结构的,但由于SPEC061A是16bit单片机,而且SPBA01B只管送出扩展的地址线和控制线,和数据线却无关,所以我把存储器的D0-D15数据线挂到单片机的IOA0-IOA15上,这样访问的数据量大了一倍,可以访问到8MByte,然后SPBA01B在4MByte扩展模式下还多了一个IO口可以用,我用它作为最高的一根地址线,最终访问量达到了16MByte,所以,我前面的描述使用了“单元”,而不是“字节”。

DataSheet上是这样说的,外部存储器被分为32KB为一段,映射到SP

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档