《DSP处理器原理与应用》课件第5章.ppt

上传人(卖家):momomo 文档编号:8223325 上传时间:2025-01-13 格式:PPT 页数:140 大小:1.20MB
下载 相关 举报
《DSP处理器原理与应用》课件第5章.ppt_第1页
第1页 / 共140页
《DSP处理器原理与应用》课件第5章.ppt_第2页
第2页 / 共140页
《DSP处理器原理与应用》课件第5章.ppt_第3页
第3页 / 共140页
《DSP处理器原理与应用》课件第5章.ppt_第4页
第4页 / 共140页
《DSP处理器原理与应用》课件第5章.ppt_第5页
第5页 / 共140页
点击查看更多>>
资源描述

1、第5章 TMS320C55X DSP的外设 5.1 引言引言 5.2 通用计时器通用计时器 5.3 TMS320C5509 DSP片上片上ADC 5.4 外部存储器接口外部存储器接口(EMIF)5.5 本章小结本章小结习题与思考题习题与思考题在第1章中,我们讲到DSP处理器往往需要脱机独立工作,为与外设接口方便,其中往往设置了丰富的周边接口电路。在实际应用中掌握DSP片上外设的使用方法非常重要。图5-1为TMS320C5509的CPU、总线、片上存储器以及部分片上外设的示意图。如图所示的TMS320C5509有多种片上外设,这给我们的设计和应用带来了很大的方便。5.1 引引 言言TMS320C

2、5509的片上外设主要有:时钟产生器(振荡器与锁相环PLL)、计时器(Timer)、通用的I/O口(GPIO)、多通道同步缓冲串口(McBSP)、主机接口(HIP)、直接存储器访问(DMA)控制器、外部存储器接口(EMIF)、内部集成电路(I2C)模块、多媒体卡(MMC)控制器、USB2.0接口、模拟/数字转换器(ADC)等。本书将在本章以及后续章节介绍TMS320C5509的片上外设的使用方法。在学习的过程中,大家可以参考TI公司针对不同外设的应用手册。图5-1 TMS320C5509的CPU、总线、片上存储器以及部分片上外设示意图5.2.1 通用计时器简介通用计时器简介TMS320C550

3、9的通用计时器由两个计数器组成,提供了20 bit的计数范围:1个4 bit的预定标计数器和1个16 bit的主计数器。图5-2所示是通用计时器的原理框图。5.2 通通用用计计时时器器图5-2 通用计时器原理框图该计时器有两个计数器(PSC和TIM)和两个周期寄存器(TDDR和PRD)。TDDR和PRD里面存放计时器的计时值,而计时的任务由PSC和TIM来完成。在计数器初始化或计数器重新装入过程中,周期寄存器的内容会被复制到计数寄存器中。计时器控制器(TCR)控制和监视计时器和计时器引脚(TIN/TOUT)的工作状态。根据TCR中的FUNC bit的值,可以将计时器引脚配置成通用输出(同TCR

4、的DATAOUT bit相连接)、计时器输出、一个时钟输入或者高阻状态。预定标计数器由输入时钟驱动,这个输入时钟可以是CPU时钟也可以是外部时钟。每个时钟周期,PSC减1。当PSC减为0时,TIM会自动减1。当TIM减为0后一个周期,计时器会向CPU发出中断请求,向DMA控制器发出一个同步事件(TEVT),同时送出一个输出信号到计时器引脚。如果置位TCR中的自动装入位(ARB),则计时器配置成自动装入模式。在这种模式下,每当计时器计数减为0,预定标和计数器的值都会被重新装入。为了保证在自动装入模式下,计时器的输出引脚能正常工作,计时器的周期(TDDR+1)(PRD+1)必须大于等于4个时钟周期

5、。5.2.2 TMS320C55X中断系统中断系统中断指的是这样一个过程:CPU正处理某件事情(执行程序)时,外部发生了某一件事件并向CPU发信号请求去处理,CPU暂时中断当前工作,转去处理这一事件(进入中断服务程序),处理完再回来继续原来的工作。实现这种功能的部件称为中断系统,产生中断的请求源称为中断源。中断系统使得DSP能够处理多个任务。DSP有许多中断源,可以设置中断控制寄存器来确定响应哪些中断而不理会哪些中断。DSP在对片上外设操作时很多时候都要用到中断。C55X支持32个中断服务子程序ISR。有些ISR可以由软件或硬件触发,有些则只能由软件触发。当CPU同时接收到多个硬件中断请求时,

