打印

开贴布道,免费提供28XX技术支持,申请此版斑竹

[复制链接]
4735|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mpuhome|  楼主 | 2009-4-21 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
mpuhome|  楼主 | 2009-4-21 09:30 | 只看该作者

建议废了这个版块

现在有了TI版,这个地方就是广告多些,没什么意义了

不过有问题还是继续

使用特权

评论回复
板凳
王紫豪| | 2009-4-21 20:24 | 只看该作者

不光TI 有dsp的

使用特权

评论回复
地板
iversonma| | 2009-4-21 20:52 | 只看该作者

adi的做的更少

其他的,基本都不叫DSP了

使用特权

评论回复
5
mpuhome|  楼主 | 2009-4-21 22:04 | 只看该作者

以前有个ADI版的

后来关了,估计是效果不好

使用特权

评论回复
6
tage| | 2009-4-24 14:54 | 只看该作者

我就有个2812

能不能给个最小系统电路图,能串口下载就可以了。。买不起仿真器。

使用特权

评论回复
7
snakeemail| | 2009-4-24 15:40 | 只看该作者

28系列不带外部ram的怎么仿真?

由于新的28没有外部ram接口,不能像2812那样仿真,并且新的28flash只能擦写100次。不能说我100次以内就可以搞好程序吧?

使用特权

评论回复
8
mpuhome|  楼主 | 2009-4-26 23:16 | 只看该作者

6楼

6楼,原理图可以google到,但串口下载我没做过
建议试试
http://item.taobao.com/auction/item_detail-0db2-951737cc8c0a7dc575446692b0520bfb.htm

7楼,尽量内部RAM仿真,程序比较大的话,就只好FLASH中仿真了,可以选择大容量RAM的芯片做开发,生产时换小RAM的型号

使用特权

评论回复
9
tage| | 2009-4-27 09:20 | 只看该作者

电脑上没并口啊,这个50元的并口仿真器我知道

另外2812的flash可以烧多少次啊?

使用特权

评论回复
10
mpuhome|  楼主 | 2009-4-27 21:23 | 只看该作者

2812的FLASH烧写次数

1000次,最少100次
手册上说的

使用特权

评论回复
11
xupeng1002| | 2009-4-28 09:37 | 只看该作者

关于2812定时时间的问题,很基础。谢谢

请问2812哪些寄存器可以控制定时时间,越全越好。或者说影响频率的因素有哪些。我在一个工程中碰到算AD采样的频率,是周期中断触发AD中断。我找了找相关的寄存器,可是算得的结果不对。我知道肯定是我没算对。我找的有:
PLLCR=0x0A;//晶振30M,倍频后150M
ADCENCLK=1;//使能外设高速时钟频率
HISPCP=0x1;//2分频
T1CON.TPS=7;//128分频
T1CNT=0;T1PR=64;//64个机器周期
GPTCONA.T1TOADC=2;//周期中断

请问还有没有别的可以影响?我算得的采样频率就是150M/2/128/64=9.15K,但是通过仪器测得是5.8K左右。
另外ADCTRL1.ACQ_PS,ADCTRL1.CPS,ADCTRL3.ADCCLKPS对采样周期有没有影响?他们3个影响什么?

使用特权

评论回复
12
mpuhome|  楼主 | 2009-4-29 21:56 | 只看该作者

楼上

不知道你是用哪个定时器触发的?你可以看看《TMS320F2812原理与开发 苏奎峰》,我就不帮你查书了哦
这个书的电子版本,可以到hellodsp下载

使用特权

评论回复
13
yujiyan| | 2009-5-8 21:07 | 只看该作者

为啥30M晶振不能用

做了块板,F2812,供电芯片选的d301,1.9v,用30M无源晶振,dsp运行在150MHz,通过仿真器一切正常,可就是不能烧写到flash里,换成20MHz的晶振,工作在100MHz下就能烧写,请问这是为什么呢

使用特权

评论回复
14
赤夜紫心| | 2009-5-8 23:30 | 只看该作者

去TI版问问吧哪里有TI的工程师

使用特权

评论回复
15
mpuhome|  楼主 | 2009-5-9 12:16 | 只看该作者

13楼


是不能烧写FLASH?还是烧写后运行不正常?

使用特权

评论回复
16
zwz111111| | 2009-5-12 11:23 | 只看该作者

2812烧写锁死的问题

