打印

单片机外部存储器!

[复制链接]
3739|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
areshan|  楼主 | 2011-7-9 11:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机可以外扩存储器,但是一直没有搞明白,用movc,和movx就就可读外部的rom,和ram啦,那个读写的时序是执行movc,或movx时由单片机在总线管脚上自动产生的吗?用户是可以不用写驱动的吗?我猜是这样的,也不知道对不对,还希望各位给点意见!
那么这样说有的外扩ram,或rom,是不是都是标准的解法(和芯片有关),有没有人用io口控制(产生时序)读写rom,或ram啦?

相关帖子

沙发
areshan|  楼主 | 2011-7-9 11:29 | 只看该作者
ARM的那个外部总线接出来的rom,或ram,好像还要求由驱动!!!!!!按照芯片推荐解法,驱动好像也给你了!

使用特权

评论回复
板凳
lord_fan| | 2011-7-9 12:22 | 只看该作者
51中:movx movc 有硬件支持,确实不需要写时序的驱动。

用普通IO的还真没见过。

往ROM送地址,读出数据。 那读出的指令怎么放在指令寄存器上?

使用特权

评论回复
地板
shamodehuhuan| | 2011-7-9 12:34 | 只看该作者
额?51如果要扩展rom.ram,就是用GPIO啊

使用特权

评论回复
5
江陵龙少| | 2011-7-9 13:05 | 只看该作者
本帖最后由 江陵龙少 于 2011-7-9 13:07 编辑

这个问题的本质是单片机的3总线的时序问题,是这样的:
对于MOVC指令,访问的是程序存储器,用到了如下控制信号;
P2 ——送出高字节地址
P0——送出低字节地址,送入数据
ALE——锁存低8位地址
/PSEN——低电平选通外部ROM
这几个信号有严格的时序关系,由单片机自动产生相应的时序。
对于MOVX指令,用到了如下管脚:
P2
P0
ALE
/WR
/RD
同样,他们之间的时序关系由单片机自动产生。

至于用IO口模拟上面的时序,在一些场合也是有的,但是效率必定降低,效果也不一定好,
比如说,MOVX指令在2个机器周期的时间内就完成了数据读写,自己用IO口模拟肯定超过2个周期

使用特权

评论回复
6
ahgao| | 2011-7-9 13:20 | 只看该作者
理解这个问题需要对CPU寻址方法,RAM,ROM的结构的存取方法有了解才行。
对于普通静态RAM,只用地址线,数据线,读写和片选就可以访问。CPU的寻址机制和它是完全配合的,所以,不需要额外的驱动。
对于ROM,在只读时,和RAM类似。
对于FLASH,在只读时,和RAM类似。但如果要写,则需要在地址/数据线上输入命令,这个和CPU的寻址方法不是天然相配的,所以当需要写FLASH时,需要特殊的操作,也就是驱动。
对与(SDR, DDR)DRAM,由于数据需要刷新,而且内部的存储区不是任何时间都可以访问的,所以需要专用的内存控制器,CPU通过内存控制器的帮助从DRAM读写数据。所以,在使用DRAM之前,需要初始化内存控制器,这也算驱动。
对于任何串行的存储器,它的数据根本不在CPU的寻址空间里面,CPU通过对其固定的特殊接口(等效于RAM)操作才能访问数据。当然必须驱动。

实际上,现代CPU的寻址是非常多种多样的,即使是MCU,有些也有存储器管理单元,也是需要设置以后才能达工作或者达到最佳工作效能的。

任何存储器都是一个器件,只要用IO口模拟好的操作时序,当然可以读写。不过此时就和访问串行存储器类似。

使用特权

评论回复
7
areshan|  楼主 | 2011-7-9 22:12 | 只看该作者
谢谢江凌龙少,和ahgao,你们的解释很详细也很清楚,谢谢大家!

使用特权

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

本版积分规则

127

主题

728

帖子

0

粉丝