4423|6

31

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

DSP 5509A蛋疼的问题!!! [复制链接]

10芯积分
本帖最后由 YXQWXN 于 2014-5-1 17:47 编辑最近学习EMIF_SDRAM,虽然已经成功,但是其中出现的问题是在是令我难以理解和解释,希望各位同僚能够抛砖引玉。

现在是全局定义。
错误的原因就是三个定义的位置,datacount是将0到1000个数字写入到SDRAM的一个变量,databuffer数组是用来接受从SDRAM中读取的数据的,剩下的两个,一个是SDRAM的首地址,一个是尾地址。
一、现在是正确的情况,运行之后,error=0,标志位i=1;


二、当把定义位置1、2调换以后


运行之后就不能正确的读取SDRAM中的数据了error=3(说明有三次读取的数据有错误),i=2


三、因为这三个的定义我只是在主函数中使用,所以我便将这三个定义转移到了main函数中,作为局部定义使用,同样也会出现和二一样的错误。


求解啊!!!

下面是我的程序:
# include "csl.h"
# include "csl_pll.h"
# include "csl_emif.h"
# include "csl_chip.h"
# include "stdio.h"
# include "csl_gpio.h"


unsigned int datacount=0;
int databuffer[1000]={0};
int *souraddr,*deminaddr;




PLL_Config PLL_SETTING={
        0,
        1,
        6,
        0
};


EMIF_Config EMIF_SETTING={
                  0x221,
                  0xFFFF,


                  0x3FFF,
                  0xFFFF,
                  0x00FF,


                  0x3FFF,
                  0xFFFF,
                  0x00FF,


                  0x1FFF,
                  0xFFFF,
                  0x00FF,


                  0x1FFF,
                  0xFFFF,
                  0x00FF,


                  0x2911,
                  0x0410,
                  0x07FF,
                  0x0131
};


void main ()
{


        unsigned int error=0;
        int i=0;


        CSL_init ();
        CHIP_RSET (XBSR,0X0A01);
        PLL_config (&PLL_SETTING);
        EMIF_config (&EMIF_SETTING);


        souraddr=(int*)0x40000;
        deminaddr=(int *)0x41000;
        while (souraddr
        {
                *souraddr++=datacount;
                datacount++;
        }


        souraddr=(int *)0x40000;
        datacount=0;
        while (souraddr
        {
                databuffer[datacount++]=*souraddr++;
                if (databuffer[datacount-1]!=(datacount-1))
                {
                        error++;
                }
        }
        if (error==0)
        {
                GPIO_RSET(IODIR,0XFF);
                GPIO_RSET(IODATA,0X80);
                i=1;
        }
        else
        {
                GPIO_RSET(IODIR,0XFF);
                GPIO_RSET(IODATA,0X00);
                i=2;
        }
        while (1);
}

最新回复

想问一下楼主,我刚开始学习DSP5509,用的是CCS5.4 例程我只有CCS3.3的,转化成CCS5.4工程,头文件会显示unresolved inclusion,build后有一个warning: Invalid project path: Include path not found (E:\Program Files\DSP\C5500\csl\include).        codec                不知道是不是因为我没有加载库,具体怎么加载库?   详情 回复 发表于 2014-12-23 15:41
点赞 关注
 

回复
举报

368

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
原因不一定在这里,也许你按第一种定义运行多次后也会得到这样的答案

点评

每种定义我都试了很多次了。主要是1号定义和2号定义的位置,这两位置一旦换过来就不行了,但是保持1号和2号定义的顺序不变,即使放在3号定义的后面都是没有关系的,就是3号定义放在它们中间也是正确的,所以这个问题  详情 回复 发表于 2014-5-9 12:17
个人签名zhouyuannian#126.com(#换成@)有问题交流
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
lrz123 发表于 2014-5-8 22:33
原因不一定在这里,也许你按第一种定义运行多次后也会得到这样的答案

每种定义我都试了很多次了。主要是1号定义和2号定义的位置,这两位置一旦换过来就不行了,但是保持1号和2号定义的顺序不变,即使放在3号定义的后面都是没有关系的,就是3号定义放在它们中间也是正确的,所以这个问题越来越想不通了。软件问题(CCS5.5)?,cmd的问题?
 
 
 

回复

368

帖子

0

TA的资源

纯净的硅(初级)

4
 
你的程序中有几个问题:
1、0x4000是什么意思?databuffer的地址?如果是这样的话你反过来定义肯定就不再是databuffer了
2、(int*)0x41000,并不是指向databuffer+1000的位置

点评

0X4000是SDRAM的地址,是首地址,而0x41000是存放数据的最后一位地址,用的是souraddr,deminaddr表示,databuffer是用来存放从SDRAM中读取出来的数据的,然后将读取出来的数据与放进去的数据进行比对,如果有数据不  详情 回复 发表于 2014-5-11 11:01
个人签名zhouyuannian#126.com(#换成@)有问题交流
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

5
 
lrz123 发表于 2014-5-9 19:57
你的程序中有几个问题:
1、0x4000是什么意思?databuffer的地址?如果是这样的话你反过来定义肯定就不再 ...

0X4000是SDRAM的地址,是首地址,而0x41000是存放数据的最后一位地址,用的是souraddr,deminaddr表示,databuffer是用来存放从SDRAM中读取出来的数据的,然后将读取出来的数据与放进去的数据进行比对,如果有数据不对error就会自增1.
 
 
 

回复

31

帖子

0

TA的资源

一粒金砂(中级)

6
 
这个蛋疼的问题在今天终于给完成了。主要问题是这个样子的。
地址是从0x40000到0x41000,总共放的数据是4096个,而我只定义了1000个,明显是放不下的,因此导致的了错误。
另外这个问题纠正以后出现了一个新的问题,就是这三个定义不能放在主函数里面,我仿真了好几次都是有错误的,后来我将这三个定义的前面加了一个static(主要是那个数组),将它们定义为静态的,居然来没有问题了。我想了想觉得无论是定义静态的还是动态的都不应该错,后来我做了很多次的实验,我猜想是因为仿真的缘故,如果直接下载到芯片里面进行运行的话动态和静态都应该是没有问题的。如果路过有知道的话望指导一二。
 
 
 

回复

13

帖子

0

TA的资源

一粒金砂(中级)

7
 
想问一下楼主,我刚开始学习DSP5509,用的是CCS5.4
例程我只有CCS3.3的,转化成CCS5.4工程,头文件会显示unresolved inclusion,build后有一个warning:
Invalid project path: Include path not found (E:\Program Files\DSP\C5500\csl\include).        codec               
不知道是不是因为我没有加载库,具体怎么加载库?
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表