DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt

上传人:本田雅阁 文档编号:3480248 上传时间:2019-09-01 格式:PPT 页数:79 大小:926.02KB
返回 下载 相关 举报
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第1页
第1页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第2页
第2页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第3页
第3页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第4页
第4页 / 共79页
DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt》由会员分享,可在线阅读,更多相关《DSP课件乔瑞萍第6章TMS320C54x片内外设.ppt(79页珍藏版)》请在三一文库上搜索。

1、第6章 TMS320C54x片内外设,6.1 时钟发生器 6.2 中断系统 6.3 定时器 6.4 主机接口 6.5 串行口,6.1 时 钟 发 生 器,6.1.1 时钟电路 时钟发生器为TMS320C54x提供时钟信号,其包括一个内部振荡器和一个锁相环电路。时钟发生器可以由内部振荡电路或外部时钟源驱动,这两种驱动方式如图6-1所示。,图6-1 时钟电路, 内部振荡电路驱动方式:将一个晶体跨接到X1和X2/CLKIN引脚两端,使内部振荡器工作,图中的电路工作在基波方式,建议C1和C2用10 pF。如果工作在谐波方式,则还要加一些元件。 外部时钟源驱动方式:将一个外部时钟信号直接加到X2/CLK

2、IN引脚(X1空着不接)。 硬件配置的PLL(如TMS320C541、TMS320C542、TMS320C543、TMS320C545和TMS320C546); 软件可编程PLL(如TMS320C545A、TMS320C546A和TMS320C548)。,1硬件配置的PLL 通过设定TMS320C54x的3个引脚(CLKMD1、CLKMD2和CLKMD3)的状态来完成PLL的配置。时钟方式的配置方法如表6-1所示。,表6-1 时钟方式的配置方法,2软件可编程PLL 软件可编程PLL是一种高度灵活的时钟控制方式,它的时钟定标器提供各种时钟乘法器系数,并能直接接通和关断PLL。PLL的锁定定时器可

3、以用于延迟转换PLL的时钟方式,直到锁定为止。 通过软件编程,可以选用以下两种时钟方式中的一种:, PLL方式。输入时钟(CLKIN)乘以0.2515共31个系数中的一个系数。这是靠PLL电路来完成的。 DIV(分频器)方式。输入时钟(CLKIN)除以2或4。当采用DIV方式时,所有的模拟电路,包括PLL电路都关断,以使功耗最小。 软件可编程PLL通过读/写时钟方式寄存器(CLKMD)来完成。,6.1.2 时钟模块编程 软件可编程PLL可以对时钟方式寄存器(CLKMD)编程加载,以配置成所要求的时钟方式。CLKMD寄存器是16位存储器映像寄存器,地址为0058H。它是用来定义PLL时钟模块中的

4、时钟配置。CLKMD的结构如图6-2所示。,图6-2 CLKMD的结构,表6-2 时钟方式寄存器(CLKMD)各位段的功能,表6-3 PLL 的 乘 数,6.1.3 低功耗(节电)模式 TMS320C54x器件有四种节电模式,此时,可以通过停止DSP内部的不同时钟,使TMS320C54x的核心进入休眠状态,降低功耗,且能保持CPU中的内容。当节电模式结束时,唤醒DSP可以连续工作下去。 通过执行IDLE1、IDLE2和IDLE3三条指令,或使信号为低电平,可使处理器进入不同的节电模式。表6-4列出了四种节电特性。,表6-4 四种节电工作方式,1) IDLE1模式 IDLE1暂停所有的CPU活动

5、,但片内外设仍在工作。片内外设如串口定时器等的中断可唤醒CPU结束节电工作方式。 2) IDLE2模式 IDLE2暂停CPU和片内外设的工作。由于片内外设也停止了工作,不能产生中断,因而其唤醒方式不同于IDLE1,但是,其功耗却明显降低。,3) IDLE3模式 IDLE3模式类同于IDLE2,它使片内锁相环PLL暂停工作,这样就完全使TMS320C54x停止了工作。与IDLE2相比,IDLE3更显著地降低了功耗。 4) HOLD模式 HOLD模式是另外一种节电模式,它使外部地址总线、数据总线和控制总线进入高阻状态,也可以使CPU暂停工作,这取决于HM位的状态。,6.2 中 断 系 统,6.2.