6、CPU会按照预先定义的优先级对它们做出响应和处理。所有的C55X中断,无论是软件还是硬件中断,都可分成可屏蔽中断、不可屏蔽中断两类。可屏蔽中断可以通过软件来加以屏蔽,不可屏蔽中断则不能被屏蔽。所有的软件中断都是不可屏蔽中断。1中断管理寄存器中断管理寄存器C55X的中断管理寄存器如表5-1所示。表表5-1 C55X的中断管理寄存器的中断管理寄存器1)中断向量指针(IVPD、IVPH)中断向量均为16 bit指向程序空间的中断向量。DSP中断向量指针(IVPD)指向256 byte的程序页,它包括了DSP中断向量IV0IV15和IV24IV31。这些向量都可以映射到只分配给DSP的存储器。主机中断

7、向量指针(IVPH)指向256 byte的程序页,它包括了主机中断向量IV16IV23。这些向量都可以映射到DSP和主机处理器共享的存储器,因此主机处理器可以定义相关的中断服务子程序。如果IVPD和IVPH的值相同,则所有的中断向量会在同一个256 byte的程序页里。DSP硬件复位时,给两个IVP都装入FFFFh。两个IVP都不受软件复位指令的影响。在修改IVPD和IVPH之前,要确认:可屏蔽中断被全局禁止(INTM=1)。这可以防止IVP被修改成指向新向量之前,产生任何可屏蔽中断。每个硬件非屏蔽中断,对于旧的IVPD和新的IVPD值,都有一个向量和一个中断服务子程序。如果在修改IVPD过程

8、中,发生一个硬件非屏蔽中断,就可防止提取非法指令代码。表5-2说明不同中断向量的地址如何产生。CPU连接一个16 bit的中断向量指针和一个编码成5 bit的向量数(例如,IV1是00001,IV16是10000),再左移3 bit。表表5-2 向量与向量地址的形成向量与向量地址的形成2)中断标志寄存器(IFR0、IFR1)两个16 bit的中断标志寄存器IFR0和IFRl包含了所有可屏蔽中断的标志位。当一个可屏蔽中断的要求到达CPU时,一个IFR的相应标志置l,它表示中断还未解决或正等待CPU的确认。图5-3所示是C55X IFR0寄存器的示意图,表5-3是IFR0各位域的功能说明,IFR1

9、示意图在图5-4中给出,其具体各位域的功能可以参考TMS320VC5509A的数据手册。可以通过读IFR来确定未决的中断,写IFR来清零未决中断。要清零一个中断请求(且将其IFR bit清零),则写1到相应的IFR bit。例如:;清零标志IF 14和IF 2MOV#0100000000000100b,mmap(IFR0)所有未决的中断,都可通过把IFR现有内容写回到IFR来清零。硬件中断请求的确认也可清零相应的IFR bit。一个器件的复位也可清零所有的IFR bit。表表5-3 IFR0寄存器各位功能寄存器各位功能图5-3 IFR0寄存器图5-4 IFR1寄存器3)中断使能寄存器(IER0

10、、IER1)要使能一个可屏蔽中断,将其IER0或IER1里的相应位置1。要禁止一个可屏蔽中断,则将其IER0或IER1里相应的使能位置0。复位时,所有的IER bit都清0,禁止所有的可屏蔽中断。IER0和IER1的各位所对应的中断与IFR0和IFR1相同,可以参考表5-3和图5-3、图5-4。4)调试中断使能寄存器(DBIER0、DBIER1)只有当调试器工作在实时仿真模式,CPU暂停的情况下,才使用这两个16 bit的调试中断使能寄存器:DBIER0和DBIER1。如果CPU以实时模式运行,则使用标准的中断处理程序,而不用DBIER。在一个DBIER里,使能的可屏蔽中断定义为临界的时间中断

11、。当CPU在实时模式下暂停时,只对临界的时间中断提供服务,而临界的时间中断也在中断使能寄存器(IER1或IER0)里使能。读DBIER来识别临界的时间中断。写DBIER来使能或禁止临界的时间中断。要使能一个中断,则对相应的bit置位。要禁止一个中断,则将相应的bit清0。用户可参阅C55X DSP的数据手册,了解DBIER各bit所对应的中断。注意:DBIERl和DBIER0不受软复位指令或DSP硬件复位的影响。用户使用实时仿真模式前,要先初始化这些寄存器。2.中断响应过程中断响应过程DSP处理中断的4个步骤如下:(1)接收中断请求。软件或硬件都要求将当前程序队列挂起。(2)响应中断请求。CP

