cht8805

    1. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-15
      elvike 发表于 2016-7-15 15:57 你怎么不参考官方的例程,ramfuncs不需要修改,直接用可以的。然后自己再定义一个跟ramfuncs类似的段名搬你 ...
      我没修改ramfuncs啊,我也是按例程做的,不知问题出在哪?
    2. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-15
      以下有问题吗?
      ENTRY POINT SYMBOL: "_c_int00"  address: 003f67bf MEMORY CONFIGURATION          name            origin    length      used     unused   attr    fill ----------------------  --------  ---------  --------  --------  ----  -------- PAGE 0:   PRAML0                00008000   00000800  0000001f  000007e1  RWIX   OTP                   003d7800   00000400  00000000  00000400  RWIX   FLASHD                003f0000   00002000  00000000  00002000  RWIX   FLASHC                003f2000   00002000  00000000  00002000  RWIX   FLASHA                003f6000   00001f80  00000a22  0000155e  RWIX   CSM_RSVD              003f7f80   00000076  00000000  00000076  RWIX   BEGIN                 003f7ff6   00000002  00000002  00000000  RWIX   CSM_PWL_P0            003f7ff8   00000008  00000000  00000008  RWIX   IQTABLES              003fe000   00000b50  00000000  00000b50  RWIX   IQTABLES2             003feb50   0000008c  00000000  0000008c  RWIX   IQTABLES3             003febdc   000000aa  00000000  000000aa  RWIX   ROM                   003ff27c   00000d44  00000000  00000d44  RWIX   RESET                 003fffc0   00000002  00000000  00000002  RWIX   VECTORS               003fffc2   0000003e  00000000  0000003e  RWIX PAGE 1:   BOOT_RSVD             00000000   00000050  00000000  00000050  RWIX   RAMM0                 00000050   000003b0  00000300  000000b0  RWIX   RAMM1                 00000400   00000400  00000000  00000400  RWIX   DEV_EMU               00000880   00000105  00000004  00000101  RWIX   SYS_PWR_CTL           00000985   00000003  00000003  00000000  RWIX   FLASH_REGS            00000a80   00000060  00000008  00000058  RWIX   CSM                   00000ae0   00000010  00000010  00000000  RWIX   ADC_RESULT            00000b00   00000020  00000020  00000000  RWIX   CPU_TIMER0            00000c00   00000008  00000008  00000000  RWIX   CPU_TIMER1            00000c08   00000008  00000008  00000000  RWIX   CPU_TIMER2            00000c10   00000008  00000008  00000000  RWIX   PIE_CTRL              00000ce0   00000020  0000001a  00000006  RWIX   PIE_VECT              00000d00   00000100  00000100  00000000  RWIX   COMP1                 00006400   00000020  00000011  0000000f  RWIX   COMP2                 00006420   00000020  00000011  0000000f  RWIX   EPWM1                 00006800   00000040  00000040  00000000  RWIX   EPWM2                 00006840   00000040  00000040  00000000  RWIX   EPWM3                 00006880   00000040  00000040  00000000  RWIX   EPWM4                 000068c0   00000040  00000040  00000000  RWIX   ECAP1                 00006a00   00000020  00000020  00000000  RWIX   GPIOCTRL              00006f80   00000040  00000040  00000000  RWIX   GPIODAT               00006fc0   00000020  00000020  00000000  RWIX   GPIOINT               00006fe0   00000020  0000000a  00000016  RWIX   SYSTEM                00007010   00000020  0000001f  00000001  RWIX   SPIA                  00007040   00000010  00000010  00000000  RWIX   SCIA                  00007050   00000010  00000010  00000000  RWIX   NMIINTRUPT            00007060   00000010  00000010  00000000  RWIX   XINTRUPT              00007070   00000010  00000010  00000000  RWIX   ADC                   00007100   00000080  00000051  0000002f  RWIX   I2CA                  00007900   00000040  00000022  0000001e  RWIX   DRAML0                00008800   00000800  00000058  000007a8  RWIX   PARTID                003d7fff   00000001  00000001  00000000  RWIX   FLASHB                003f4000   00002000  00000000  00002000  RWIX   CSM_PWL               003f7ff8   00000008  00000008  00000000  RWIX SECTION ALLOCATION MAP output                                  attributes/ section   page    origin      length       input sections --------  ----  ----------  ----------   ---------------- .pinit     0    003f6000    00000000     UNINITIALIZED .econst    0    003f6000    00000100                        003f6000    00000100     F2802x_PieVect.obj (.econst) ramfuncs   0    003f6100    0000001f     RUN ADDR = 00008000                   003f6100    0000001b     F2802x_SysCtrl.obj (ramfuncs)                   003f611b    00000004     F2802x_usDelay.obj (ramfuncs) .text      0    003f611f    000008b8                        003f611f    00000205     F2802x_Adc.obj (.text)                   003f6324    00000131     F2802x_DefaultIsr.obj (.text:retain)                   003f6455    0000011c     F2802x_SysCtrl.obj (.text)                   003f6571    00000095     F2802x_OscComp.obj (.text)                   003f6606    00000081     F2802x_EPwm.obj (.text)                   003f6687    00000075     F2802x_CpuTimers.obj (.text)                   003f66fc    00000069     main.obj (.text)                   003f6765    0000005a     rts2800_ml.lib : fs_mpy.obj (.text)                   003f67bf    00000044                    : boot.obj (.text)                   003f6803    00000036     F2802x_TempSensorConv.obj (.text)                   003f6839    0000002d     main.obj (.text:retain)                   003f6866    0000002c     F2802x_Comp.obj (.text)                   003f6892    0000002a     F2802x_Spi.obj (.text)                   003f68bc    00000029     rts2800_ml.lib : fs_tol.obj (.text)                   003f68e5    00000028     F2802x_PieCtrl.obj (.text)                   003f690d    00000027     F2802x_PieVect.obj (.text)                   003f6934    0000001a     F2802x_Sci.obj (.text)                   003f694e    00000019     F2802x_I2C.obj (.text)                   003f6967    00000019     rts2800_ml.lib : args_main.obj (.text)                   003f6980    00000019                    : exit.obj (.text)                   003f6999    00000013     F2802x_Gpio.obj (.text)                   003f69ac    00000010     F2802x_ECap.obj (.text)                   003f69bc    00000009     rts2800_ml.lib : _lock.obj (.text)                   003f69c5    00000008     F2802x_CodeStartBranch.obj (.text)                   003f69cd    00000007     F2802x_DisInt.obj (.text)                   003f69d4    00000003     F2802x_DBGIER.obj (.text) .cinit     0    003f69d7    0000004b                        003f69d7    00000035     main.obj (.cinit)                   003f6a0c    0000000a     rts2800_ml.lib : _lock.obj (.cinit)                   003f6a16    0000000a                    : exit.obj (.cinit)                   003f6a20    00000002     --HOLE-- [fill = 0] codestart *          0    003f7ff6    00000002                        003f7ff6    00000002     F2802x_CodeStartBranch.obj (codestart)
    3. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-15
      cht8805 发表于 2016-7-15 09:31 FLASH烧写已成功,主要问题是BOOTMODE管脚设置不对,引导启动硬件条件不对。现在的问题是调试时SPWM频率2 ...
      #include "DSP28x_Project.h" volatile Uint32 Num; int SinceTable[50]={25,28,31,34,37,39,42,44,46,47,48,49,49,49,49,48,                 47,46,44,42,39,37,34,31,28,25,21,18,15,12,10,7,                 5,3,2,1,0,0,0,0,1,2,3,5,7,10,12,15,                 18,21,}; #define PWM1_INT_ENABLE  1 void InitEPwmTimer(void);              // EPWM模块初始化程序 void update_compare(void);             // 比较值定义 interrupt void epwm1_timer_isr(void);  // 中断服务程序 //extern Uint16 RamfuncsLoadStart; //extern Uint16 RamfuncsLoadEnd; //extern Uint16 RamfuncsRunStart; #pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs"); void main(void) {    InitSysCtrl();                      // 系统初始化函数 #ifdef FLASH     //MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);     memcpy((uint16_t *)&RamfuncsRunStart,(uint16_t *)&RamfuncsLoadStart, (unsigned long)&RamfuncsLoadSize);     InitFlash(); #endif    InitEPwm1Gpio();                    // EPWM端口初始化    DINT;                               // 关闭CPU中断    InitPieCtrl();                      // PIE中断控制    IER = 0x0000;                       // 关闭中断使能    IFR = 0x0000;                       // 清除中断标志位    InitPieVectTable();    EALLOW;    PieVectTable.EPWM1_INT = &epwm1_timer_isr;//中断函数入口    EDIS;                               // 赋值中断函数地址    InitEPwmTimer();                    // 初始化EPWM模块    IER |= M_INT3;                      // 使能CPU级第三组中断    PieCtrlRegs.PIEIER3.bit.INTx1 = PWM1_INT_ENABLE;                                        // 使能PIE3.1    EINT;                                // 使能全局中断    ERTM;    Num=0;    for(;;)    {            //DELAY_US(10);        asm("          NOP");    } } /*EPWM模块初始化函数*/ void InitEPwmTimer() {    EALLOW;    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;        // 停止TB计数    EDIS;    EPwm1Regs.ETSEL.bit.INTSEL = ET_CTRU_CMPA;      // 计数值等于比较值时产生中断        EPwm1Regs.ETSEL.bit.INTEN = 1;                  // 使能中断        EPwm1Regs.ETPS.bit.INTPRD = ET_1ST;             // 第一次时产生中断        EPwm1Regs.TBPRD =50;                        //        EPwm1Regs.TBPHS.half.TBPHS = 0x0000;            // 同步值        EPwm1Regs.TBCTR = 0;                            // 清除定时器计数        EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;      // 定时器增模式        EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;         // 同步脉冲装载不使能        EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;          // 从镜像装载        EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 关闭同步输出        EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;        // TB时钟等于SYSCLK        EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;        EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;     // 镜像模式        EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;    // 当CTR=prd的时候装载镜像数据        //EPwm1Regs.CMPA.half.CMPA = 30000;        EPwm1Regs.CMPA.half.CMPA = 25;                //调整占空比  50%时值应等于定时器周期一半                                                        //数值越小,占空比越小        EPwm1Regs.AQCTLA.bit.CAU =AQ_SET;        EPwm1Regs.AQCTLB.bit.CAU =AQ_CLEAR;       EPwm1Regs.AQCTLA.bit.ZRO = AQ_CLEAR;       EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;    EALLOW;    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;         // TB时钟计数    EDIS; } /*epwm1中断服务程序*/ //c2000的中断函数都要用“inerrupt”申明 interrupt void epwm1_timer_isr(void) {           if(Num>49)                 {Num=0;}                 EPwm1Regs.CMPA.half.CMPA=SinceTable[Num];                 Num++;    //update_compare();    EPwm1Regs.ETCLR.bit.INT = 1;    PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; }
    4. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-15
      cht8805 发表于 2016-7-15 09:19 在线吗?方便联系吗?QQ-591778199
      FLASH烧写已成功,主要问题是BOOTMODE管脚设置不对,引导启动硬件条件不对。现在的问题是调试时SPWM频率20KHZ,烧写到FLASH后,频率只有2.5KHZ,加上#pragma CODE_SECTION(epwm1_timer_isr, "ramfuncs");这句,就出错,直接跳到ILLEGAL_ISR里,请问怎么解决?
    5. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-15
      elvike 发表于 2016-7-12 14:24 参照官方的例程
      在线吗?方便联系吗?QQ-591778199
    6. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-12
      elvike 发表于 2016-7-12 10:16 是的
      引导的硬件条件都具备了,依然不行。下一步最简单的验证FLASH是否写入和正确运行的办法是什么(不考虑程序搬移到RAM空间运行)?是不是在初始化程序InitSysCtrl()后面加上InitFlash();就可以了,其它程序不用改动?版主说的FLASH等待时间怎么加入,加到哪里?
    7. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-11
      elvike 发表于 2016-7-11 22:49 硬件设计倒是没什么,一般都会设置成flash启动,ti的c2000不同型号引脚不一样,需要注意。软件方面一般都 ...
      F28027的FLASH引导模式要求GPIO34(COMP2OUT)=1、GPIO37(TDO)=1、TRST=0。是不是可以理解为外部电路GPIO34(COMP2OUT)接高电平、GPIO37(TDO)接高电平、TRST按手册要求通过2.2K电阻接地。这是FLASH引导启动的硬件条件?
    8. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-11
      elvike 发表于 2016-7-11 16:58 这类型的问题已经提过很多次了,楼主可以在论坛里搜索。基本都能找到你要的答案,
      是啊。我基本把相关帖子都看了,问题依然没解决。做为DSP的新手,我的感觉是F28027类似于单片机,烧写FLASH不成功首先从硬件着手,看编程接口和引导管脚配置是否正常(新手就是不知什么样是正常的,管脚到底需不需要外部硬件配置和怎么配置),FLASH延时怎么处理,在哪处理;先把FLASH烧写成功,程序能运行,然后再考虑是在RAM里还是FLASH里运行,运行时需要什么条件。这方面的资料确实很少,看了很多,始终没有总结出可行的办法。可能我比较笨啊。版主的《……在FLASH里运行》一文很好,把软件部分将透了,可对自己设计电路、做线路板和软硬件联调讲的较少,对电路设置方面基本没讲,感觉意犹未尽,不畅快淋漓。可能各位老手大侠对新手按图索骥式的操作体会不深,不简单点,不面面俱到真是不行。不把开发环境搭建好,后面啥也别谈了。我虽然有单片机基础,但自学DSP确实很费劲,总觉得有个弯绕不过来,恳请大侠详解。
    9. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-11
      cht8805 发表于 2016-7-11 14:49 你好,那篇文章看过了,讲的很好,很有启发。我也按照你的方法试过,但不行。所以我怀疑是不是引导模式或 ...
      刚看了下F28027的数据手册,引导管脚是GPIO34、GPIO37(TDO)和TRST三个,需要GPIO34=1;GPIO37=1;TRST=0。请问这是硬件电路控制还是软件设定?
    10. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-11
      本帖最后由 cht8805 于 2016-7-11 15:00 编辑
      dontium 发表于 2016-7-11 13:33 我有一篇《……在FLASH里运行》的帖子,你看一下。
      你好,那篇文章看过了,讲的很好,很有启发。我也按照你的方法试过,但不行。所以我怀疑是不是引导模式或DEBUG等方式错了。还请您仔细给科普一下,多谢。方便的话QQ:591778199
    11. F28027-FLASH烧写 18/4853 DSP 与 ARM 处理器 2016-07-11
      把上面的问题再细化下。 1、F28027-FLASH引导模式是不是使用GPIO18、29、34三个管脚,需要在硬件设计上把这三个管脚上拉置高还是在软件里置位?如果管脚复用怎么处理? 2、Debug和Release模式是什么意思?何时选择?烧写FLASH时需要选择吗? 3、代码不复制到RAM里应该可以运行吧?如果不复制代码的话,是不是把CMD文件更换后就可以写到FLASH里运行了? 4、建议各位大侠从不复制代码到RAM里运行的角度讲解FLASH烧写过程,然后再讲解复制代码的过程。这样初学者能更好理解。

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:--
  • 好友:1
  • 主题:1
  • 回复:11

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言