6、1 中断结构 1中断类型 TMS320C54x中断既支持硬件中断,也支持软件中断。软件中断由程序指令引起,如INTR、TRAP或RESET。硬件中断有外部硬件中断和内部硬件中断。外部硬件中断由外部中断口的信号触发;内部硬件中断由片内外围电路的信号触发。软件中断不分优先级,硬件中断有优先级。,当多个硬件中断同时请求时,TMS320C54x根据优先级别的不同对其进行服务,TMS320C54x的硬件中断优先级见附录3,其中,1为最高优先级。,无论是硬件中断还是软件中断,TMS320C54x的中断可分为如下两大类。 1) 可屏蔽中断 可屏蔽中断是可用软件来屏蔽或开放的中断,即通过对中断屏蔽寄存器(IM

7、R)中的相应位和状态寄存器(ST1)中的中断允许控制位INTM编程来屏蔽或开放该中断。TMS320C54x最多可以支持16个用户可屏蔽中断(SINT15SINT0),但有的处理器只用了其中的一部分。有些中断有两个名称,如TMS320C541。,2) 非可屏蔽中断 非可屏蔽中断是不能用软件来屏蔽的中断,不受IMR和INTM位的影响。TMS320C54x对这一类中断总是响应的,并从主程序转移到中断服务程序。,2中断管理寄存器 1) 中断标志寄存器 中断标志寄存器(IFR,Interrupt Flag Register)是一个16位存储器映像的CPU寄存器,位于数据存储器空间内,地址为0001H。当

8、一个中断出现的时候,TMS320C54x DSP收到了一个相应的中断请求(中断挂起),此时,IFR中相应的中断标志位为1。TMS320C541 IFR的位定义如图6-3所示,各位对应的可屏蔽中断源的说明见附录3。,6-3 图TMS320C541的位定义,2) 中断屏蔽寄存器 在状态寄存器ST1中的第11位INTM是中断方式位,该位是可屏蔽中断的总允许控制位。INTM=0时,开放全部可屏蔽中断;INTM=1时,禁止所有可屏蔽中断。 INTM不修改中断标志寄存器(IFR)和中断屏蔽寄存器(IMR,Interrupt Mask Register)。,图6-4 TMS320C541 IMR的位定义,3

9、中断向量 TMS320C54x给每个中断源都分配有一个确定的中断向量偏移地址(见附录3),该地址为可屏蔽中断服务程序进入各中断源服务程序的偏移地址,这样以来,可判断中断源的身份,并进入对应中断源的服务程序。,图6-5 中断向量地址的形成,6.2.2 中断流程 1接受中断请求 当发生硬件和软件指令请求中断时,IFR中相应的标志位置为有效电平。无论DSP是否响应中断,该标志都处于有效电平。在相应中断发生时,该标志自动清除。 硬件中断有外部和内部之分。外部硬件中断由外部接口信号自动请求,内部硬件中断由片内外设信号自动请求。 软件中断都是由程序中的指令INTR、TRAP和RESET产生的。,(1) I

10、NTR K:该指令可启动TMS320C54x的任何中断。 (2) TRAP K:TRAP与INTR的不同之处是TRAP中断时,不需要设置INTM位。 (3) RESET:该指令可在程序的任何时候发生,它使处理器返回一个已知状态。,2响应中断 对于软件中断和非可屏蔽中断,CPU立即响应。如果是可屏蔽中断,只有满足以下条件才能响应: (1) 优先级别最高。 (2) ST1中的INTM位为0,允许可屏蔽中断。 (3) IMR中的相应位为1,允许可屏蔽中断。,3执行中断服务程序 响应中断之后,CPU将执行下列操作: (1) 将PC值(即返回地址)压入堆栈。 (2) 将中断向量的地址装入PC;将程序引导

11、至中断服务程序ISR。 (3) 现场保护,将某些要保护的寄存器和变量压入堆栈。,(4) 执行中断服务程序ISR。 (5) 恢复现场,以逆序将所保护的寄存器和变量弹出堆栈。 (6) 中断返回,从堆栈弹出返回地址加载到PC。 (7) 继续执行被中断的程序。,图6-6 中断操作流程图,6.2.3 中断编程 第4章的例20就是一个简单完整的中断程序模板,中断过程如图6-7所示。利用软件仿真外部硬件中断int2,程序中的开放中断和中断服务程序片段如下:,STM #0,SWWSR ;开中断 RSBX INTM STM #04H, IMR INT_2: SFTA A,8 ;中断服务程序 RETE,图6-7

