![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| TMS320C2XX的软件堆栈 | |||||
作者:朱延钊 文章来源:嵌入式系统IC网 点击数: 更新时间:2008-1-14 ![]() |
|||||
|
作者:朱延钊 来源:嵌入式系统IC网 摘 要:介绍了对德州仪器(TI)公司的TMS 关键词:DSP;堆栈;TMS 随着DSP运行速度越来越快和DSP芯片价格的越来越低,使DSP在各个领域的应用也越来越广泛。相比于常用的8031系列单片机来说,DSP的速度是8031的几十倍。因此,以前要用工控机才能实现的系统,现在便可以用DSP来实现了。 在Texas Instrument(美国德州仪器,简称TI)推出的系列DSP中,C2XX可以广泛应用于各种控制系统中,尤其适用于电机控制。在C2XX系列中,LF2406/LF2407是应用比较广泛的一种DSP芯片,它具有32k字的FLASH程序存储器,可以通过串行口在线编程。片内共有三部分内存:其中60H-7FH共有32个字,200H-3FFH共有512个字,800H-0FFFH共有2048个字。 C2XX的内存是按页来组织的,访问内存要先指定页指针(DP),然后在指令中再指定页内地址。每页只有128个字,直接寻址指令只能访问当前页内的数据。C2XX系列芯片具有8个辅助寄存器(AR0~AR7),这8个辅助寄存器都是16位的,可以访问64k的存储器空间。因为在任何程序片段内都有可能要临时保存数据,因此,为了不破坏页指针,用辅助寄存器作为堆栈指针是比较方便的。根据8031的编程习惯,一般把AR0和AR1作为间接寻址指针,把AR6和AR7作为计数单元,因此将AR5作为堆栈指针,定义如下: SP.set AR5 由于C2XX的内存是不连续的,因此,把软件堆栈设在只有32字的60H-7FH段比较合适。因为有32个字再加上硬件堆栈本身的8个字,总共可以有40个字,这对绝大多数应用来说已经足够了。 在实际应用中,随时都有可能要临时保存数据, 特别是在中断程序中,要保存的内容更多。中断发生时硬件会自动保存当前的执行地址,然后跳转到中断向量所指的地址执行,执行完成后由RET指令返回到中断发生前的地址继续执行。在中断服务程序(ISR)中,一般都要保存ACC的值(32位)、当前数据页指针以及一些状态位。 为了方便使用,首先应定义两个宏: 其中PushRegs用于保存寄存器的值,而PopRegs用于恢复寄存器的值。应用举例如下: 如将Timer 3作为一般的1ms定时器使用,那么,中断服务程序如下: 因为该硬件只有8级堆栈,所以在编写程序时,应尽量使用跳转指令而少用CALL指令,这样在中断比较多的场合就不致于发生堆栈溢出。 参考文献 1.TMS 2.TMS |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| NAND Flash上均匀损耗与掉电… NAND Flash上均匀损耗与掉电… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|