7024|26

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

奇怪问题?!求助!!! [复制链接]

系统使用710+IS61lv25616
当写片外RAM(IS61lv25616)时发现和PC值(程序所在地址)相对应的那部分RAM空间数值也同时改变了!!吧知道如何解决,请高手分析~~~
如图: 
此帖出自stm32/stm8论坛

最新回复

                                 原硬件电路不用改,换个低速的RAM,61lv25616-10ti(速度10ns)换成cy62157(45ns)也能得到正确的结果~!!!   详情 回复 发表于 2008-6-16 17:54
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

如下

原程序如下:
        
     pProgram = (u16 *)0x62000000;//RAMLIMIT;
        for(i=0;i<0x30000;i++)
        {
         *(pProgram++) = 0;

        }
     pProgram = (u16 *)0x62000000;//RAMLIMIT;
        for(i=0;i<0x30000;i++)
        {
         *(pProgram++) = (u16)i;

        }

片外RAM基地址为0x62000000,程序先将0x62000000-0x62030000清0 ,再写入0-ffff的数据,发现当执行*(pProgram++) = (u16)i;时,pProgram对应地址的数据更改成功,该指令对应程序空间地址(0x40009b0),同时0x620009b0空间数据也改变(数值相同),每次都变!如上图!!
强人 前辈 帮忙分析一下原因啊!!
搞了几天了也没个头绪!!!
此帖出自stm32/stm8论坛
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

查查变量分配的地址

可能这个0x620009b0刚好是分配给变量i的地址,而9B0刚好是一个巧合的地址。

请注意:2楼程序的前半段不是仅仅清除0x62000000-0x62030000,而是对0x62000000-0x62060000进行了操作。这是因为pProgram是一个u16的指针,pProgram++实际是增量2,0x400009a4那条指令就说明了这一点。你的访问有可能越界了!这是很危险的!
此帖出自stm32/stm8论坛
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 

谢谢香版主!

查了,程序中i被分配为寄存器变量(r0),应该吧时地址分配问题。因为发现RAM有变数问题才写了上面的测试程序,无需考虑越界的问题,而且也没有越界,在做清0操作时: *(pProgram++) = 0;   发现地址0x62000990 地址的数据也同时清0,而指令 *(pProgram++) = 0;对应的程序地址也就是0x40000990,觉的这不是巧合!!郁闷
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 

更新!

又改了测试程序:
        pProgram = (u16 *)0x62000000;//RAMLIMIT;
        for(i=0;i<0x30000;i++)
        {
         *pProgram = (u16)i;
        }
每次只向0x62000000地址写入数据,发现空间0x6200098c空间数据也跟着变!

理论上地址线应该一直为低,用示波器观察,发现在WR信号快结束时地址0x6200098c出现,导致0x62000000  0x6200098c的数据都变化!示波器波形没发贴上来~只能这么描述,不知道大家能否理解!也就是地址线本吧应该变化,而实际在那瞬间却变了~
使用的是ADS1.2编译的程序,不知道在使用片外RAM时 ADS以及程序设置上是否还要注意什么.程序上将Bank1设置为有效,16位宽度 7等待周期(RAM接Bank1)ADS将程序空间定义在RO base 0x40000000(片内FLASH) 变量RW base 0x20000000(片内RAM)。

香版主能否再帮我分析一下!!
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

6
 

请把线路图和配置程序贴出来

最好把示波器看到的波形也贴上来,这样便于分析。

另外,可以试试增加或减少等待周期。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 

贴图

                                 电路图:
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 

配置及程序

配置及程序:
EMI_Base_addr       EQU    0x6C000000; EMI base address
BCON0_off_addr      EQU    0x00      ; Bank 0 configuration register offset
BCON1_off_addr      EQU    0x04      ; Bank 1 configuration register offset
BCON2_off_addr      EQU    0x08      ; Bank 2 configuration register offset
BCON3_off_addr      EQU    0x0C      ; Bank 3 configuration register offset