请教:
在自己项目用的主板上调试发现
1.工程调试正常,在ram中运行程序正常;
2.改cmd文件编程到flash中运行也正常;
后来按照ti文档的“从flash拷贝全部程序到ram运行”更改cmd和部分文件后编译通过,但是编程到flash后,编程通过,但是程序未运行,而且flash被锁死;
(注:ti文档提供的工程“flash to ram"下载正常,flash未出现锁死现象)
这几天一直在査这个问题,但是仍然未果,请告知,不胜感激! 

使用特权

评论回复
17
mpuhome|  楼主 | 2009-5-13 09:28 | 只看该作者

楼上

你这个估计是程序里有对FLASH加密的操作了,这种情况下如果不知道密码就没办法解锁,换个CPU吧

使用特权

评论回复
18
zwz111111| | 2009-5-13 14:04 | 只看该作者

可以确认程序里没有操作密码的部分

已经挂了两个cpu了,贵啊!
在怀疑是不是源程序太大溢出误写了密码区,如果是这样那芯片就太脆弱了
现在贴出我项目使用的cmd文件,请帮忙分析一下:
我的cmd文件:
MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
    RAM_L0L1    : origin = 0x008000, length = 0x002000       /* on-chip RAM */
       OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
       FLASH_IJ    : origin = 0x3D8000, length = 0x004000     /* on-chip FLASH */
    FLASH_GH    : origin = 0x3DC000, length = 0x008000     /* on-chip FLASH */
    FLASH_EF    : origin = 0x3E4000, length = 0x008000     /* on-chip FLASH */
    FLASH_CD    : origin = 0x3EC000, length = 0x008000     /* on-chip FLASH */
    FLASH_AB    : origin = 0x3F4000, length = 0x003F80     /* on-chip FLASH */
       CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
       BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
       RAM_H0        : origin = 0x3F8000, length = 0x002000     /* on-chip RAM */
       ROM         : origin = 0x3FF000, length = 0x000FC0     /* Boot ROM */
       RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
       VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */


PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */

       RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
       BOOT_RSVD   : origin = 0x000400, length = 0x000080     /* Part of M1, BOOT rom will use this for stack */
       RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
}

/**************************************************************/
/* Link all user defined sections                             */
/**************************************************************/
SECTIONS
{

/*** Code Security Password Locations ***/
       csmpasswds      : > CSM_PWL         PAGE = 0        /* Used by file CSMPasswords.asm */
       csm_rsvd        : > CSM_RSVD        PAGE = 0        /* Used by file CSMPasswords.asm */        

/*** User Defined Sections ***/
       codestart       : > BEGIN_FLASH,    PAGE = 0        /* Used by file CodeStartBranch.asm */
       wddisable        : > FLASH_AB,        PAGE = 0        /* Used by file CodeStartBranch.asm */        
      copysections    : > FLASH_AB,        PAGE = 0        /* Used by file SectionCopy.asm */       

/* .reset is a standard section used by the compiler.  It contains the */ 
/* the address of the start of _c_int00 for C Code.   /*
/* When using the boot ROM this section and the CPU vector */
/* table is not needed.  Thus the default type is set here to  */
/* DSECT  */ 
    .reset             : > RESET,          PAGE = 0, TYPE = DSECT
    vectors         : > VECTORS         PAGE = 0, TYPE = DSECT

/*** Uninitialized Sections ***/
       .stack          : > RAMM0           PAGE = 1
       .ebss           : > RAMM1           PAGE = 1
       .esysmem        : > RAMM1           PAGE = 1

/*** Initialized Sections ***/                                          
      .cinit            :    LOAD = FLASH_AB,    PAGE = 0    /* Load section to Flash */ 
                        RUN = RAM_H0,          PAGE = 0    /* Run section from RAM */
                        LOAD_START(_cinit_loadstart),
                        RUN_START(_cinit_runstart),
                        SIZE(_cinit_size)

    .const            :   LOAD = FLASH_AB,      PAGE = 0    /* Load section to Flash */
                        RUN = RAM_H0,         PAGE = 0    /* Run section from RAM */
                        LOAD_START(_const_loadstart),
                        RUN_START(_const_runstart),
                        SIZE(_const_size)

    .econst            :   LOAD = FLASH_AB,      PAGE = 0       /* Load section to Flash */ 
                        RUN = RAM_H0,          PAGE = 0    /* Run section from RAM */
                        LOAD_START(_econst_loadstart),
                        RUN_START(_econst_runstart),
                        SIZE(_econst_size)

    .pinit            :   LOAD = FLASH_AB,      PAGE = 0    /* Load section to Flash */
                        RUN = RAM_H0,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_pinit_loadstart),
                        RUN_START(_pinit_runstart),
                        SIZE(_pinit_size)

    .switch            :   LOAD = FLASH_AB,      PAGE = 0       /* Load section to Flash */ 
                        RUN = RAM_H0,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_switch_loadstart),
                        RUN_START(_switch_runstart),
                        SIZE(_switch_size)

    .text            :   LOAD = FLASH_AB,     PAGE = 0    /* Load section to Flash */ 
                        RUN = RAM_L0L1,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_text_loadstart),
                        RUN_START(_text_runstart),
                        SIZE(_text_size)
}

/******************* end of file ************************/

以下是ti提供的cmd文件
/*############################################################################

 FILE:   F281x_nonBIOS_flash.cmd

 DESCRIPTION:  Linker allocation for all sections. 
############################################################################
 Author: Tim Love
 Release Date: March 2008
############################################################################*/


MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
    RAM_L0L1    : origin = 0x008000, length = 0x002000       /* on-chip RAM */
       OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
       FLASH_IJ    : origin = 0x3D8000, length = 0x004000     /* on-chip FLASH */
    FLASH_GH    : origin = 0x3DC000, length = 0x008000     /* on-chip FLASH */
    FLASH_EF    : origin = 0x3E4000, length = 0x008000     /* on-chip FLASH */
    FLASH_CD    : origin = 0x3EC000, length = 0x008000     /* on-chip FLASH */
    FLASH_AB    : origin = 0x3F4000, length = 0x003F80     /* on-chip FLASH */
       CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
       BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
       CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
       RAM_H0        : origin = 0x3F8000, length = 0x002000     /* on-chip RAM */
       ROM         : origin = 0x3FF000, length = 0x000FC0     /* Boot ROM */
       RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
       VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */


PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */

       RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
       BOOT_RSVD   : origin = 0x000400, length = 0x000080     /* Part of M1, BOOT rom will use this for stack */
       RAMM1       : origin = 0x000480, length = 0x000380     /* on-chip RAM block M1 */
}

/**************************************************************/
/* Link all user defined sections                             */
/**************************************************************/
SECTIONS
{

/*** Code Security Password Locations ***/
       csmpasswds      : > CSM_PWL         PAGE = 0        /* Used by file CSMPasswords.asm */
       csm_rsvd        : > CSM_RSVD        PAGE = 0        /* Used by file CSMPasswords.asm */        

/*** User Defined Sections ***/
       codestart       : > BEGIN_FLASH,    PAGE = 0        /* Used by file CodeStartBranch.asm */
       wddisable        : > FLASH_AB,        PAGE = 0        /* Used by file CodeStartBranch.asm */        
      copysections    : > FLASH_AB,        PAGE = 0        /* Used by file SectionCopy.asm */       

/* .reset is a standard section used by the compiler.  It contains the */ 
/* the address of the start of _c_int00 for C Code.   /*
/* When using the boot ROM this section and the CPU vector */
/* table is not needed.  Thus the default type is set here to  */
/* DSECT  */ 
    .reset             : > RESET,          PAGE = 0, TYPE = DSECT
    vectors         : > VECTORS         PAGE = 0, TYPE = DSECT

/*** Uninitialized Sections ***/
       .stack          : > RAMM0           PAGE = 1
       .ebss           : > RAMM1           PAGE = 1
       .esysmem        : > RAMM1           PAGE = 1

/*** Initialized Sections ***/                                          
      .cinit            :    LOAD = FLASH_AB,    PAGE = 0    /* Load section to Flash */ 
                        RUN = RAM_H0,          PAGE = 0    /* Run section from RAM */
                        LOAD_START(_cinit_loadstart),
                        RUN_START(_cinit_runstart),
                        SIZE(_cinit_size)

    .const            :   LOAD = FLASH_AB,      PAGE = 0    /* Load section to Flash */
                        RUN = RAM_H0,         PAGE = 0    /* Run section from RAM */
                        LOAD_START(_const_loadstart),
                        RUN_START(_const_runstart),
                        SIZE(_const_size)

    .econst            :   LOAD = FLASH_AB,      PAGE = 0       /* Load section to Flash */ 
                        RUN = RAM_H0,          PAGE = 0    /* Run section from RAM */
                        LOAD_START(_econst_loadstart),
                        RUN_START(_econst_runstart),
                        SIZE(_econst_size)

    .pinit            :   LOAD = FLASH_AB,      PAGE = 0    /* Load section to Flash */
                        RUN = RAM_H0,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_pinit_loadstart),
                        RUN_START(_pinit_runstart),
                        SIZE(_pinit_size)

    .switch            :   LOAD = FLASH_AB,      PAGE = 0       /* Load section to Flash */ 
                        RUN = RAM_H0,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_switch_loadstart),
                        RUN_START(_switch_runstart),
                        SIZE(_switch_size)

    .text            :   LOAD = FLASH_AB,     PAGE = 0    /* Load section to Flash */ 
                        RUN = RAM_L0L1,       PAGE = 0    /* Run section from RAM */
                        LOAD_START(_text_loadstart),
                        RUN_START(_text_runstart),
                        SIZE(_text_size)
}

/******************* end of file ************************/

使用特权

评论回复
19
zwz111111| | 2009-5-21 16:08 | 只看该作者

ccs3.1里有没有看运行时长的功能啊

尝试用“profile----clock----enable(view)”,感觉显示的数据很奇怪,应该不是时长或者运行时钟数;

使用特权

评论回复
20
echotian| | 2009-5-23 10:05 | 只看该作者

关于2812程序下载到FLASH中运行的问题

您好,我有一个关于程序在flash中运行的问题。情况是这样的:程序A,简单的PWM生成程序,有AD中断,但中断服务程序中代码较简单;程序B:在程序A的基础上,将中断服务程序添加了几条运算,以调节PWM占空比。其中,程序A烧写到FLASH中运行良好,程序B在仿真模式下运行良好,在不更改A烧写设置的情况下,程序B烧写进入FLASH不能正常运行。请问是什么原因?该如何解决?

使用特权

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

本版积分规则

27

主题

518

帖子

3

粉丝