12、U必须响应中断请求。如果是可屏蔽中断,则响应必须满足某些条件;如果是不可屏蔽中断,则CPU立即响应。(3)准备进入中断服务子程序。CPU要执行的主要任务有:完成当前指令的执行,并冲掉流水线上还未解码的指令。自动将某些必要的寄存器的值保存到数据堆栈和系统堆栈。从用户事先设置好的向量地址获取中断向量,该中断向量指向中断服务子程序。(4)执行中断服务子程序。CPU执行用户编写的ISR。ISR以一条中断返回指令结束,自动恢复步骤(3)中自动保存的寄存器值。注意:外部中断只能发生在CPU退出复位后的至少3个周期后,否则无效。在硬件复位后,不论INTM bit的设置和寄存器IER0、IERl的值如何,所有

13、的中断(可屏蔽和不可屏蔽)都被禁止,直到通过软件写堆栈指针(SP和SSP寄存器)初始化堆栈后,才可开放中断。堆栈初始化后,INTM bit和寄存器IER0、IER1的值决定开放哪些中断。5.2.3 计时器中断计时器中断通用计时器有一个计时器中断信号(TINT)。当主计数寄存器(TIM)减为0时,计时器会向CPU发出中断请求,计时器中断的速率为:(5-1)1)(PRD1)(TDDR输入时钟速率TINT速ITINT会自动在一个中断标志寄存器(IFR0和IFR1)设置一个标志。用户可以在中断使能寄存器(IER0和IER1)以及调试中断使能寄存器(DBIER0和DBIER1)里,使能或禁止这个中断。没

14、有使用通用计时器时,禁止计时器中断,以免产生不希望的中断。由5.2.2节我们知道计时器0中断对应IER0和IFR0的第4位。5.2.4 计时器寄存器计时器寄存器对于通用计时器,DSP包含了如表5-4所列的寄存器。表表5-4 通用计时器寄存器通用计时器寄存器1.周期和计数寄存器周期和计数寄存器周期和计数寄存器的说明如表5-5所示,其位域的分布如图5-5所示。表表5-5 周期和计数寄存器周期和计数寄存器图5-5 通用计时器里的周期和计数寄存器对于周期和计数寄存器各位域的说明如表5-65-8所示。表表5-6 寄存器寄存器 PRSC各位域的说明各位域的说明表表5-7 寄存器寄存器PRD各位域的说明各位

15、域的说明表表5-8 寄存器寄存器TIM各位域的说明各位域的说明2.计数器控制寄存器计数器控制寄存器(TCR)图5-6所示是计数器控制寄存器(TCR)。表5-9说明了TCR的各域。通过置位TCR的各域,可以配置、启动、停止、装入/重新装入计时器。TCR中的其他bit控制相关的计时器输出引脚的功能。图5-6 计数器控制寄存器(TCR)表表5-9 TCR 的的 域域续续续5.2.5 计时器的操作计时器的操作计时器的操作主要有2部分,一是对其寄存器进行初始化,二是设置中断向量。计时器初始化步骤如下:(1)确定计时器是停止的(TSS=1),使能计时器自动装入(TLB=1),正确的置位TCR中的其他控制b

16、it。当TLB为1时,周期寄存器(PRD和TDDR)中的值会自动装入计数寄存器(TIM和PSC)。(2)通过写PRSC中的TDDR,装入期望的预定标计数周期系数(以输入时钟周期为基本单位)。(3)往PRD中装入主计数器系数(以输入时钟周期为基本单位)。(4)关闭计时器自动装入(TLB=0),启动计时器(TSS=0)。当计时器开始工作时,TIM会保持PRD的值,PSC会保持TDDR的值。下面是一个计时器初始化的实例:void TIMER_init(void)/初始化计时器 ioport unsigned int*tim0;ioport unsigned int*prd0;ioport unsig

17、ned int*tcr0;ioport unsigned int*prsc0;tim0 =(unsigned int*)0 x1000;/定时器0计数寄存器地址prd0 =(unsigned int*)0 x1001;/定时器0周期寄存器地址tcr0 =(unsigned int*)0 x1002;/定时器0控制寄存器地址prsc0=(unsigned int*)0 x1003;/定时器0预定标寄存器地址 *tcr0=0 x04f0;/TLB=1;ARB=1;TSS=1*tim0=0;/清主计数器 *prd0=0 x0ffff;/设置周期寄存器PRD=FFFFH *prsc0=2;/设置周期寄

18、存器TDDR=2,清预定标寄存器PSC=0 *tcr0=0 x00e0;/TLB=0;ARB=1;TSS=0通用计时器有一个计时器中断信号(TINT)。当主计数器(TIM)减为0时,计时器会向CPU发出中断请求。TINT会自动在一个中断标志寄存器(IFR0和IFR1)设置一个标志。用户可以在中断使能寄存器(IER0和IER1)以及调试中断使能寄存器(DBIER0和DBIER1)里,使能或禁止这个中断,以免产生不希望出现的中断。下面是一个设置中断的实例:void INTR_init(void)IVPD=0 xd0;/设置中断向量表的起始地址为0 xd000IVPH=0 xd0;IER0=0 x1

19、0;/中断使能寄存器IER0的TINT0位置1,即开计时器0中断DBIER0=0 x10;/调试中断使能寄存器的相关位置位IFR0=0 xffff;/清除中断标志位asm(“BCLR INTM”);/嵌入汇编语句,清可屏蔽中断屏蔽位一、任务目的一、任务目的(1)熟悉VC5509A的定时器;(2)掌握VC5509A定时器的控制方法;(3)掌握VC5509A的中断结构和对中断的处理流程;(4)学会C语言中断程序设计,以及运用中断程序控制程序流程。任务任务7 DSP的定时器的定时器二、所需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows

20、 98、Windows XP,以下假定操作系统为Windows 2000)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,Windows XP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。如无试验箱则配备ICETEK-USB或ICETEK-PP仿真器和ICETEK-VC5509-A或ICETEK-VC5509-C评估板,+5 V电源一只。(3)USB连接电缆一条(如使用PP型仿真器换用并口电缆一条)。三、相关原理三、相关原理1通用定时器介绍及其控制方法通用定时器介绍及其

