首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

TMS320C2XX开发设计中应注意的问题(2)

TMS320C2XX开发设计中应注意的问题(2)

  3.4 中断资源
  F206中断资源丰富,其0000h~003fh地址单元对应中断向量空间,每个中断矢量均为一条转移指令,该指令要求4个8bit字,因而中断向量空间可容纳32个中断矢量。对于程序设计中没有用到的向量空间,应填零以防意外。F206不支持中断嵌套,当它响应了某个硬件中断时,会自动将其中断标志位和中断允许位INTM置1(INTM为1,禁止所有中断),但在中断服务程序结束后不会自动将二者清零。因此,在中断服务程序结束前,应先将这两个标志位清零,否则DSP将无法正常响应中断。注意,DSP中向标志位写入1才能对标志位清零,并且应先清除中断标志位,然后再对中断允许位INTM清零。 若某一中断客观存在,而程序中又无相应的中断服务程序,则会导致程序紊乱。如在中断屏蔽寄存器(IMR)中将异步串行口的传送/接收中断打开,此时若异步串行口控制寄存器(ASPCR)指传送或接收中断屏蔽,此时仍会产生该中断,只是写入异步数据发送和接收寄存器(ADTR)或读ADTR的值为零,因而编程时还要对ADTR进行读或写处理,而不能只是简单地清除其中断标志位和中断允许位后返回。笔者曾因这个问题耗时多日,程序调试总不能得到正确的结果,后编写入相应的中断服务程序后,再进行调试终于得到了正确结果。
  NMI中断可用作软件复位,但因为中断矢量仅仅是一条转移指令,因而它既不中止存储器操作也不初始化状态位。如果要求DSP重新对外围器件设置,则利用NMI软件复位不能满足要求。根据实际,笔者设计了一个利用NMI中断硬件复位DSP的电路,如图1所示。 在NMI中断服务程序中,DSP给PO6口一个正永冲即可使DSP复位,但应注意新增电路中的RC时间常数应小于DSP原有复位电路的RC时间常数,以免影响DSP正常复位。
  3.5 数据页DP 在所有程序中必须初始化DP。
  初始化DP非常重要,复位不能初始化DP,并且上电时,DP是不确定的。没有初始化DP的程序就不能正确执行。另外,在编程时应注意:①DSP对片内存储区的访问比片外存储区要快,因此应将经常使用的数据分配至片内存储空间,以提高数据处理速度。②尽可能采用直接寻址的寻址方式,这样可在提供大数据访问能力的同时,提高指令速度。这种寻址方式具有128字节的寻址能力,但寻址范围是指定DP下的128字。当程序复杂特别是在中断存在的情况下,改变DP的值很容量造成程序的混乱。基于此考虑一般将DP的值固定不变,尽可能合理地在各功能模块间分配这128个高效且使用方便的存储单元。应特别注意的是,DP的值置零,在操作完成后再将DP的值还原,这是因为IFR、IMR的地址都是DP为零的相对地址。另外,在中断程序入口如果使用直接寻址方式保存状态寄存器的值,那么在中断返回之间装载所保存的值时,也应先将DP的值设成零,否则程序将无法正常运行。
  3.6 内置闪速存储器(Flash)
   F206的一个显著优势是具备32K%26;#215;16位的片内闪速存储器,它具有可擦除、可编程和非易失电源等特点。在复位期间,通过将MP/MC置为低电平可选择闪存。利用JTAG接口向目标系统下载程序包括:Flash的清零(clear,所有位清零)、擦除(erase,所有位置1)及编程。其片内Flash,由两块相对独立的16KB Flash组成,因而每次清零、擦除需对两块16KB Flash分别进行。F206运算速度有20、28.5和40MIPS,但程序代码成功烧录进片Flash的前提条件是其工作于20MIPS,否则程序无法烧寻进DSP。另外应将NMI中断相应引脚拉高,否则由JTAG将程序代码烧录进Flash时会出现错误提示,使烧录无法完成。 笔者在调试程序时曾遇到这样的情况,程序在仿真时可以正常运行,烧录到Flash后却无法运行了。原因是上电时DSP外围芯片复位时间长于DSP的启动时间,后来尝试着在程序初始化之前插入一段延时(约为几十ms),重新烧录后程序执行正常。
  DSP技术的发展越来越成熟,DSP的应用也日益广泛。了解和掌握DSP技术,并应用DSP技术开发新一代高科技产品十分必要。本文介绍的DSP开发中应注意的几个问题,可以大大缩短开发时间,仅供读者参考。
继承事业,薪火相传
返回列表