打印

TMS320VC5509总结分享

[复制链接]
419|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Jasmines|  楼主 | 2017-9-8 17:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TMS320VC5509总结分享

TMS320VC5509工作基本条件包括电源电路、时钟电路、JTAG(调试用)接口电路等。
    电源电路:模拟、数字、内核电源的纯净。
    时钟电路:晶振要尽量靠近DSP,内部有倍频电路,外部可以使用12MHz的有源或者无源元件。
    JTAG电路:对DSP通用系统来说要求不要超过6英寸,超过此距离要提高驱动能力。
    对于不使用的外部中断接上拉电阻到DVDD。
    复位信号不要用简单的RC电路,用门电路或者专门的复位芯片产生。
    GPIO[0:3]的电平决定上电引导方式,需要根据自己需要设置。
    对于外部引导,建议使用串行flash,布线简单(省去很多地址与数据线)。
    电路参考TI提供的EVM。
TMS320VC5509的工作流程:
    5509上电复位后从0xffff00开始执行程序(因为复位后IVPD的值是0xffff),在0xffff00处是指令:.ivec 0xff8000,程序转入0xff8000处执行,从0xff8000处开始就是5509内部固化的bootloader程序,在这段程序里通过读取GPIO口的状态来转入不同的boot方式。
    假设用户的程序存片外flash中,5509内部固化的bootloader程序从片外的flash中按照一定格式读取数据并搬入片内RAM中,搬完后转入片内RAM的程序入口执行程序。
    对于中断,需要自己定义一个中断向量表放入RAM中,并通过修改IVPD和IVPH的值来指向中断向量表的入口位置;寄存器IER0和IER1是各个中断的使能位,ST1的INTM位是总的中断使能位。中断向量表中应该放入中断服务程序的入口地址,也可以先不放入,在程序运行后通过调用CSL的IRQ_plug()函数在中断向量表插入中断服务程序入口。


学习DSP,当然是从一些简单的测试程序开始。使一个LED的闪亮是经常用的,但这其中有一个误区,现分析如下,以定时器控制LED灯为例:
void main()
   {
    init_5509();
    init_timer();
    while(1)
         {
         asm(" NOP");
         }
   }
interrupt void int_timer0()
{
         Flag=Flag+1;
         if   (Flag>10)
              asm(" SSBX XF");
         else
              asm(" RSBX XF");
         if (Flag>20)
               Flag=0;
}
    这个程序不能实现控制的。使用XF的时候要注意一下,XF是ST1的一个bit,但是在中断中,首先把ST1压入堆栈,出中断前才弹出堆栈,所以在中断中改变XF没有实际的意义。所以在C/C++加如汇编要谨慎。修改后的程序如下:
void main()
{
    init_5509();
    init_timer();
    while(1)
    {
           asm(" NOP");
           if (Flag>10)
              asm(" SSBX XF");
          else
             asm(" RSBX XF");
    }
}
interrupt void int_timer0()
{
       Flag=Flag+1;
       if (Flag>20)
       Flag=0;
}
这个程序就好使。

相关帖子

沙发
zhangmangui| | 2017-9-9 09:51 | 只看该作者
学习5509的重点是配置csl库

使用特权

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

本版积分规则

745

主题

1077

帖子

10

粉丝