21、控制方法(略略)2中断响应过程中断响应过程外设事件要引起CPU中断,必须保证:IER中相应使能位被使能,IFR相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态。外设(如定时器)中断发生时,首先跳转到相应高级的中断服务程序中(如:定时器1会引起TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。3中断程序设计中断程序设计程序中应包含中断向量表,VC5509A默认向量表从程序区0地址开始存放,根据IPVD和IPVH的值确定向量表的实际地址。注意观察程序中INTR_init()函数的定义部分,其中IVPD和IVPH的值都为0

22、x0d0;同时观察配置文件ICETEK-VC5509-A.cmd中的VECT段描述中o=0 x0d000。向量表中每项为8个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。第一个向量表的首项为复位向量,即CPU复位操作完成后自动进入执行的程序入口。服务程序在服务操作完成后,清除相应中断标志并返回,完成一次中断服务。4程序流程图程序流程图程序流程图如图5-7所示。图5-7 程序流程图5程序分析程序分析主程序:#include myapp.h/定义指示灯寄存器地址和寄存器类型#define LBDS(*(unsigned int*)0 x400001)void INTR_init(v

23、oid);/定义中断初始化函数void TIMER_init(void);int nCount;main()nCount=0;/nCount置初值CLK_init();/调用时钟初始化函数SDRAM_init();/调用EMIF初始化函数,这将在本章后面讲述LBDS=0;/LBDS设为0,将指示灯关闭INTR_init();/中断初始化TIMER_init();/计时器初始化while(1)/死循环,等待中断void interrupt Timer()nCount+;nCount%=16;/中断计数,当进入中断16次后执行LBDS=1if(nCount=0)LBDS=1;/位操作,对LBDS进

24、行位异或程序的工程中包含了两种源代码,主程序采用C 语言编制利于控制,中断向量表在vector.asm汇编语言文件中,利于直观地控制存储区分配。在工程中只需将它们添加进来即可,编译系统会自动识别并分别处理,完成整合工作。Vector.asm程序:.sect.vectors ;开始命名段.vectors .ref _c_int00 ;C程序入口rsv:;Reset中断向量 B _c_int00 ;跳转到程序入口 NOP .align 8nmi:;不可屏蔽中断.loop 8nop.endloopint0:;外部中断INT0.loop 8nop.endloopint2:;外部中断INT2.loop

