实验3 锁相环、定时器与中断实验(2012.4.12).doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:6 大小:66KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

实验3 锁相环、定时器与中断实验(2012.4.12).doc

实验3锁相环、定时器与中断实验(2012.4.12).doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验3:锁相环、定时器与中断实验一.实验目的1.深刻理解C55x芯片支持库(CSL)的作用,掌握CSL的安装和基本使用方法。2.掌握TMS320VC5509A数字锁相环PLL的配置方法。3.掌握TMS320VC5509A的定时器的使用方法。4.熟悉TMS320VC5509A中断程序设计方法。二.实验设备PC兼容机一台,操作系统为Windows2000,安装CodeComposerStudio4.2,SDUST-CEE-C55XDSP实验系统箱,示波器(选用)。三.实验原理1.片上支持库(CSL)的安装和使用片上支持库(CSL)提供配置及控制片上外设的函数、宏等工具,可以通过程序实现这些函数和宏的调用,使外设更易于使用。CSL的安装CCS4没有集成CSL库,当DSP程序涉及CSL使用时,在程序编译前请检查CSL库的安装情况。CSL安装过程如下:运行,根据提示设定相应的目录即可。本实验CSL的安装路径为:D:\ProgramFiles\C55xxCSL。在CCS4中修改工程属性,添加CSL库选中工程,右键->properties,弹出对话框选择C/C++build。C5500Compiler:在PredefinedSymbols中添加“CHIP_5509”和“_CSL5509_LIB_”两项,IncludeOptions中添加CSL库中include文件夹的路径(D:\ProgramFiles\C55xxCSL\include)。C5500linker:在FileSearchPath,Includelibraryfile…栏中添加“rts55x.lib”和“csl5509ax.lib”两项,Add<dir>tolibrary…栏中添加上面两个库文件所在路径("D:\ProgramFiles\TexasInstruments\ccsv4\tools\compiler\c5500\lib"和"D:\ProgramFiles\C55xxCSL\lib")。2.数字锁相环(DPLL)的使用DPLL的功能是将CLKIN引脚接收输入时钟信号(本实验中为晶体振荡器提供的12MHz方波信号)变换为CPU及其外设所需的工作时钟(称为CPU时钟,本实验中设置为144MHz)。使用DPLL的CSL需要包含csl_pll.h。CSL提供了多种方法可实现对DPLL的配置,本实验采取的方法如下:(1)在main()函数前,创建PLL配置结构:PLL_ConfigmyPLLConfig={0,//IAI:1,//IOB:24,//mult1//div/*CPU时钟频率=(mult/div+1)输入晶振时钟频率,本实验中(mult/div+1)=12.由于晶振时钟频率为12MHz,因此CPU时钟频率=144MHz*/};(2)在main()函数中,运行函数PLL_config()完成PLL参数配置:PLL_config(&myPLLConfig);3.中断的使用在CSL使用中断需要包含csl_irq.h。可通过函数IRQ_setVecs((Uint32)(&VECSTART))设置中断向量入口地址,本实验中,VECSTART和中断向量表的定义在汇编模块vectors.s55中完成,在C语言main函数中要将其声明为外部函数:externvoidVECSTART(void)。全局中断的禁止或使能分别通过函数IRQ_globalDisable()或IRQ_globalEnable()实现。涉及各具体中断源(如定时器)的相应操作见下。4.通用定时器的使用C55x芯片提供了两个通用定时器,可为CPU提供周期性中断信号或向DSP芯片外的器件提供周期信号。每个定时器有两个计数寄存器(PSC,TIM)和两个周期寄存器(TDDR,PRD),在定时器初始化或定时值重新装入过程中,周期寄存器的内容将复制到计数寄存器中。定时器发送中断信号或同步事件信号的频率可用下式计算:使用通用定时器的CSL需要包含csl_timer.h,在CSL使用定时器的基本方法如下:(1)在main函数前通过TIMER_TCR_RMK定义定时器控制器的各控制位,本实验中:#defineTIMER_CTRLTIMER_TCR_RMK(\TIMER_TCR_IDLEEN_DEFAULT,/*IDLEEN==0*/\TIMER_TCR_FUNC_OF(0),/*FUNC==0*/\TIMER_TCR_TLB_RESET,/*TLB==1*/\TIMER_TCR_SOFT_BRKPTNOW,/*SOFT==0*/\TIMER_TCR_FREE_WITHSOFT,/*FREE==0*/\TIMER_TCR_P