网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> C2000文章 >> C28X系列 >> 文章正文
  [组图]TMS320C2XX的软件堆栈           ★★★ 【字体:
TMS320C2XX的软件堆栈
作者:朱延钊    文章来源:嵌入式系统IC网    点击数:    更新时间:2008-1-14    

作者:朱延钊   来源:嵌入式系统IC网 

  要:介绍了对德州仪器(TI)公司的TMS320C2XX系列DSP芯片的8级硬件堆栈进行软件扩展的方法,给出了在内存中扩展堆栈的两个宏定义和中断服务程序。 

关键词:DSP;堆栈;TMS320C2XX

 

  随着DSP运行速度越来越快和DSP芯片价格的越来越低,使DSP在各个领域的应用也越来越广泛。相比于常用的8031系列单片机来说,DSP的速度是8031的几十倍。因此,以前要用工控机才能实现的系统,现在便可以用DSP来实现了。

  在Texas Instrument(美国德州仪器,简称TI)推出的系列DSP中,C2XX可以广泛应用于各种控制系统中,尤其适用于电机控制。在C2XX系列中,LF2406LF2407是应用比较广泛的一种DSP芯片,它具有32k字的FLASH程序存储器,可以通过串行口在线编程。片内共有三部分内存:其中60H7FH共有32个字,200H3FFH共有512个字,800H0FFFH共有2048个字。

  C2XX的内存是按页来组织的,访问内存要先指定页指针(DP),然后在指令中再指定页内地址。每页只有128个字,直接寻址指令只能访问当前页内的数据。C2XX系列芯片具有8个辅助寄存器(AR0AR7),这8个辅助寄存器都是16位的,可以访问64k的存储器空间。因为在任何程序片段内都有可能要临时保存数据,因此,为了不破坏页指针,用辅助寄存器作为堆栈指针是比较方便的。根据8031的编程习惯,一般把AR0AR1作为间接寻址指针,把AR6AR7作为计数单元,因此将AR5作为堆栈指针,定义如下:

    SPset AR5

  由于C2XX的内存是不连续的,因此,把软件堆栈设在只有32字的60H7FH段比较合适。因为有32个字再加上硬件堆栈本身的8个字,总共可以有40个字,这对绝大多数应用来说已经足够了。

    在实际应用中,随时都有可能要临时保存数据, 特别是在中断程序中,要保存的内容更多。中断发生时硬件会自动保存当前的执行地址,然后跳转到中断向量所指的地址执行,执行完成后由RET指令返回到中断发生前的地址继续执行。在中断服务程序(ISR)中,一般都要保存ACC的值(32位)、当前数据页指针以及一些状态位。

  为了方便使用,首先应定义两个宏:

 

 

  其中PushRegs用于保存寄存器的值,而PopRegs用于恢复寄存器的值。应用举例如下:

  如将Timer 3作为一般的1ms定时器使用,那么,中断服务程序如下:

 

 

 

    因为该硬件只有8级堆栈,所以在编写程序时,应尽量使用跳转指令而少用CALL指令,这样在中断比较多的场合就不致于发生堆栈溢出。

 

 

参考文献

 

 

1TMS320FC24x DSPControllers Reference GuideCPUand Instruction Set1999

2TMS320C1XC2XC2XXC5XAssembly LanguageTools User Guide1995

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    NAND Flash上均匀损耗与掉电…
    NAND Flash上均匀损耗与掉电…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号