590 likes | 734 Views
第七章 DSP 外设及应用. 第一节 中断系统 一、中断类型 中断是由硬件或软件驱动的信号。中 断信号使 DSP 暂停正在执行的程序,并进 入中断服务程序。. C54X 既支持软件中断,也支持硬件中断: 1 、由程序指令( INTR , TRAP 、 RESET )要求的软件中断。 2 、由外围设备信号要求的硬件中断。这种硬件中断又有两种形式: ( 1 )、受外部中断口信号触发的外部 中断信号。 ( 2 )、受片内外围电路信号触发的内
E N D
第七章 DSP外设及应用 第一节 中断系统 一、中断类型 中断是由硬件或软件驱动的信号。中 断信号使DSP暂停正在执行的程序,并进 入中断服务程序。
C54X既支持软件中断,也支持硬件中断: 1、由程序指令(INTR,TRAP、RESET)要求的软件中断。 2、由外围设备信号要求的硬件中断。这种硬件中断又有两种形式: (1)、受外部中断口信号触发的外部 中断信号。 (2)、受片内外围电路信号触发的内 部硬件中断。
当同时有多个硬件中断出现时,按照优先 级的高低进行处理,按优先级可以将中断分为 两类: 第一类:可屏蔽中断。 可以用软件屏蔽或开放的硬件和软件中断, C54X最多可支持16个用户可屏蔽中断。 例、C541,只有9个此类中断。 INT0~INT3, RINT0,XINT0,RINT1,XINT1 TINT。
第二类:非屏蔽中断 这类中断是不可屏蔽的。C54X对这类 中断总是响应的,并从主程序转移到中断 服务程序。 C54X的非屏蔽中断包括所有的软件中 断以及两个外部硬件中断:RS和NMI(也 可用软件进行RS和NMI中断)。
二、中断寄存器 中断标志寄存器(IFR,01H) 中断屏蔽寄存器(IMR,00H) 1、中断标志寄存器(IFR) 当某个中断触发时,寄存器响应位置1,直到中断处理完毕为止。
不同型号芯片的IFR中5~0位的中断源相同,是外部中断和通信中断标志位。其他15~6位中断源根据芯片的不同,定义的中断源类型不同。不同型号芯片的IFR中5~0位的中断源相同,是外部中断和通信中断标志位。其他15~6位中断源根据芯片的不同,定义的中断源类型不同。 • 中断标志置1后,以下四种情况都将使其清0: (1)、软件或硬件复位; (2)、中断得到处理; (3)、将1写到IFR的适当位(相应位变成0),相 应的尚未处理完的中断被清除; (4)、利用适当的中断号执行INTR指令,相应的 中断标志位清0。
2、中断屏蔽寄存器 用来屏蔽外部和内部中断。如果状态寄存器ST1中的 INTM位=0,IMR寄存器中某一位为1,就开放相应的中 断。NMI和RS都不包括在IMR中,IMR不能屏蔽这两个 中断。
三、中断控制 中断控制主要是屏蔽某些中断,避免其他 中断对当前运行程序的干扰,以及防止同级中 断之间的响应竞争。 1、中断请求的接收 • 对硬件中断请求:不论中断是否被DSP确认,DSP将在IFR相应的位置1。 • 对软件中断请求: 由INTR、TRAP和RESET三条指令产生。
当软件中断请求时: (1)、INTR K。 K表示将转移到的中断矢量单元。当INTR中断被确认,状态寄 存器ST1的中断方式(INTM)置1,以便禁止其他可屏蔽中断。 (2)、TRAP K。TRAP和INTR的不同之处就是TRAP启动中断 时,INTM位不受影响。所以在TRAP启动中断服务时,该中断服务 程序可被其他硬件中断所中断。 (3)、RESET。执行一种不可屏蔽的软件复位操作。它影响ST0 和ST1,但不影响处理器工作方式寄存器PMST,因此,RESET复 位指令和RS硬件复位是有区别的。
左移2位,构成低7位 构成中断地址的高9位
2、中断确认 • 对软件中断和非屏蔽中断,DSP将立即响应,进入相应中断服务程序。 • 对硬件可屏蔽中断,只有满足以下3中条件后,DSP才响应中断。 (1)、当前优先级为最高级。 (2)、IMR屏蔽位为1。 (3)、INTM位为0。 满足上述条件后,DSP响应中断,终止当前正进行的操作,指令计数器PC自动转向相应的中断向量地址,取出中断服务程序地址,并发出硬件中断响应信号IACK,清除相应的中断标志位。
3、中断服务程序 CPU执行中断服务程序的步骤如下: • 保护现场,将PC值压入栈顶; • 载入中断矢量表,将中断矢量表地址送入PC; • 执行中断矢量表中指令,程序进入中断入口; • 执行中断服务程序,直至遇到返回指令; • 恢复现场,将栈顶值弹回PC; • 继续主程序。
4、中断向量地址 • TMS320C54X中,中断向量地址由PMST寄存器中的9位中断向量地址指针IPTR和左移2位后的中断向量序号(中断向量序号为0~31,左移两位后变成7位)所组成。 • 复位时,IPTR为全1,因此复位中断向量地址为FF80H。
5、外部中断的触发 • 外部中断的触发方式有两种:电平触发和边沿触发。 • 5402为电平触发。
四、中断应用 例、有8个外部中断源,分别为IR0、IR1、IR2、….IR8,各中断都是边沿触发方式,
中断服务程序: ;外部中断INT0中断服务子程序: INT0ISR: PSHM ST0 PSHM ST1 PSHM AG PSHM AH PSHM AL PORTR HPIPORT,*AR1 STL *AR1,A AND #01B , A BC IR2,ANEQ
注意: • 中断源的优先顺序为INT0,INT1,INT2,INT3。 • 中断响应时间相对较长。 • 中断申请信号宽度要求较宽。 • 堆栈深度较深。
第二节 定时器 一、定时器结构 片内定时器是一个软件可编程定时器,可以用来周 期地产生中断。定时器主要由3个寄存器所组成: • 定时器寄存器(TIM,24H),TIM是一个减1计数器; • 定时器周期寄存器(PRD,0025H),存放时间常数; • 定时器控制寄存器(TCR,26H)。 其中,定时器控制寄存器TCR包括:预标定分频系 数TDDR,预标定计数器PSC、控制位TRB和TSS等及相 应的逻辑控制电路组成。
注1: • 正常工作情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。当系统复位或定时器单独复位时,PRD中的时间常数重新加载到TIM。 • 复位后,定时器控制积存器(TCR)的停止状态位TSS=0,定时器启动工作,时钟信号CLKOUT加到预定标计数器PSC。 • PSC也是一个减1计数器,每当复位或减到0后,自动将定时器分频系数TDDR加载到PSC。 所以,定时中断的周期为: CLKOUT*(TDDR+1)*(PRD+1) • 若要关闭定时器,只要将TCR的TSS置1,就能切断时钟输入,定时器停止工作。
定时器初始化的步骤: (1)、先将TCR中的TSS置1,关闭定时器。 (2)、加载PRD。 (3)、重新加载TCR(使TDDR初始化;令TSS为0,以接通CLKOUT;TRB置1,以便TIM减到0后重新加载定时器时间常数),启动定时器。 要开放定时中断: (1)、将IFR中的TINT位置1,清除尚未处理完的定时器中断; (2)、将IMR中的TINT位置1,开放定时中断; (3)、将ST1中的INTM位清零,从整体上开放中断。 其中,复位时TIM和PRD都置成最大值FFFFH,定时器的分频系数(TCR的TDDR)清0,定时器开始工作。
例、定时器的初始化和开放定时中断: STM #0000H,SWWSR; STM #0010H,TCR ;TSS=1,关定时器 STM #0100H,PRD ;加载周期寄存器(PRD) STM #0C20H,TCR ;定时分频系数TDDR初始化为1 ;TSS=0,启动定时器 ;TRB=1,当TIM减到0后,重新加载PRD, ;soft=1,free=1,定时器遇到断点后继续运行 STM #0008H, IFR ;清除中断 STM #0008H,IMR ;开放定时中断 RSBX INTM ;开放中断
二、时钟发生器 时钟发生器为C54X提供时钟信号。时钟发生器由 内部振荡器和锁相环(PLL)电路两部分组成。时钟发 生器要求有一个参考时钟输入,可以有两种方法提供:
C54X内部的PLL兼有频率放大和信号提纯的功能。用高稳定的参考振荡器锁定,可以提供高稳定的频率源。所以,C54X的外部频率源的频率可以比CPU的机器周期CLKOUT的速率低,这样就能降低因高速开关时钟所造成的高频噪声。
锁相环PLL的配置分为硬件和软件两种 (1)、硬件配置的PLL
(3)、软件可编程PLL DSP可以通过软件编程的方法,对时钟方式寄存器(CLKMD,58H)进行设置,以实现对时钟的控制。 两种时钟方式: • PLL方式。输入时钟(CLKIN)乘以0.25~15共31个系数。 • DIV(分频器)方式。输入时钟除以2或4。当采用DIV方式时,所有的模拟电路,包括PLL电路都关断,以使功耗最小。
注: 在PLL锁定之前,不能用作时钟。可通过对CLKMD 寄存器中的PLLCOUNT位编程,进行延时,直到PLL锁 定为止。 这里主要靠PLL中的锁定定时器,PLLCOUNT的数 值(0~255)加载后,每16个输入时钟CLKIN,锁定定 时器减1,直到0为止。因此,锁定延时时间的设定可以 为0~255*16*CLKIN。