25、8nop.endloop.ref _Timer ;引用外部函数Timertint:;Timer0中断B _Timer ;跳转到中断服务子程序Timernop.align 8;节省篇幅,下面省略C5509共有32个中断向量,每个向量占4个字的空间。使用向量一般用一条跳转指令转到相应中断服务子程序,其余空位用NOP填充。程序的C语言主程序中包含了内嵌汇编语句,提供一种在需要更直接控制DSP状态时的方法,同样的方法也能提高C语言部分程序的计算效率。四、任务步骤四、任务步骤(1)设置Code Composer Studio 2.21在硬件仿真(Emulator)方式下运行。(2)启动Code Comp

26、oser Studio 2.21。(3)打开工程文件。打开菜单“Project”的“Open”项,选择项目文件夹下的“Timer.pjt”。在项目浏览器中,双击main.c,激活main.c文件,浏览该文件的内容,理解各语句作用。打开ICETEK-VC5509-A.cmd,对照vector.asm源程序学习中断向量表的写法。(4)编译、下载程序。(5)运行程序,观察结果。(6)改变TIMER_init()函数里*prd0=0 x0ffff为“=0 x0fff”;重复步骤(4)、(5),观察现象。(7)退出CCS。五、结果五、结果(1)指示灯在定时器的定时中断中按照设计定时闪烁。(2)使用定时器

27、和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转换、日常生活中的计时器计数、空调的定时启动和关闭等。(3)在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。六、问题与思考六、问题与思考(1)对照vector.asm和本任务程序的.cmd文件以及.map文件,看看中断向量表是如何定义的,以及其在存储器中的存放地址。(2)查阅相关资料以及本程序的CLK_init.c程序,看本任务的CPU时钟设置为多少,根据式(5-1)以及周期寄存器的设置计算计时的时间长度。5.3.1 ADC简介简介TMS320C5509 DSP内

28、部集成了一个10位连续逼近式数模转换器ADC。ADC将外部输入的模拟信号,转换为DSP处理的数字信号。该ADC在一个时刻可以最多对4路模拟输入的一个进行采样,并用10位的数字形式表示。该ADC的最大采样率为21.5 kHz,所以很适合对慢速变化的模拟信号进行采样。如在电源监视电路中对电压采样,这个ADC不适合作为ADC主数据流的源。其框图如图5-8所示。5.3 TMS320C5509 DSP片上片上ADC图5-8 ADC框图TMS320C5509 DSP内部集成的10位数模转换器ADC采用连续逼近方式,因此功耗很低。它采用保持电路来产生均匀间隔的脚本。该ADC使用引脚AVDD和AVSS上的外部

29、参考电压,将转换过程所使用的电压和系统电源电压隔离开。这些引脚也为模数转换提供参考电压,AVDD提供高电压,AVSS提供低电压。5.3.2 总转换时间总转换时间ADC的总转换时间由两个部分组成:采样保持时间和转换时间,如图5-9所示。采样保持时间是采样保持电路获取一个采样点的时间,一般大于等于40 s。转换时间是将一个采样值采用连续逼近的方法用数字的形式来表示的时间。转换时间要用13个转换时钟周期完成。内部的转换时钟最大可以达到2 MHz。图5-9 ADC总的转换时间5.3.3 初始化和监视转换周期初始化和监视转换周期ADC不是工作在连续模式下,因此每次转换时,DSP都必须将ADC控制寄存器(

30、ADCCTL)的ADCSTART bit置1。一旦启动转换,DSP就必须等待,直到转换完成,然后再去选择另一个通道,或者启动另一次新的转换。ADC不支持对DSP或者DMA的中断,所以DSP必须查询ADC数据寄存器(ADCDATA)的ADCBUSY bit来确定A/D转换的状态。在转换过程完成后,ADCBUSY bit的值从1变为0,表明转换的数据有效,DSP可以从ADCDATA将数据读走,ADCCTL寄存器中的通道选择(CHSELECT)bit复制到ADCDATA中,使DSP可以判断采样值是来自哪个通道。5.3.4 ADC寄存器寄存器ADC的寄存器如表5-10所示,通过DSP中可以访问的I/O

