《DSP实验报告+心得体会.docx》由会员分享,可在线阅读,更多相关《DSP实验报告+心得体会.docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、DSP实验报告+心得体会 龙 岩 学 院 实 验 报 告 班 级 07电本(1)班 学号 2007050344 姓 名 杨宝辉 同组人 独立 试验日期 2022-5-18 室温 大气压 成 绩 基础试验 一、试验目的 二、试验设备 三、试验原理 浮点数的表达和计算是进行数字信号处理的基本学问;产生正弦信号是数字信号处理1.一台装有CCS软件的计算机; 2.DSP试验箱的TMS320F2812主控板; 3.DSP硬件仿真器。 1.驾驭CCS试验环境的运用; 2.驾驭用C语言编写DSP程序的方法。 中常常用到的运算;C语言是现代数字信号处理表达的基础语言和通用语言。写实现程序时须要留意两点:(1)
2、浮点数的范围及存储格式;(2)DSP的C语言与ANSI C语言的区分。 四、试验步骤 1.打开CCS 并熟识其界面; 2.在CCS环境中打开本试验的工程(Example_base.pjt),编译并重建 .out 输出文件,然后通过仿真器把执行代码下载到DSP芯片中; 3 把X0 , Y0 和Z0添加到Watch窗口中作为视察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“Add Watch Window”吩咐); 4 选择view-graph-time/frequency 。 设置对话框中的参数: 其中“Start Addre”设为“sin_value”,“Acquisition buffe
3、r size”和“Display Data size”都设为“100”,并且把“DSP Data Type”设为“32-bit floating point”, 设置好后视察信号序列的波形(sin函数,如图); 5 单击运行; 6 视察三个变量从初始化到运算结束整个过程中的改变;视察正弦波形从初始化到运算结束整个过程中的改变; 7 修改输入序列的长度或初始值,重复上述过程。 五、试验心得体会 通过本次试验,加深了我对DSP的相识,使我对DSP试验的操作有了更进一步的理解。基本驾驭了CCS试验环境的运用,并能够运用C语言进行简洁的DSP程序设计。 从软件的安装到运用软件进行程序设计与仿真,熬炼了
4、自己的动手实力,也遇到了不少的坎坷,例如芯片的选择,不能因为麻烦而省略该步骤,否则将会运行出错。 附录试验程序: #include math.h #include stdio.h #define N 100 #define pi 3.14159 float sin_value100; float X0,Y0,Z0; void main(void) int i; for(i=0;i sin_valuei=0; X0=0.5; /* 0.100 0000 0000 0000 */ Y0=0.5; /* 0.100 0000 0000 0000 */ Z0=X0*Y0; /* 00.01 0000
5、0000 0000 0000 0000 0000 0000 */ for(i=0;i sin_valuei=100*(sin(2*pi*i/N); 龙 岩 学 院 实 验 报 告 班 级 07电本(1)班 学号 2007050344姓 名 杨宝辉 同组人 独立 试验日期 2022-5-20 室温 大气压 成 绩 数码管限制试验 一、试验目的 1.2.3.熟识2812的指令系统; 熟识74HC573的运用方法。 熟识DSP的IO操作运用方法。 二、试验设备 1.一台装有CCS2000软件的计算机; 2.插上2812主控板的DSP试验箱; 3.DSP硬件仿真器。 三、试验原理 此模块由数码管和四个
6、锁存器组成 。数码管为共阴极型的。数据由2812模块的低八位输入,锁存器的限制信号由2812模块输出,但经由CPLD模块译码后再限制对应的八个 四、试验步骤 1.把2812模块小板插到大板上; 2.在CCS2000环境中打开本试验的工程编译Example_7segled.prj,生成输出文件,通过仿真器把执行代码下载到DSP芯片; 3.运行程序;数码管会显示18的数字。 4.参考源代码自行修改程序变更显示样式。 五、试验心得体会 通过本次试验中,基本驾驭了2812的指令系统的特点,并能够了解并熟识74HC573的运用方法,进一步加深了对DSP的相识。同时,通过试验操作DSP的IO操作运用方法,
7、对于DSP的IO操作可以熟识的运用,学到更多的学问。 程序见附录: #include include/DSP281x_Device.h / DSP281x Headerfile Include File #include include/DSP281x_Examples.h / DSP281x Examples Include File / Prototype statements for functions found within this file.void delay_loop(void); void Gpio_select(void); / Global variable for t
8、his example short codetab17= 0x4020,0x6cc0,0x5800,0x4840,0x6440,0xC040,0xC000,0x4cc0, 0x4000,0x4040,0x4400,0xE000,0xD080,0xE800,0xD000,0xD400,0xffff; main() short i; / Step 1.Initialize System Control: / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.
9、c file. InitSysCtrl(); / Specific clock setting for this example: EALLOW; EDIS; / Step 2.Initalize GPIO: / This example function is found in the DSP281x_Gpio.c file and / illustrates how to set the GPIO to its default state./ InitGpio(); / Skipped for this example / For this example use the followin
10、g configuration: Gpio_select(); / Step 3.Clear all interrupts and initialize PIE vector table: / Disable CPU interrupts DINT; / Initialize the 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 DSP2
11、81x_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 th
12、is 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
13、 required for this example InitXintf(); / For this example, init the Xintf / Step 5.User specific code, enable interrupts: GpioDataRegs.GPADAT.all=0; Reg01=0x00; GpioDataRegs.GPADAT.all=0; Reg02=0x00; GpioDataRegs.GPADAT.all=0; Reg03=0x00; GpioDataRegs.GPADAT.all=0; Reg04=0x00; while(1) for(i=0;i Gp
14、ioDataRegs.GPADAT.all Reg01=0x00; delay_loop(); for(i=0;i GpioDataRegs.GPADAT.all Reg02=0x00; delay_loop(); for(i=0;i GpioDataRegs.GPADAT.all Reg03=0x00; delay_loop(); for(i=0;i GpioDataRegs.GPADAT.all Reg04=0x00; delay_loop(); void delay_loop() =codetabi; =codetabi; =codetabi; =codetabi; short i,j;
15、 for (i = 0; i for (j = 0; j void Gpio_select(void) Uint16 var1; Uint16 var2; Uint16 var3; var1= 0x0000; var2= 0xFFFF; var3= 0x0000; EALLOW; GpioMuxRegs.GPAMUX.all=var1; / sets GPIO Muxs as I/Os / sets GPIO DIR as outputs / sets the Input qualifier values GpioMuxRegs.GPBMUX.all=var1; GpioMuxRegs.GPD
16、MUX.all=var1; GpioMuxRegs.GPFMUX.all=var1; GpioMuxRegs.GPEMUX.all=var1; GpioMuxRegs.GPGMUX.all=var1; GpioMuxRegs.GPADIR.all=var2; / GPIO PORTs as output / GPIO DIR select GPIOs as output GpioMuxRegs.GPBDIR.all=var2; GpioMuxRegs.GPDDIR.all=var2; GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GPFDIR.all=var
17、2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; GpioMuxRegs.GPBQUAL.all=var3; GpioMuxRegs.GPDQUAL.all=var3; GpioMuxRegs.GPEQUAL.all=var3; EDIS; / No more. / Set GPIO input qualifier values 龙 岩 学 院 实 验 报 告 班 级 07电本(1)班 学号 2007050344 姓 名 杨宝辉 同组人 独立 试验日期 2022-5-25 室温 大气压 成 绩 交通灯限制试验 一、试验目
18、的 1.熟识2812的指令系统; 2.熟识74HC573的运用方法。 3.熟识DSP的IO操作运用方法。 二、试验设备 1.一台装有CCS2000软件的计算机; 2.插上2812主控板的DSP试验箱; 3.DSP硬件仿真器。 三、试验原理 此模块由发光二极管和一个锁存器组成。 数据由2812模块的低八位输入,锁存器的限制信号由2812模块输出,但经由CPLD模块译码后再限制锁存器。 四、试验步骤 1.把2812模块小板插到大板上; 2.在CCS2000环境中打开本试验的工程编译Example_croled.prj,生成输出文件,通过仿真器把执行代码下载到DSP芯片; 3.运行程序,发光二极管按
19、交通灯方式点亮熄灭。 4.参考源代码,自行修改程序,实现不同的交通灯限制方式。 五、试验心得体会 通过次试验中,使我驾驭了 2812的指令系统和74HC573的运用方法。同时,使我驾驭了DSP的IO操作运用方法。 试验程序见附录: 附录: #include include/DSP281x_Device.h / DSP281x Headerfile Include File #include include/DSP281x_Examples.h / DSP281x Examples Include File / Prototype statements for functions found w
20、ithin this file.void delay_loop(void); void Gpio_select(void); / Global variable for this example main() / Step 1.Initialize System Control: / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.c file. InitSysCtrl(); / Specific clock setting for this exam
21、ple: EALLOW; EDIS; / Step 2.Initalize GPIO: / This example function is found in the DSP281x_Gpio.c file and / illustrates how to set the GPIO to its default state./ InitGpio(); / Skipped for this example / For this example use the following configuration: Gpio_select(); / Step 3.Clear all interrupts
22、 and initialize PIE vector table: / Disable CPU interrupts DINT; / Initialize the 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 a
23、nd 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
24、 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 InitXintf(); / For this example, i
25、nit the Xintf / Step 5.User specific code, enable interrupts: while(1) GpioDataRegs.GPADAT.all =0xdc80; Reg00=0x00; delay_loop(); GpioDataRegs.GPADAT.all =0xec40; Reg00=0x00; delay_loop(); GpioDataRegs.GPADAT.all =0xf0c0; Reg00=0x00; delay_loop(); GpioDataRegs.GPADAT.all =0xec40; Reg00=0x00; delay_l
26、oop(); void delay_loop() short i,j; for (i = 0; i for (j = 0; j Uint16 var1; Uint16 var2; Uint16 var3; var1= 0x0000; var2= 0xFFFF; var3= 0x0000; EALLOW; GpioMuxRegs.GPAMUX.all=var1; / sets GPIO Muxs as I/Os / sets GPIO DIR as outputs / sets the Input qualifier values GpioMuxRegs.GPBMUX.all=var1; Gpi
27、oMuxRegs.GPDMUX.all=var1; GpioMuxRegs.GPFMUX.all=var1; GpioMuxRegs.GPEMUX.all=var1; GpioMuxRegs.GPGMUX.all=var1; GpioMuxRegs.GPADIR.all=var2; / GPIO PORTs as output / GPIO DIR select GPIOs as output GpioMuxRegs.GPBDIR.all=var2; GpioMuxRegs.GPDDIR.all=var2; GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GP
28、FDIR.all=var2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; GpioMuxRegs.GPBQUAL.all=var3; GpioMuxRegs.GPDQUAL.all=var3; GpioMuxRegs.GPEQUAL.all=var3; EDIS; / Set GPIO input qualifier values /= / No more./= 龙 岩 学 院 实 验 报 告 班 级 07电本(1)班 学号 2007050344 姓 名 杨宝辉 同组人 独立 试验日期 2022-05-27 室温 大气压
29、 成 绩 步进电机限制试验 一、试验目的 1.2. 二、试验设备 .一台装有CCS软件的计算机; .DSP试验箱(插上电机模块); .DSP硬件仿真器; .示波器。 三、试验原理 步进电机工作原理,给步进脉冲电机就转,不给脉冲电机就不转,步进脉冲的频率越高,步进限制电机就转的越快;变更各相的通电方式可以变更电机的运行方式;变更通电依次可以限制步进电机的运行方式;变更通电依次可以限制步进电机的正反转。 步进电机的限制问题可以总结为两点: 1.产生工作方式须要的时序脉冲; 2.限制步进电机的速度使它始终遵循加速-匀速-减速的规律工作。 驾驭2812通用IO口的运用方法; 驾驭2812对步进电机的限
30、制。 对于I/O口有二类寄存器: 1.限制寄存器和数据方向寄存器,运用方法如下:首先确定引脚的功能,即IO限制器寄存器,为1表示引脚功能是原模块的功能,否则为IO功能。 2.假如引脚被配置为IO功能,就须要确定它的方向:输入还是输出,。为1表示是输出引脚,否则是输入引脚。对于IO功能的输入或输出是通过读写相应的数据方向寄存器来实现。输入引脚对应读操作;输出引脚对应写操作。 四、试验步骤 1.连接好DSP开发系统; 2.本试验工程文件(Example_stepmotor.pjt),编译,下载程序到DSP; 运行程序,用视察步进电机运行方向和速度的改变; 五、试验心得体会 通过本次试验对于2812
31、通用的IO口进一步熟识试验,使我基本驾驭了2812通用的IO口的运用方法,加深了对IO口的相识。本次试验的主要目的是通过2812对步进机的的限制,起先对于程序的设计没有头绪,通过查阅步进机限制的原理,结合有关资料才正式设计出程序,基本驾驭了2812对步进机的限制,也更加熟识了对DSP程序的设计,受益匪浅。 程序: #include include/DSP281x_Device.h / DSP281x Headerfile Include File #include include/DSP281x_Examples.h / DSP281x Examples Include File / Prot
32、otype statements for functions found within this file.void delay_loop(void); void Gpio_select(void); / Global variable for this example short codetab17= 0x0001,0x0002,0x0004,0x0008,0x0008,0x0004,0x0002,0x0001, 0x0001,0x0002,0x0004,0x0008,0x0001,0x0002,0x0004,0x0008,0x0000; main() short i,j; / Step 1
33、.Initialize System Control: / PLL, WatchDog, enable Peripheral Clocks / This example function is found in the DSP281x_SysCtrl.c file. InitSysCtrl(); / Specific clock setting for this example: EALLOW; EDIS; / Step 2.Initalize GPIO: / This example function is found in the DSP281x_Gpio.c file and / ill
34、ustrates how to set the GPIO to its 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 the PIE control registers to their
35、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
36、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(); /
37、Step 4.Initialize all the Device Peripherals: / This function is found in DSP281x_InitPeripherals.c / InitPeripherals(); / Not required for this example InitXintf(); / For this example, init the Xintf / Step 5.User specific code, enable interrupts: GpioDataRegs.GPADAT.all=0; Reg06=0x00; while(1) for
38、(j=0;j for(i=0;i GpioDataRegs.GPADAT.all Reg06=0x00; delay_loop(); for(j=0;j for(i=4;i GpioDataRegs.GPADAT.all Reg06=0x00; delay_loop(); void delay_loop() short i,j; for (i = 0; i for (j = 0; j Uint16 var1; Uint16 var2; =codetabi; =codetabi; Uint16 var3; var1= 0x0000; var2= 0xFFFF; var3= 0x0000; EAL
39、LOW; GpioMuxRegs.GPAMUX.all=var1; / sets GPIO Muxs as I/Os / sets GPIO DIR as outputs / sets the Input qualifier values 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
40、 PORTs as output / GPIO DIR select GPIOs as output GpioMuxRegs.GPBDIR.all=var2; GpioMuxRegs.GPDDIR.all=var2; GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GPFDIR.all=var2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; GpioMuxRegs.GPBQUAL.all=var3; GpioMuxRegs.GPDQUAL.all=var3; GpioMuxRegs.GPEQUAL.all=var3; EDIS; / Set GPIO input qualifier values /= / No more./= 龙 岩 学 院 实 验 报 告 班 级