12、中断过程,INT_2引起标准中断矢量表程序相应的int2变化如下: * * 中断矢量表程序 * * .title “vectors.asm“ ;定义段的名称为vectors .ref start ;程序入口 .ref INT_2 .sect “vectors“,reset: B start ;复位引起的中断 nop nop nmi: RETE ;使能NMI中断 NOP NOP NOP,sint17 .space 4*16 ;程序内部的软件中断 sint18 .space 4*16 sint19 .space 4*16 sint20 .space 4*16 sint21 .space 4*16

13、sint22 .space 4*16 sint23 .space 4*16 sint24 .space 4*16 sint25 .space 4*16,sint26 .space 4*16 sint27 .space 4*16 sint28 .space 4*16 sint29 .space 4*16 sint30 .space 4*16 int0: RETE ;外部中断0 NOP NOP NOP,int1: RETE ;外部中断1 nop nop nop int2: b INT_2 ;外部中断2 nop nop nop,tint: RETE ;定时器中断 NOP NOP NOP rint0:

14、 RETE ;串口0接收中断 NOP NOP NOP,xint0: RETE ;串口0发送中断 NOP NOP NOP rint1: RETE ;串口1接收中断 NOP NOP NOP,xint1: RETE ;串口1发送中断 NOP NOP NOP Int3: RETE ;外部中断3 nop nop nop .end,6.3 定 时 器,6.3.1 定时器结构 定时器主要由3个寄存器所组成:定时器寄存器(TIM,Timer Registers)、定时器周期寄存器(PRD,Timer Period Registers)和定时器控制寄存器(TCR,Timer Control Registers)

15、。这3个寄存器都是16位存储器映像寄存器,在数据存储器中的地址分别为0024H、0025H和0026H(见附录4)。TIM是一个减1计数器;PRD中存放时间常数;TCR中包含有定时器的控制位和状态位。定时器的功能框图如图6-8所示。,图6-8 定时器的功能框图,图6-8中含一个16位的主计数器(TIM)和一个4位预定标计数器(PSC)。TIM从周期寄存器PRD加载,PSC从周期寄存器TDDR加载。 定时器的典型操作顺序为 (1) 在每个CLKOUT脉冲后PSC减1,直到它变为0。 (2) 在下一个CLKOUT周期,TDDR加载新的除计数值到PSC,并使TIM减1。,(3) 以同样方式,PSC和

16、TIM连续进行减操作,直到TIM减为0。 (4) 在下一个CLKOUT周期,将定时器中断信号(TINT)送到CPU,同时又用另一脉冲送到TOUT引脚,把新定时器计数值从PRD加载到TIM,并使PSC再次减1。 因此,定时器中断的速率为,TINT速率=,6.3.2 定时器编程 定时器可访问的寄存器有三个:TIM、PRD和TCR。TIM和PRD这两种寄存器共同工作,提供定时器的当前计数值。 读TIM可以知道定时器中的当前值。在正常情况下,当TIM减到0后,PRD中的时间常数自动地加载到TIM。当系统复位( =1)或定时器复位(TRB=1)时,PRD中的时间常数重新加载到TIM。,控制寄存器(TCR

17、)包含的控制位有下列功能: 控制定时器模式; 指定定时器预先定标计数器的当前计数值; 重新加载定时器; 启动、停止定时器; 定义定时器的分频系数。 TCR的结构如图6-9所示。,图6-9 TCR的结构,TCR中各控制位和状态位的功能描述如下: TDDR(Timer Divide-Down Ratio):定时器分频系数。按此分频系数对CLKOUT进行分频,以改变定时周期。当PSC减到0后,以TDDR中的数重新加载PSC。复位时,TDDR各位清零。 TSS(Timer Stop Status):定时器停止状态位,用于停止或启动定时器。TSS=0时,定时器启动工作;TSS=1时,定时器停止工作,关闭