31、空间来访问这些寄存器。表表5-10 ADC寄存器寄存器1.ADC寄存器寄存器(ADCCTL)ADC的控制寄存器是一个读/写寄存器,用来选择模拟输入通道和启动一次转换,如图5-10和表5-11所示。图5-10 ADC寄存器ADCCTL表表5-11 ADC的控制寄存器的控制寄存器ADCCTL2.ADC的数据寄存器的数据寄存器(ADCDATA)ADC的数据寄存器(如图5-11和表5-12所示)是一个读/写寄存器,表示一个转换是否在进行,记录从模拟信号转换来的数字数据,还要指明数据所来自的通道。图5-11 ADC寄存器ADCDATA表表5-12 ADC寄存器寄存器ADCDATA3.ADC时钟分频寄存器

32、时钟分频寄存器(ADCCLKDIV)ADC时钟分频寄存器(如图5-12和表5-13所示)是一个读/写寄存器,表示转换时钟和采样保持时间的分频值。图5-12 ADC时钟分频寄存器ADCCLKDIV表表5-13 ADC时钟分频寄存器时钟分频寄存器ADCCLKDIV说明说明4ADC时钟控制寄存器时钟控制寄存器(ADCCLKDIV)ADC时钟控制寄存器如图5-13所示,其说明如表5-14所示。图图5-13 ADC时钟控制寄存器时钟控制寄存器ADCCLKDIV表5-14 ADC时钟控制寄存器ADCCLKDIV一、任务目的一、任务目的掌握VC5509A片内A/D的控制方法。任务8 单路、多路模数转换(A/

33、D)二、所需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows 98、Windows XP,以下假定操作系统为Windows 2000)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,WindowsXP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。如无试验箱则配备ICETEK-USB或ICETEK-PP仿真器和ICETEK-VC5509-A或ICETEK-VC5509-C评估板,+5V电源一只,信号发生器。(

34、3)USB连接电缆一条(如使用PP型仿真器换用并口电缆一条)。三、相关原理三、相关原理1TMS320VC5509A 模数转换模块特性模数转换模块特性(1)带内置采样和保持的10 位模数转换模块ADC,最小转换时间为500 ns,最大采样率为21.5 kHz。(2)2个模拟输入通道(AIN0、AIN1)。(3)采样和保持获取时间窗口有单独的预定标控制。图5-14 程序流程图2模数转换工作过程模数转换工作过程(1)模数转换模块接到启动转换信号后,开始转换第一个通道的数据。(2)经过一个采样时间的延迟后,将采样结果放入转换结果寄存器保存。(3)转换结束,设置标志。(4)等待下一个启动信号。3模数转换

35、的程序控制模数转换的程序控制模数转换相对于计算机来说是一个较为缓慢的过程,一般采用中断方式启动转换或保存结果,这样在CPU 忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,并且也要能及时地保存结果。由于TMS320VC5509A DSP芯片内的A/D转换精度是10位的,转换结果的低10位为所需数值,所以在保留时应注意将结果的高6位去除,取出低10位有效数字。关于TMS320VC5509A DSP 芯片内的A/D转换器的详细结构和控制方法,请参见TI用户手册TMS320VC5507/5509 DSP Analog-

36、to-Digital Converter(ADC)Reference Guide(spru568.pdf)。4程序说明程序说明程序流程图如图5-14所示。部分主程序:main()int i;unsigned int uWork;/定义中间工作变量 EnableAPLL();SDRAM_init();InitADC();PLL_Init(132);while(1)/死循环 for(i=0;i256;i+)/采样256个值ADCCTL=0 x8000;/启动A/D转换,通道0douWork=ADCDATA;while(uWork&0 x8000);/等待直到ADC数据可用后执行下面语句,注意/此处

