收藏 分销(赏)

DSP实验报告.doc

上传人:仙人****88 文档编号:8990571 上传时间:2025-03-10 格式:DOC 页数:17 大小:1.32MB
下载 相关 举报
DSP实验报告.doc_第1页
第1页 / 共17页
DSP实验报告.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述
郑州航空工业管理学院 电子通信工程系 DSP原理及应用实验报告 学 号: 姓 名: 专 业: 指导老师: 实验一 CCS的安装与设置 1. 实验目的 掌握CCS 2(‘2000)集成开发环境的安装;掌握软件仿真环境的设置方法;熟悉CCS集成开发环境的应用界面。 2. 实验设备 PC机、CCS 2(‘2000)IDE软件、EXP-IV DSP实验箱 3. 实验要求 l 熟悉安装CCS 2(‘2000)IDE软件的步骤 l 根据DSP芯片的型号正确设置软件仿真环境 l 了解CCS集成开发环境应用界面的各项内容 4. 实验内容 (1) CCS 2(‘2000)IDE软件的安装步骤 1.1 退出病毒防火墙及杀毒软件。 1.2 解压CCS2000 2.2 .rar文件并运行setup.exe安装程序文件。 1.3 选择安装界面中 “Code Cmposter Studio”选项。如下图所示: 1.4 完成上述步骤后只需点“Next”继续。在出现提示确认没有运行病毒检测软件的提示窗口时点“确定”。如下图所示: 1.5 选择“Yes”同意CCS的安装协议。如下图所示: 1.6 选择默认安装组件,点“Next”。如下图所示: 1.7 选择默认安装路径“C:\ti”点“Next”。如下图所示: 1.8 出现下图所示时取消勾选项,并点击“Finish”。如下图所示: 1.9 完成上述步骤,再出现的对话框中点击“确定”。如下图所示: 1.10 安装完成后,计算机桌面出现如下图所示的快捷方式图标: (2) TMS320F2812 微处理器的软件仿真环境的设置 2.1 双击桌面“Setup CCS 2”的快捷方式启动设置程序。 2.2 在出现的如下图所示的窗口中依次进行①单击“Clear”清除原有设置②选择“F2812 Device Simulator”配置③单击“Import”输入配置④单击“Save and Quit” 2.3 在接下来的对话框中单击“否”完成对CCS的设置 (3) CCS集成开发环境的应用界面 双击桌面上的CCS 2(‘C2000)快捷图标。成功启动的CCS如下图所示: 5. 问题与分析 在安装CCS的时候总是在安装到59%的时候安装出错。 分析问题:在安装之前没有关闭病毒防火墙和杀毒软件。 解决方法:关闭病毒防火墙金和杀毒软件。 实验二 XF管脚的驱动与观察 1.实验目的 掌握SPRC097软件包的安装与使用方法;掌握在CCS集成开发环境下建立或打开工程的方法;掌握XF管脚的驱动与测试方法;掌握工程的编译、下载与调试方法;熟悉CCS集成开发环境中寄存器观察工具的使用。 2.实验设备 PC机、CCS 2(‘2000)IDE软件、EXP-IV DSP实验箱 3.实验要求 l 熟悉SPRC097软件包的安装步骤 l 会利用SPRC097中的工程环境建立或打开工程 l 实现XF管脚的驱动编程 l 会利用寄存器观察工具察看XF管脚的状态 4.实验内容 (1)SPRC097软件包的安装 (2)XF管脚驱动编程的环境 (3)主要程序代码 #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File void delay(void); void main(void) { int p,r,q; InitSysCtrl(); InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); //控制XF管脚 EALLOW; GpioMuxRegs.GPFMUX.all=0xffff; EDIS; for(r=0;r<100;r++) { /*xf管脚置低*/ asm(" clrc xf"); for(p=0;p<10;p++) { for(q=0;q<10;q++) { delay(); } } /*xf管脚置高*/ asm(" setc xf"); for(p=0;p<10;p++) { for(q=0;q<10;q++) { delay(); } } } for(;;) { ; } } void delay(void) { unsigned int k,i,j; for(k=0;k<5;k++); for(i=0;i<5;i++); for(j=0;j<5;j++); } (4) 状态寄存器观察工具中显示的XF的图片 5.问题与分析 有什么样的实验现象? 答:xf管脚经过一段时间后由低变高。 实验三 GPIO模块的驱动程序设计 1.实验目的 掌握CCS硬件仿真环境的设置方法;掌握GPIO模块的驱动与测试方法;熟悉工程的编译、下载与调试方法。 2.实验设备 PC机、CCS 2(‘2000)IDE软件、XDS510仿真器、EXP-IV DSP实验箱 3.实验要求 l 熟悉GPIO模块的功能原理 l 会利用SPRC097中的工程环境建立或打开工程 l 实现GPIO模块的驱动编程 4.实验内容 (1)CCS硬件仿真环境的设置 (2)建立GPIO模块的工程 (3)主要程序代码 #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File #define EXAMPLE1 1 // Use DATA registers to toggle I/O's #define EXAMPLE2 0 // Use SET/CLEAR registers to toggle I/O's #define EXAMPLE3 0 // Use TOGGLE registers to toggle I/O's // Prototype statements for functions found within this file. void delay_loop(void); void Gpio_select(void); void Gpio_example1(void); void Gpio_example2(void); void Gpio_example3(void); void main(void) { // Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP281x_SysCtrl.c file. InitSysCtrl(); // Step 2. Initalize GPIO: // This example function is found in the DSP281x_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio(); // Skipped for this example // For this example use the following configuration: Gpio_select(); // Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts DINT; // Initialize PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the DSP281x_PieCtrl.c file. InitPieCtrl(); // Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000; IFR = 0x0000; // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example. This is useful for debug purposes. // The shell ISR routines are found in DSP281x_DefaultIsr.c. // This function is found in DSP281x_PieVect.c. InitPieVectTable(); // Step 4. Initialize all the Device Peripherals: // This function is found in DSP281x_InitPeripherals.c // InitPeripherals(); // Not required for this example // Step 5. User specific code: #if EXAMPLE1 // This example uses DATA registers to toggle I/O's Gpio_example1(); #endif // - EXAMPLE1 #if EXAMPLE2 // This example uses SET/CLEAR registers to toggle I/O's Gpio_example1(); #endif #if EXAMPLE3 // This example uses TOGGLE registers to toggle I/O's Gpio_example3(); #endif } void delay_loop() { short i; for (i = 0; i < 1000; i++) {} } void Gpio_example1(void) { // Example 1: // Toggle I/Os using DATA registers // Note: When using the DATA reigsters, input values // may be lost. If there are inputs on the port then // use the CLEAR/SET/TOGGLE registers instead. while(1) { GpioDataRegs.GPADAT.all =0xAAAA; GpioDataRegs.GPBDAT.all =0xAAAA; GpioDataRegs.GPDDAT.all =0x0022; GpioDataRegs.GPEDAT.all =0x0002; GpioDataRegs.GPFDAT.all =0xAAAA; GpioDataRegs.GPGDAT.all =0x0020; delay_loop(); GpioDataRegs.GPADAT.all =0x5555; GpioDataRegs.GPBDAT.all =0x5555; GpioDataRegs.GPDDAT.all =0x0041; // Four I/Os only GpioDataRegs.GPEDAT.all =0x0005; // ThreeI/Os only GpioDataRegs.GPFDAT.all =0x5555; GpioDataRegs.GPGDAT.all =0x0010; // Two I/Os only delay_loop(); } } void Gpio_example2(void) { // Example 2: // Toggle I/Os using SET/CLEAR registers while(1) { GpioDataRegs.GPASET.all =0xAAAA; GpioDataRegs.GPACLEAR.all =0x5555; GpioDataRegs.GPBSET.all =0xAAAA; GpioDataRegs.GPBCLEAR.all =0x5555; GpioDataRegs.GPDSET.all =0x0022; GpioDataRegs.GPDCLEAR.all =0x0041; // Four I/Os only GpioDataRegs.GPESET.all =0x0002; GpioDataRegs.GPECLEAR.all =0x0005; // ThreeI/Os only GpioDataRegs.GPFSET.all =0xAAAA; GpioDataRegs.GPFCLEAR.all =0x5555; GpioDataRegs.GPGSET.all =0x0020; GpioDataRegs.GPGCLEAR.all =0x0010; // Two I/Os only delay_loop(); GpioDataRegs.GPACLEAR.all =0xAAAA; GpioDataRegs.GPASET.all =0x5555; GpioDataRegs.GPBCLEAR.all =0xAAAA; GpioDataRegs.GPBSET.all =0x5555; GpioDataRegs.GPDCLEAR.all =0x0022; GpioDataRegs.GPDSET.all =0x0041; // Four I/Os only GpioDataRegs.GPECLEAR.all =0x0002; GpioDataRegs.GPESET.all =0x0005; // ThreeI/Os only GpioDataRegs.GPFCLEAR.all =0xAAAA; GpioDataRegs.GPFSET.all =0x5555; GpioDataRegs.GPGCLEAR.all =0x0020; GpioDataRegs.GPGSET.all =0x0010; // Two I/Os only delay_loop(); } } void Gpio_example3(void) { // Example 2: // Toggle I/Os using TOGGLE registers // Set pins to a known state GpioDataRegs.GPASET.all =0xAAAA; GpioDataRegs.GPACLEAR.all =0x5555; GpioDataRegs.GPBSET.all =0xAAAA; GpioDataRegs.GPBCLEAR.all =0x5555; GpioDataRegs.GPDSET.all =0x0022; GpioDataRegs.GPDCLEAR.all =0x0041; // Four I/Os only GpioDataRegs.GPESET.all =0x0002; GpioDataRegs.GPECLEAR.all =0x0005; // ThreeI/Os only GpioDataRegs.GPFSET.all =0xAAAA; GpioDataRegs.GPFCLEAR.all =0x5555; GpioDataRegs.GPGSET.all =0x0020; GpioDataRegs.GPGCLEAR.all =0x0010; // Two I/Os only // Use TOGGLE registers to flip the state of // the pins. // Any bit set to a 1 will flip state (toggle) // Any bit set to a 0 will not toggle. while(1) { GpioDataRegs.GPATOGGLE.all = 0xFFFF; GpioDataRegs.GPBTOGGLE.all = 0xFFFF; GpioDataRegs.GPDTOGGLE.all = 0xFFFF; GpioDataRegs.GPETOGGLE.all = 0xFFFF; GpioDataRegs.GPFTOGGLE.all = 0xFFFF; GpioDataRegs.GPGTOGGLE.all = 0xFFFF; delay_loop(); } } void Gpio_select(void) { Uint16 var1; Uint16 var2; Uint16 var3; var1= 0x0000; // sets GPIO Muxs as I/Os var2= 0xFFFF; // sets GPIO DIR as outputs var3= 0x0000; // sets the Input qualifier values EALLOW; GpioMuxRegs.GPAMUX.all=var1; GpioMuxRegs.GPBMUX.all=var1; GpioMuxRegs.GPDMUX.all=var1; GpioMuxRegs.GPFMUX.all=var1; GpioMuxRegs.GPEMUX.all=var1; GpioMuxRegs.GPGMUX.all=var1; GpioMuxRegs.GPADIR.all=var2; // GPIO PORTs as output GpioMuxRegs.GPBDIR.all=var2; // GPIO DIR select GPIOs as output GpioMuxRegs.GPDDIR.all=var2; GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GPFDIR.all=var2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; // Set GPIO input qualifier values GpioMuxRegs.GPBQUAL.all=var3; GpioMuxRegs.GPDQUAL.all=var3; GpioMuxRegs.GPEQUAL.all=var3; EDIS; } 5. 问题与分析 (1)GPIO模块有几种方式输出数据波形? 答:有三种方式,分别通过GPXDAT,GPXSET与GPXCLEAR,GPXTOGGLE寄存器来实现。 (2) 使用DATA寄存器输出信号时输入值丢失。 解决方法:用CLEAR/SET/TOGGLE寄存器代替。 实验四 外部中断的应用 1.实验目的 掌握中断服务程序的编写方法;掌握外部中断的驱动与测试方法;熟悉工程的编译、下载与调试方法。 2.实验设备 PC机、CCS 2(‘2000)IDE软件、XDS510、EXP-IV DSP实验箱 3.实验要求 l 熟悉外部中断XINT1、XINT2的功能原理 l 将工程环境设置为硬件仿真调试环境 l 会利用SPRC097中的工程环境建立或打开工程 l 实现外部中断的应用编程 4.实验内容 (1)建立外部中断的工程 (2)主要程序代码 //FILE: Led_Int.c //TITLE: DSP281x 外部中断测试程序 #include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File void init_xint1(void); interrupt void xint1_isr(void); void gpiof_init(void); Uint32 Xint1InterruptCount; //主程序 void main(void) { InitSysCtrl(); //InitGpio(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); EALLOW; PieVectTable.XINT1 = &xint1_isr; EDIS; PieCtrlRegs.PIECRTL.bit.ENPIE=1; PieCtrlRegs.PIEIER1.bit.INTx6 = 1; IER |= M_INT1; EINT; Xint1InterruptCount=0; asm(" nop "); gpiof_init(); asm(" nop "); init_xint1(); asm(" nop "); for(;;) { if( Xint1InterruptCount<1) { asm(" nop "); asm(" clrc xf "); asm(" nop "); } else if(Xint1InterruptCount<2) { asm(" nop "); asm(" setc xf "); asm(" nop "); } else { Xint1InterruptCount=0; } } } void init_xint1() { XIntruptRegs.XINT1CR.all=0x0001; } interrupt void xint1_isr() { Xint1InterruptCount++; PieCtrlRegs.PIEACK.all=PIEACK_GROUP1; } void gpiof_init(void) { EALLOW; GpioMuxRegs.GPAMUX.all=0x7000; EDIS; } (3)实验现象 当程序下载到实验箱后,通过按下连接在XINT1管脚上的按键,可观察到连接在XF管脚上的LED灯实现同步的亮灭变化。 5.问题与分析 PIE管理的中断源共有多少个?这些中断分为多少组? 答:一共96个,可以分为12组。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服