18、定时器可以减小器件的功耗。复位时,TSS位清零,定时器立刻开始定时。,TRB(Timer Reload):定时器重新加载位,用来复位片内定时器。当TRB置1时,TIM装入PRD中的数,并且PSC装入TDDR中的值。TRB总是读成0。 PSC(Timer Prescaler Counter):定时器预定标计数器。当PSC减到0后,PSC装入TDDR中的值,并且TIM减1。PSC可被TCR读取,但不能直接写入。 Soft、Free:这两位结合起来使用,以仿真在HLL调试程序遇到断点时定时器的状态。 当Soft=0、Free=0时,定时器立即停止工作;当Soft=1、Free=0且计数器减到0时,定

19、时器停止工作;当Soft=x、Free=1时,定时器继续运行。,Res:保留位读成0。 读TIM和TCR要用两条指令,在两次读之间有可能发生读数变化。因此,若需要精确的定时测量,就应当在读这两值之前先关闭定时器。 复位时,TIM和PRD都置成最大值(FFFFH),定时器的分频系数TCR中的TDDR置0,定时器启动。,定时器初始化步骤及其所对应的指令如下: (1) 将TCR中的TSS位(停止状态位)置1,关闭定时器。 STM #0010H,TCR (2) 加载PRD。 STM #0100H,PRD;TINT周期=CLKOUT(TDDR+1)(PRD+1) (3) 重新加载TCR(使TDDR初始化

20、;令TSS位为0,以接通CLKOUT;重新加载位TRB位置1,以使TIM减到0后重新加载PRD),启动定时器。,STM #0C20H,TCR;SOft=1,Free=1,定时器遇到断点后继续进行若要开放定时中断,必须(假定INTM=1)做到以下几点: 将IFR中的TINT位置1,清除尚未处理完的定时器中断。 STM #0008H,IFR 将IMR中的TINT位置1,开放定时器中断。 STM #0008H,IMR 将STI中的INTM位置0,从整体上开放中断。 RSBX INTM,6.4 主 机 接 口,6.4.1 HPI结构及其工作方式 HPI主要由五个部分组成,如图6-10所示。 (1) H

21、PI存储器(DARAM):用于TMS320C54x与主机间传送数据。 (2) HPI地址寄存器(HPIA):由主机对其直接访问,存放当前寻址HPI存储单元的地址。,图6-10 主机接口的组成框图,(3) HPI数据锁存器(HPID):由主机对其直接访问,存放当前进行读/写的数据。 (4) HPI控制寄存器(HPIC):TMS320C54x和主机都能对其直接访问,用于主处理器与DSP相互握手,实现相互中断请求。 (5) HPI控制逻辑:用于处理HPI与主机之间的接口信号。,6.4.2 HPI接口设计 HPI提供灵活而方便的接口,接口外围电路简单。TMS320C54x HPI与主机相连时,几乎不需

22、要附加其他的逻辑电路。图6-11给出了其连接框图。 HPI接口信号可分为以下几类: 数据总线:HD0HD7,即数据总线宽度为8位。 地址总线。 控制线。 握手线。,图6-11 TMS320C54x HPI与主机的连接框图,6.4.3 HPI控制寄存器 HPI有三个可访问的寄存器:HPIA、HPID和HPIC。主机要通过HPI接口访问TMS320C54x片内RAM,首先要初始化HPIC,然后设置HPIA,最后读写TMS320C54x的片内RAM,对HIPD进行操作。HPIC是一个16位存储器映像寄存器,在数据存储器空间的地址为002CH。HPIC中有4个状态位控制着HPI的操作,各位的含义如下。

23、,BOB:字节选择位。 SMOD:寻址方式选择位。 DSPINT:主机向TMS320C54x发出中断位。 HINT:TMS320C54x向主机发出中断位。,图6-12 主机和TMS320C54x访问HPIC寄存器的结果 (a) 主机读HPIC;(b) 主机写HPIC;(c) TMS320C54x读HPIC; (d) TMS320C54x写HPIC,6.5 串 行 口,6.5.1 串行口概述 TMS320C54x具有高速、全双工串行口,可以与串行设备(如编解码器和串行A/D转换器)直接通信,也可用于多处理器系统中处理器之间的通信。,所谓串行通信,就是发送器将并行数据逐位移出成为串行数据流,接收器