37、的位操作nADC0i=uWork&0 x0fff;/屏蔽无效位,保留采样数据for(i=0;iGraph-Time/Frequency,在图5-15所示的窗口中进行设置。图5-15 设置图形界面(5)设置软件断点。在main.c中有断点注释的语句上加软件断点。(6)运行程序,观察结果。按F5键运行到断点,观察A/D转换产生的波形。按F12键连续运行,并调整信号源可调部分,观察实时A/D采样波形随之发生的变化。(7)保留工作区。选择菜单Fileworkspacesave workspacs As,输入文件名SY.wks。(8)退出CCS。五、结果五、结果我们可以看到ADC两个通道的采样波形如图5

38、-16所示。图5-16 程序运行图形界面六、问题与思考六、问题与思考(1)理解程序中的ADC初始化函数,看其是如何将ADCCLK设置为4 MHz的。(2)试将程序改为由中断控制进行A/D采集。5.4.1 EMIF简介简介EMIF是External Memory Interface的缩写,它控制DSP和外部存储器之间所有的数据传输。下面就EMIF做一简单介绍,详细情况请参照CCS的在线帮助或者参考相关应用手册。5.4 外部存储器接口外部存储器接口(EMIF)图5-17为EMIF的输入/输出框图,说明了EMIF和DSP其他模块以及外部存储器之间怎样连接。和外设总线控制的连接允许CPU访问EMIF的

39、寄存器。图5-17 EMIF的输入/输出框图EMIF为3种类型的存储器提供了无缝接口:异步存储器,包括ROM、FLASH以及异步SRAM;同步触发SRAM(SBSRAM);同步触发DRAM(SDRAM)。EMIF支持下列类型的访问:32 bit数据访问;16 bit数据访问;8 bit数据访问。5.4.2 EMIF信号信号表5-15归纳了EMIF的信号。在类型中,I表示输入,O表示输出,Z表示高阻状态。表表5-15 EMIF的信号的信号续表 续表 5.4.3 对存储器的考虑对存储器的考虑对EMIF编程时,必须了解外部存储器地址如何分配给片使能(CE)空间,每个CE空间可以同哪些类型的存储器连接

40、,以及用哪些存储器bit来配置CE空间。TMS320VC55X的外部存储器映射在存储空间的分布,相当于EMIF的片选使能信号。例如,CE1空间里的一片存储器,必须将其片选引脚连接到EMIF的CE1引脚。当EMIF访问CE1时,就驱动变低。图5-18表示外部存储器与信号之间的关系。图5-18 TMS320VC5509外部存储器与信号之间的关系由图5-18可以看出,DSP外部存储器被分成4个CE空间,CE0空间在低地址位置,而CE3位于高地址。每个CE空间可以包含4 M个字节。有些CE3空间中的地址可以用来寻址DSP内部的ROM。可以通过设置CPU内部状态寄存器ST3_55中MPNMC位的值来在C

41、E3空间和ROM之间选择。5.4.4 EMIF寄存器寄存器C55X中有关EMIF的所有寄存器如表5-16所示。表表5-16 EMIF寄存器寄存器5.4.5 SDRAM的使用的使用在5509系统中,EMIF的数据总线宽度为16 bit,与主机接口(HPI)分享一个并口,具体的配置由外部总线选择寄存器(EBSR)的低二位决定;提供了四个彼此独立的外存接口(CEX),每个CE空间容量为4 MB,其中CE3空间根据需要可划分一部分空间作为片内ROM;通过写CE空间控制寄存器中的MTYPE指定外存类型;SDRAM的时钟频率可编程控制。访问SDRAM芯片之前,必须先将EMIF配置成外部SDRAM访问模式。

42、配置前,要先写DSP时钟发生器确定DSP的时钟频率,首先,清除MEMCEN位,防止CLKMEM引脚驱动存储器时钟,保持MEMCEN=0,写EGCR中的MEMFREQ、WPE。WPE=1时,CE空间写使能,反之禁止写。5509中,当CPU频率为144 MHz、MEMFREQ=001b(1/2 CPU频率)时,外部总线选择寄存器(EBSR)中EMIFX2位必须置1,对于其他的MEMFREQ值,必须置0。其次,将映射为外部SDRAM的每一个CE空间的CE空间控制寄存器中的MTYPE设置成011b,表明外存为16位的SDRAM。接下来,设置SDRAM控制寄存器1(SDC1)中的SDSIZE=0(表明S

43、DRAM 的大小为64 Mb),SDWID=0(表明SDRAM存储器宽度是16 位);设置SDRAM控制寄存器2(SDC2)中的SDACC=0,表明EMIF提供16位数据线给SDRAM。最后,置位MEMCEN,写SDRAM初始化寄存器(INIT)。需要说明的是,如果由EMIF控制SDRAM自刷新,则还要写SDRAM周期寄存器(SDPER)。当所有数值都设定好以后,延时6个CPU时钟周期,EMIF开始按顺序初始化SDRAM。当某个CE空间被配置为SDRAM空间后,必须对其进行初始化。任何对INIT的写操作都会要求对SDRAM进行初始化。初始化操作前必须正确设置MTYPE。整个初始化过程包括以下步

44、骤:(1)发送3个NOP到所有SDRAM空间;(2)执行1个DCAB命令;(3)执行8个REFR命令;(4)执行1个MRS命令;(5)清除SDRAM的INIT中的数据。下面介绍一个TMS320VC5509与SDRAM(IS42S16400A)的接口连接以及部分相关程序。考虑到5509与IS42S16400A的工作电压相同,都为3.3 V,存取时间基本同步,而且它们的数据线宽度都是16 bit,因此选择IS42S16400A,二者可以直接接口。IS42S16400A占用CE0、CE1两个空间。SDRAM与EMIF的连接图如图5-19所示。图5-19 SDRAM与EMIF的连接图下面是EMIF对应

45、寄存器的初始化程序:Void Sdram_init()ioport unsigned int 3 ebsr=(unsigned int 3)0 x6c00;ioport unsigned int 3 egcr=(unsigned int 3)0 x800;ioport unsigned int 3 ce01=(unsigned int 3)0 x803;ioport unsigned int 3 ce11=(unsigned int 3)0 x806;ioport unsigned int 3 sdc1=(unsigned int 3)0 x80f;ioport unsigned int 3

46、sdc2=(unsigned int 3)0 x813;ioport unsigned int 3 sdc3=(unsigned int 3)0 x814;ioport unsigned int 3 sdper=(unsigned int 3)0 x810;unsigned int 3 sdper=(unsigned int 3)0 x810;ioport unsigned int 3 init=(unsigned int 3)0 x812;*ebsr=0 x0001;*egcr=0 x0080;*ce01=0 x3000;*ce11=0 x3000;*sdc1=0 x4122;*sdc2=0

47、 x0151;*sdc3=0 x0004;*sdper=0 x08fc;*egcr=0 x00a0;*init=0 x01;一、任务目的一、任务目的(1)了解ICETEK-VC5509-A板在TMS320VC5509DSP外部扩展存储空间上的扩展。(2)了解ICETEK-VC5509-A板上指示灯扩展原理。(3)学习在C语言中使用扩展控制寄存器的方法。任务任务9 通过通过EMIF接口控制指示灯接口控制指示灯二、所需设备二、所需设备(1)PC兼容机一台,操作系统为Windows 2000(或Windows NT、Windows 98、Windows XP,以下假定操作系统为Windows 200

48、0)。Windows操作系统的内核如果是NT的应该安装相应的补丁程序(如:Windows 2000为Service Pack3,Windows XP为Service Pack1)。(2)ICETEK-VC5509-A-USB-EDU试验箱一台。如无试验箱则配备ICETEK-USB或ICETEK-PP仿真器和ICETEK-VC5509-A或ICETEK-VC5509-C评估板,+5 V电源一只。(3)USB连接电缆一条(如使用PP型仿真器换用并口电缆一条)。三、相关原理三、相关原理(1)TMS320VC5509DSP 的EMIF 接口:存储器扩展接口(EMIF)是DSP 扩展片外资源的主要接口,

49、它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。ICETEK-VC5509-A评估板在EMIF接口上除了扩展了片外SDRAM外,还扩展了指示灯、DIP开关和D/A设备。具体扩展地址如下:400800-400802h:D/A转换控制寄存器;400000-400000h:板上DIP开关控制寄存器;400001-400001h:板上指示灯控制寄存器。与ICETEK-VC5509-A 评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:602800-602800h:读键盘扫描值,写液晶控制寄存器;600801-600801h:液晶辅助控制寄存器;60280

50、1h、600802h:液晶显示数据寄存器;602802-602802h:发光二极管显示阵列控制寄存器。(2)指示灯扩展原理,如图5-20所示。(3)程序流程图如图5-21所示。图5-20 指示灯扩展原理图图5-21 程序流程图四、任务步骤四、任务步骤(1)准备。设置CCS2.21在硬件仿真(Emulator)方式下运行。启动CCS2.21。(2)打开工程文件。工程文件为项目目录下的LED.pjt。打开源程序LED.c阅读程序,理解程序内容。(3)编译、下载程序。(4)运行程序,观察结果。(5)退出CCS。五、结果五、结果可知:映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4 位有效的,数

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《DSP处理器原理与应用》课件第5章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|