搜索
bottom↓
回复: 10

M64扩展RAM后,如何使得RAM芯片进入省电模式

[复制链接]

出0入0汤圆

发表于 2010-3-11 22:36:22 | 显示全部楼层 |阅读模式
马老师好,请教一个问题:

我使用M64+62LV1024构成扩展RAM的系统,62LV1024有CE1和CE2两个使能引脚,当CE1接低和CE2接高时RAM进入掉电模式。

我的问题是:
1. 如果我采用M64的IO口来控制CE1和CE2,那么刚上电时RAM可能没使能,程序全部跑飞;

2. 如果我电路上固定将CE1接高CE2接低,那么M64正常工作,但RAM芯片永远都工作在30MA的功耗下,没法休眠;

3. 另外,就算我用IO口控制CE1和CE2了,那么工作也不敢将RAM休眠啊。。否则堆栈里的数据没了,程序不又跑飞了

难道扩展RAM芯片只能一直工作?我糊涂了,请马老师及各位指点。

出0入0汤圆

 楼主| 发表于 2010-3-12 08:10:31 | 显示全部楼层
1. 如果我采用M64的IO口来控制CE1和CE2,那么刚上电时RAM可能没使能,程序全部跑飞;  
  -- 这个问题解决了,我在BOOT LOADER中设置了IO口输出电平。

2. 如果我电路上固定将CE1接高CE2接低,那么M64正常工作,但RAM芯片永远都工作在30MA的功耗下,没法休眠;
  -- 这个问题不存在了

3. 另外,就算我用IO口控制CE1和CE2了,那么工作也不敢将RAM休眠啊。。否则堆栈里的数据没了,程序不又跑飞了  
-- 这个还不知道,难道RAM芯片只能一直工作着?

出0入0汤圆

 楼主| 发表于 2010-3-12 21:49:13 | 显示全部楼层
没人回,自己顶着等

出0入0汤圆

发表于 2010-3-16 17:05:38 | 显示全部楼层
既然M64让SRAM休眠自己能跑,干嘛还要SRAM呢?

出0入0汤圆

 楼主| 发表于 2010-3-16 20:32:08 | 显示全部楼层
汗,可能我一直没说清。我扩展了RAM,但发现这个RAM芯片不能休眠,因为一休眠M64就跑飞。。。

出0入0汤圆

发表于 2010-3-17 00:37:15 | 显示全部楼层
关键是堆棧不要放在SRAM中,放在CPU的RAM中.

出0入0汤圆

 楼主| 发表于 2010-3-21 17:54:21 | 显示全部楼层
CVAVR中好像不能指定数据放在内部RAM还是外部RAM吧?。。。。。

出0入0汤圆

发表于 2010-3-22 12:44:52 | 显示全部楼层
1。首先我认为这个系统的设计方案本身是不太合理的。从你使用62LV1024分析,外扩RAM为128K(不知道为什么需要这样大的RAM),而M64只是直接支持到64K的RAM。另外你的系统还需要考虑休眠,估计是手持系统。如果我的话,可能考虑直接使用一片STM32了,它本身是3V系统供电,片内有64KRAM(应该是片内支持RAM最多的单片控制器芯片了),有很多的电源控制方式,应该是能满足需要的。

2。LZ的这个系统,设计系统软件比较麻烦,需要饶许多圈子。我没设计过这样的系统,只能提出可能尝试的方法。
   CVAVR以及其它的AVR开发系统,缺省堆栈一般是建立在内部RAM的最高端,除非你在初始化(自己写START代码)时将堆栈设置到外部RAM。
   A/ 如果使用内部RAM的最高端为缺省堆栈方式,那么需要合理的进行内存分配,将大部分的变量分配在外部,而将重要的,比如中断,尤其是休眠唤醒中断中使用的变量分配在内部的RAM中。CVAVR是支持指定数据放在内部RAM还是外部RAM的,但这样做还是非常不方便,容易出问题。下面是CVAVR中的支持例子:

Global variables can be stored at specific SRAM locations at design-time using the @ operator.
Example:

/* the integer variable "a" is stored
   in SRAM at address 80h */
int a @0x80;

/* the structure "alfa" is stored
   in SRAM at address 90h */
struct x {
         int a;
         char c;
         } alfa @0x90;

  B/ 将堆栈放在外部的RAM中更加不可靠。首先M64只支持64K空间,你使用128KRAM,就只能分页使用。那么堆栈在哪个页?这个如何控制?如果你只使用64KRAM空间,堆栈是可以放在外部RAM中的(自己编写START代码),但如何保证外部RAM先于M64从休眠中被唤醒?因为M64被唤醒中断将马上使用堆栈的。


所以我认为LZ的系统硬件设计是不合理的,要实现所想象的要求是非常困难的。

最后问一下,你的系统一定需要128K的RAM吗?要知道在IBM-PC之前推出的“苹果”微机,也只有64K的RAM。

如果你的系统需要操作SD卡、点阵液晶显示图象等,还是考虑使用一片32位的“单片机”。使用8位MCU肯定是力不从心的,整体价格也不会比使用32位的便宜。

出0入0汤圆

 楼主| 发表于 2010-3-24 16:46:57 | 显示全部楼层
谢谢马老师。

正如马老师所说,这个设计有点不合理。我的系统需要读取图像然后写入TF卡,因为运算量不大且实时性要求不高,所以采用8位的M64来控制。因为图像需要占用40k左右的RAM,所以外扩了RAM,由于当时供应商刚好有批128K库存,就用M64+62lv1024这个不合理的架构了。其中我没有使用分页机制,也就是说只使用了128k的RAM中的低64K(这也满足了我的要求)。

硬件也才是第一版,做产品确实很多时候很无奈,得保证速度,所以设计上的缺陷只能第二版改了。

再次谢谢马老师的回复,让我学到了很多。

出0入0汤圆

发表于 2010-3-24 23:44:51 | 显示全部楼层
M64+62lv1024 比一片STM32就贵了。

如果你8位AVR基础确实还可以的话,建议用STM32完成这个系统。学2-3个星期就能上手。

出0入0汤圆

 楼主| 发表于 2010-3-25 12:01:54 | 显示全部楼层
是的,价格确实贵了(还要加上锁存器的成本),而且占用了更多的线路板空间。等下一版本的硬件我会按照马老师的建议修改。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 09:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表