24、将串行数据流以一定的时序和一定的格式呈现在连接收/发器的数据线上。 TMS320C54x有三种类型的串行口:标准同步串行口(SPI)、缓冲串行口(BSP)和时分多路串行口(TDM)。 标准同步串行口(SPI,Serial Port Interface):有两个独立的缓冲器用于传送数据,接收缓冲器和发送缓冲器,每个缓冲器有一条可屏蔽的中断线。串行数据可以按8位字或16位字转换。,缓冲串行口(BSP,Buffered Serial Port):在标准同步串行口的基础上增加了一个自动缓冲单元(ABU)。BSP是一种增强型标准串行口,它是全双工的,并有两个可设置大小的缓冲区。缓冲同步串口支持高速的传送

25、,并减少中断服务的次数。ABU利用独立于CPU的专用总线,让串行口直接读/写TMS320C54x的接收/发送缓冲区。 时分多路复用串行接口(TDM,Time-Division Multiplexed):允许同一个串口以分时方式传送多路数据,TDM为多处理器通信提供了一种简单而有效的方式。,6.5.2 串行口的组成框图 标准同步串行口由16位发送数据寄存器(DXR)、接收数据寄存器(DRR)、发送移位寄存器(XSR)、接收移位寄存器(RSR)以及控制电路组成。每个串行口的发送和接收部分都有与之相关联的时钟、帧同步脉冲以及数据信号。其组成如图6-13所示。 TMS320C54x通过3条信号线连接到

26、串口。图6-14给出了两个TMS320C54x进行串行通信的硬件连接图。下面将介绍串行口接收和发送数据的过程。,CPU发送数据时,先将要发送的数据写到DXR上。若上一个字已串行传送到串行发送数据引脚信号(DX)引脚上,此时,XSR是空的,则将DXR中的数据拷贝到XSR。在发送时的帧同步信号(FSX)和发送时钟信号(CLKX)的作用下,将XSR中的数据送到DX引脚输出。接收数据时,在接收时的帧同步信号(FSR)和接收时钟信号(CLKR)的作用下,将来自 串行数据信号(DR)引脚的数据先移位到RSR,再从RSR拷贝至DRR,CPU从DRR中读取数据。,图6-13 串行口的组成框图,图6-14 串行

27、口传送数据连接图,6.5.3 串行口编程 串行口可通过访问3个寄存器工作,这3个寄存器均为16位存储器映射寄存器,分别为:串行口控制寄存器(SPC)、发送数据寄存器(DXR)和接收数据寄存器(DRR)。它们在数据空间的地址见附录4。 DXR和DRR可在串行操作时用于传送和获取数据;而TMS320C54x串行口的操作则是由SPC控制的。SPC的结构如图6-15所示。,图6-15 SPC的结构,SPC中各位的功能描述如下: Free、Soft:仿真控制位。 RSRFULL:接收移位寄存器已满标志位。 :发送移位寄存器已空标志位。 XRDY:发送准备就绪位。 RRDY:接收就绪位。 IN1:当CLK

28、X引脚作为输入时,该位反映输入信号的电平。 IN0:当CLKR引脚作为输入时,该位反映输入信号的电平。,:接收复位标志。 :发送复位标志。 TXM:发送方式(TXM)位,用于设定帧同步脉冲FSX的来源。,下面给出串行口初始化的步骤和各个串行口控制寄存器的初始值。 可管理访问串行口的缓冲器的方法有两种:查询法和中断法。下面针对这两种方法如何初始化分别作以介绍。 (1) 查询法:查询串行口控制寄存器SPC。 (2) 中断法:开放串行口中断。,用这种方法进行串行口初始化的步骤如下: 复位和初始化串行口。给SPC寄存器写入0038H(或0008H)。具体配置为,CLKX使用内部时钟(CLKX信号作为输出),串口通信使用突发模式,使用内部帧同步信号(FSX信号作为输出)。 清除任何正在进行中的中断。给IFR置00C0H(XINT、RINT置位)。 允许串行口中断。给IMR置00C0H。 从整体上开放中断。将ST1中的INTM位置0。 启动串行口。给SPC置00F8H(或00C8H)。 写第一个数据值给DXR。,串行口的中断服务子程序ISR具有如下功能: (1) 保存堆栈中任何被修改的内容; (2) 读DRR或写DXR; (3) 恢复保存在(1)中的内容; (4) 返回RETE。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1