EMI_ENABLE          EQU    0x8000
EMI_SIZE_16         EQU    0x0001

GPIO2_Base_addr     EQU    0xE0005000; GPIO2 base address
PC0_off_addr        EQU    0x00      ; Port Configuration Register 0 offset
PC1_off_addr        EQU    0x04      ; Port Configuration Register 1 offset
PC2_off_addr        EQU    0x08      ; Port Configuration Register 2 offset
PD_off_addr         EQU    0x0C      ; Port Data Register offset
 LDR     r0, =GPIO2_Base_addr      ; Configure P2.0 -> 7 in AF_PP 
        LDR     r2, [r0, #PC0_off_addr]
        ORR     r2, r2,#0x000000FF
        STR     r2, [r0, #PC0_off_addr]
        LDR     r2, [r0, #PC1_off_addr]
        ORR     r2, r2,#0x000000FF
        STR     r2, [r0, #PC1_off_addr]
        LDR     r2, [r0, #PC2_off_addr]
        ORR     r2, r2,#0x000000FF
        STR     r2, [r0, #PC2_off_addr]
        LDR     r0, =EMI_Base_addr
        LDR     r1, =0x18:OR:EMI_ENABLE:OR:EMI_SIZE_16
        STR     r1, [r0, #BCON1_off_addr] ; Enable bank 1 16-bit 7 
这段程序是在官方网站上下载的71x_init.s启动文件
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 

波形

                                 其中一根地址线A7 和WR的波形:
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 

请用示波器检查WE信号的产生

                                 从线路图上看,/WE是由/WR0和/WR1经一个与门(图中的D12D)产生,用示波器检查一下这三个信号的关系,我怀疑因为这个与门的延迟产生问题。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 

WR与WR0 WR1

WR0 WR1重合  和WR几乎没有延时
问题时地址线上应该没有信号才对!!
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

12
 

/WR0和/WR1的上升沿过后,地址线当然可以变化

11楼的图没有标尺,看不出什么,而且放大率不够。

/WE是由/WR0和/WR1经一个与门产生,无论如何它们之间会有延迟,只不过是延迟的大小而已。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 

??

  那这样吧知道软件上能部能解决!!
  硬件上不使用74hc08,使用什么可以代替呢??
我看很多应用电路外扩RAM都用这种设计,而且710开发板上也多使用这种电路


有没有使用这个电路成功的,进来说说看啊!
小弟谢了!@!
此帖出自stm32/stm8论坛
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

14
 

我在6楼建议你“可以试试增加或减少等待周期”

                                 有什么变化吗?
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

15
 

试了

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 

好像没什么效果啊!

                                 从1试到15了,都有错!哎~
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

17
 

11楼的波形,下面一行是WR0还是WR1?

我没有具体研究过这个时序,所以希望看到/WE、/WR0和/WR1这三个信号之间的关系才能判断你的问题。

还有11楼的波形上下两行是不是标反了?/WR0或/WR1不可能比/WE慢。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

18
 

没有反

                                 总线是16位的   写命令也是16位的,所以WR0 WR1同时有效。波形没有标反,图上看似有延时那是上升时间的缘故,我看了俩波形完全重叠!
此帖出自stm32/stm8论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

19
 

问题

只有执行写命令时地址线才有变化,执行其他命令时地址线却没有变化!
我的程序是存在片内的,运行程序应该和片外总线没有关系,,为什么他地址会变,而且只是在执行写命令时才有变化?
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

20
 

下面一行到底是WR0还是WR1?

两个波形完全重叠是不可能的,那个与门必定有延迟。

我刚查了一下这个74HC08的手册,它的传输延迟至少在20ns上下;对于50MHz的系统,20ns刚好是一个时钟周期。

请去掉这个74HC08,试试把/WR0或/WR1直接接到/WE上,看看有什么变化?


关于19楼的问题,只要不影响正常时序,信号线怎么变都可以,手册上也不对正常时序以外的信号时序做描述。
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表