




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、DSP硬件编程实验报告CCS软件应用和DSP编程学 院: 班 级:学 号:姓 名: 班内序号: 实验一 常用指令实验一、 实验目的了解DSP开发系统的组成和结构和应用,熟悉DSP开发系统的连接,熟悉DSP的开发界面,熟悉C54X系列的寻址系统,熟悉常用C54X系列指令的用法。二、 实验步骤及截图1、启动CCS 3.3,并加载“exp01.out”2、下拉菜单中Project/Open,打开“Exp01.pjt”,双击“Source”,双击“exp01.asm”可查看源程序3、试验现象 : 可以观察到实验箱CPLD右上方的D3按一定频率闪烁。灯亮灯灭三、源代码注释.mmregs ;定义存储器映像
2、寄存器.global _main ;全局符号,可在外部定义_main: stm#3000h,spssbxxf ;将XF置1call delay ;调用延时子程序,延时rsbxxf ;将XF置0call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nop ;空指令nop ;空指令;延时子程序 delay: stm 270fh,ar3 ;设置辅助寄存器ar3值为9999loop1: stm 0f9h,ar4 ;设置辅助寄存器ar4值为249loop2:banz loop2,*ar4- ;寄存器ar4值减一,当其值不为0时跳转到loop2banz lo
3、op1,*ar3- ;寄存器ar3值减一,当其值不为0时跳转到loop1ret ;返回nop ;空指令nop ;空指令.en四、程序运行关系流程实验现象为实验箱CPLD右上方的D3按一定频率闪烁;程序通过令XF分别为1、0来实现灯的亮灭,通过调用延时程序控制交替闪烁的间隔时间。实验二 数据存储实验一、 实验目的掌握TMS320C54的程序空间的分配;掌握TMS320C54的数据空间的分配;熟悉操作TMS320C54数据空间的指令。二、实验步骤及截图1、启动CCS3.3,加载exp02.out,并打开EXP02.PJT,查看源程序exp02.asm2、view下拉菜单中的Memory查看内存单元
4、3、输入要查看的内存单元4、运行后暂停查看变化5、用View中的Registers 查看CPU Registers 单元6、试验现象 : 本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。三、源代码注释;get some knowledge of the cmd file;the program is compiled at no autoinitialization mode.mmregs.global _main _main: ;store datastm 1000h,ar1 ; 将外部内存地址1000h赋给ar1rp
5、t#07h ; 重复执行下一条指令7次st0aaaah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H1007H的八个存储单元中.;read data then re-store stm 7h,ar3 ;将7h赋给辅助寄存器ar3stm1000h,ar1 ;将地址1000h赋给辅助寄存器ar1stm 1008h,ar2 ;将地址1008h赋给辅助寄存器ar2loop: ;循环的将1000H1007H的八个单元中的数据COPY到1008H100F的 ;八个存储单元中.ld*ar1+,t ;将辅助寄存器ar1的值赋给t,且ar1内存地址加1stt,*ar2+ ;将t
6、的值存储在ar2所对应内存中,且ar2内存地址加1banzloop,*ar3- ;寄存器ar3值减1,当其值不为0时跳转到loophere: ;死循环. b here ;转移至here.end四、程序运行关系流程将oaaaah存入1000h-1007h中,利用ar1存储的值自加实现地址的移动;将1000h-1007h存储的值提取出来,赋、给1008h-100Fh中。其中ar1初始值为1000h,每次循环自加,从1000h到1007h,为提取地址的移动。ar2初始值为1008h,每次加1,直至100Fh,为赋值地址的移动。ar3控制循环。实验三 I/O实验一、 实验目的了解I/O的扩展;掌握I/
7、O的操作方法;熟悉PORR,PORTW指令的用途;了解数字量与模拟量的区别和联系。二、实验步骤及截图1、启动CCS3.3,加载exp03.out,单击Run运行,查看效果;单机Halt,开关对灯失去控制2、查看源程序exp03.asm3、试验现象 : 分别调整数字输入单元的开关K1K8,观察LED1LED8亮灭的变化,以及输入和输出状态是否一致。Run程序后等受到开关控制停止程序之后灯不受开关控制三、源代码注释.mmregs.global_main.text_main:stm3100h,sp ;设置堆栈指针寄存器的值为3000hstm1000h,ar1 ;设置辅助寄存器ar1值为1000hpo
8、rtr8000h,*ar1 ;读入I/O 8000H数据,将其存储到数据空间的1000Hnop ;NOP为空操作,起延时作用.nopportw*ar1,8001h ;将数据空间的1000H单元的数据,写出到I/O 8000Hnopnop b _main ;程序跳转到"_MAIN"执行. nop nop .end四、程序运行关系流程将输入控制按键的信号从输入端口读出并储存,再将值传递给输出端口控制灯的亮灭。实验四 定时器实验一、 实验目的熟悉C54的定时器;掌握C54定时器的控制方法;学会使用定时器中断方式控制程序流程。二、实验步骤及截图1、启动CCS3.3,加载exp04.
9、out,单击Run运行,LED灯闪亮变化,Halt暂停后,停止闪烁2、查看源程序代码3、试验现象 : LED灯(LED1LED8)以一定的间隔时间不停闪亮变化三、源代码注释/*文件预处理*/#include "tms320uc5402.h" /数字信号处理器头文件/*全局变量定义与初始化*/ioport unsigned port8001; /IO空间地址声明unsigned int show=0x00aa;unsigned int num=0x0000;/*函数、子程序声明与定义*/ void sys_ini() /系统初始化子程序 asm(" ssbx INT
10、M"); /全局禁止所有可屏蔽中断 中断模式位INTM=1 PMST&=0x00FF; /(DRAM映射到程序空间和数据空间)向量表映射到0x0080 /空间 PMST:状态寄存器 15-7位表示向量指针 / 复位为1FFh SWWSR=0x7000; /io空间7个等待周期(15-12位), 程序与数据空间0个等待周期 /等待状态寄存器 CLKMD=0x17FA; /CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间 /pll模式开启 且锁相环等待时间为最大(3-10位) /系数为PLLMUL(15-12位) 1+1=2 /PLLNIV(1)=1 PLLDI
11、V(11)=0 /CLKMD 时钟模式寄存器 void timer0_ini() /定时器0初始化子程序 TCR|=0x0010; /停止定时器0 TCR:定时器控制寄存器 /TSS(4)=1,计数器停止工作 PRD=0x2710; /定时器周期寄存器PRD=10000(D) 2*163+7*162+1*16=10000 TCR|=0x000A; /除数比率TDDR(3-0)=10(D), /定时器时钟=1/(20M/10/10000)=5ms IMR=0x0008; /使能定时器0中断即允许中断(第2位int2) IFR=0xFFFF; /清除所有中断标志位 asm(" rsbx
12、INTM"); /全局使能可屏蔽中断 INTM:中断模式位 /rsbx置1 TCR&=0xFFEF; /开始定时器0 TSS(4)=0 TCR|=0x0020; /复位定时起0 TRB(5)=1复位 PRD等重新加载/*/*中断服务子程序声明与定义*/interrupt void timer0() /定时器0中断子程序 if(num=200) /记200次定时器中断,时间=200*5ms=1s show=show; /取反 num=0; else num+; return; /*/*主程序*/void main(void) sys_ini(); timer0_ini(); f
13、or(;) port8001=show; ;端口收到数据,灯亮 /*结束*/Ø 中断向量表 .global _c_int00,_timer0 ;c程序入口,调用时钟中断子程序 .sect ".vecs" ;自定义一个初始化段reset: b _c_int00 ;软件复位,进入main程序 nop nopnmi: rete ;不可屏蔽的中断 返回并允许中断(可选择中断) nop nop nop; software interruptssin17: .space 4*16sin18: .space 4*16sin19: .space 4*16sin20: .space
14、 4*16sin21: .space 4*16sin22: .space 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30: .space 4*16int0: rete ;EXTERNAL INT0 nop nop nopint1: rete ;EXTERNAL INT1 nop nop nopint2: rete ;外部中断 INT1 INT2 INT0 nop nop n
15、optint0: b _timer0 ;时钟中断 nop nopbrint0: rete ;多路缓冲串行口接收中断 nop nop nopbxint0: rete ;多路缓冲串行口发送中断 nop nop nopdmac0: rete ;接收或者直接内存存取通道1的中断0 nop nop noptint1_dmac1: rete ;定时器中断或者直接内存存取通道1中断1 nop nop nopint3: rete ;外部中断INT 3 nop nop nophpint: rete ;HPI 接口中断 nop nop nopbrint1_dmac2: rete ;多通道缓冲串行口接收中断或者直接
16、内存存取通道2中断 nop nop nopbxint1_dmac3: rete ;多通道缓冲串行口发送中断或者直接内存存取通道3中断 nop nop nopdmac4: rete ;直接内存存取中断通道3中断 nop nop nopdmac5: rete ;直接内存存取中断通道4中断 nop nop nop四、程序运行关系流程初始化,CPU运行,扫描中断向量表,调用中断函数;中断函数利用循环,完成1s的延迟,返回主程序;主程序重复扫描中断向量表,调用中断函数,延迟1s的过程,完成计时。实验五 INT2中断实验一、 实验目的掌握中断技术,学会对外部中断的处理方法;掌握中断对程序流程的控制,理解D
17、SP对中断的响应时序。二、实验步骤及截图1、启动CCS3.3,加载exp05.out,Run运行2、查看源程序3、试验现象 : 反复按开关"单脉冲输出",观察LED1LED8灯亮灭变化;按一次S5键,灯亮灭变换一次.三、源代码注释Int2.c:interrupt void int2c(); extern void initial();extern void porta();extern void portb(); /调用外部函数int flag=0,i=0; /变量初始赋值main() initial(); /初始化 while(1) /死循环 ; /空语句 interru
18、pt void int2c() /中断子程序,每次中断调用该函数 i=i+1; if(i=1) if(flag=0) /flag记录外部中断的标志 flag=1; /执行porta函数,并将flag=1 porta(); i=0; else flag=0; /执行portb函数,并将flag=0 portb(); i=0; else i=0; return;Initial.asm.mmregs.mmregs ;定义储存器映像寄存器 .global _initial .text ;程序代码段_initial: NOP LD #0, DP ; 指针复位,指向第一页 DP:数据页指针 STM #0,
19、 CLKMD ;对DSP时钟软件设置 STM #0, CLKMD ;分频模式TstStatu1: LDM CLKMD, A ;把时钟寄存器寄存器值装入到累加器A中 AND #01b, A :将立即数01b赋给A BC TstStatu1, ANEQ STM #0xF7FF, CLKMD ; set C5402 DSP clock to 10MHz ;时钟状态计时器 PLLMUL(15-12)=15 PLLDIV(11)=0 ;PLLNDIV(1)=1所以pll系数为1 ;pllstatus=1 所以pll状态 STM 0x3FA0, PMST ; 向量表映射到 3F80h ; 空间 PMST:
20、状态寄存器 15-7位表示向量指针 ssbx 1,11 ; 状态寄存器st1的第十一位intm=1 禁止所有可屏蔽中断 ; INTM中断模式位 stm #00h,imr ;停止所有中断 imr:中断屏蔽寄存器 stm #0ffffh,ifr ;将所有的中断的标志位清零(清除所有中断) ;中断标志寄存器(IFR)用来指明各个中断的目前状态 stm #04h,imr ;允许int2 中断(3位) rsbx 1,11 ;允许所有中断,将m置为0 ret .endPort.asmmmregs .global_porta .global_portb_porta: Stm 304h,ar1
21、St 5555h,*ar1 ;将5555H存储到地址为304H的内存中 Portw *ar1,8001h ;将304H中的值写到端口01H,即把5555H送到端口01H ret ;返回_portb: Stm 304h,ar1 St 0aaaah,*ar1 ;将0AAAAH存储到地址为304H的内存中 Portw *ar1,8001h ;将304H中的值写到端口01H,即把0AAAAH送到端口01HRetVector.asm .sect ".vectors" ;自定义初始化段 .ref _c_int00 ;c程序入口 .ref _int2c .align 0x80 ;必须被连
22、接到页边界RESET: ; 重设向量,复位中断响应 BD _c_int00 ; 到C入口点的分支 STM #200,SP ; 堆栈大小为200(指针为200)nmi: ;不可屏蔽中断 RETE ; 启动中断并从一个返回 NOP NOP NOP ;NMI ; 软件中断sint17 .space 4*16 ;保留出中断向量的地址空间sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .s
23、pace 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: ;中断寄存器设置RETE返回并允许中断,外部中断产生时,直接返回 RETE NOP NOP NOPint1: RETE NOP NOP NOPint2: b _int2c ;程序跳转的中断子程序,跳转到中断程序 NOP NOPtint: RETE NOP NOP NOPrint0: ; 同步串口0(McBSP0)接受的中断,直接返回 RETE NOP NOP NOPxint0: ;同步串
24、口0(McBSP0)发送的中断,直接返回 RETE NOP NOP NOPrint1: ;同步串口1(McBSP1)接受的中断,直接返回 RETE NOP NOP NOPxint1: ;同步串口1(McBSP1)发送的中断,直接返回 RETE NOP NOP NOPint3: RETE NOP NOP NOP四、程序运行关系流程运行主程序,初始化后,程序等待外部中断。中断发生后,扫描中断向量表,执行中断子程序,由flag判断执行porta还是portb,从而控制灯的亮灭。之后转会主程序,重复进行。实验六 A/D转换实验一、 实验目的熟悉A/D转换的基本原理,掌握AD7822BN的技术指标和常用
25、方法,掌握并熟练使用DSP和AD7822BN的接口极其操作。二、实验步骤及截图1、启动CCS3.3,加载exp06_ad.out2、打开源程序3、设置断点4、打一个图形观察窗口,设置参数5、Animate运行后,观察波形变化6、Halt暂停运行,点Memory打开存储区数据观察窗口,并进行参数设置7、单击Animate运行,观察数据变化三、源代码注释Exp06.c/*文件预处理*/#include "tms320uc5402.h"/*/*全局变量定义与初始化*/ ioport unsigned port8008; /ad7822的地址unsigned int data_bu
26、ff256;unsigned int j=0;/*/*函数、子程序声明与定义*/void sys_ini() /系统初始化子程序 asm(" ssbx INTM"); /全局禁止所有可屏蔽中断 中断模式位INTM=1 PMST&=0x00FF; /(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间 /PMST 状态寄存器 15-7位表示向量指针 SWWSR=0x7000; /io空间7个等待周期(15-12), 程序与数据空间0个等待周期 SWWSR:等待状态寄存器 CLKMD=0x0000; /PLL状态 分频模式 while(CLKMD=0x000
27、1); /等待设置完成 CLKMD=0x37FA; /CLKOUT=(3+1)*CLKIN=40M,自动延时最长时间(3-10) /plldiv(11)=0 pllndiv(1)=1 pllmul=3 /pllstatus=0 分频模式 /CLKMD=0x17FA; /CLKOUT=(1+1)*CLKIN=20M,自动延时最长时间 void int1_ini() IMR=0x0002; /使能外部中断1(1) imr中断屏蔽寄存器 IFR=0xFFFF; /清除所有中断标志位 asm(" rsbx INTM"); /全局使能可屏蔽中断 intm中断模式位 /rsbx置1 /
28、*/*中断服务子程序声明与定义*/interrupt void int1() /int1中断子程序 data_buffj=port8008&0x00FF; /读取ad7822转换数据(高速模数转换器) /j改变,地址data_buff改变,读取数据并存储 j+; if(j=255) j=0; return; /*/*主程序*/void main(void) sys_ini(); int1_ini(); for(;) .global _main,_int1 .sect ".vecs"reset: b main ;RESET VECTORS nop nopnmi: re
29、te ;NMI 不可屏蔽中断 nop nop nop; software interruptssin17: .space 4*16 ;保留中断向量的地址空间sin18: .space 4*16sin19: .space 4*16sin20: .space 4*16sin21: .space 4*16sin22: .space 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30:
30、 .space 4*16int0: rete ;外部中断int0 nop nop nopint1: b _int1 ;外部中断,跳转到int1 nop nopint2: rete ;外部中断int2 nop nop noptint0: rete ;定时器中断 返回 nop nop nop brint0: rete ;同步串口0接收中断 nop nop nopbxint0: rete ;同步串口0产生中断 nop nop nopdmac0: rete ;直接内存存取通道0的中断 nop nop noptint1_dmac1: rete ;时钟中断或者直接内存存取通道1的中断 nop nop no
31、pint3: rete ;外部中断3 nop nop nophpint: rete ;主机接口中断 nop nop nopbrint1_dmac2: rete ;同步串口1接收的中断或者直接内存存取通道2的中断 nop nop nopbxint1_dmac3: rete ;同步串口1发送的中断或者直接内存存取通道3的中断INTERRUPT nop nop nopdmac4: rete ;直接内存存取通道4的中断 nop nop nopdmac5: rete ;直接内存存取通道5的中断 nop nop nop .end四、程序运行关系流程程序初始化倍频后,等待中断。每执行一次中断子函数后,即采样
32、一个点。待完成256点采样后,程序结束。实验七 D/A转换实验一、 实验目的熟悉D/A转换的基本原理;掌握AD7303的技术指标和常用方法;熟悉DSP的多通道缓冲串口配置为SPI的应用方法;掌握并熟练使用DSP和AD7303的接口及其操作。二、实验步骤及截图1、启动CCS3.3,加载exp07.out,并打开三个源代码文件2、打开一个图形观察窗口,设置参数3、观察程序产生的波形三、源代码注释/-头文件-#include "DspRegDefine.h" /VC5402 寄存器定义#include "math.h"/* * 宏定义 */#define UCHAR unsigned char#define UINT16 unsigned int#define UINT32 unsigned long#define TRUE 1#define FALSE 0#define pi 3.1415926#define LEN 256/* 端口定义 */i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 包猎头公司管理制度
- 2025年考前冲刺的系统分析师考试试题及答案
- 混凝土现场管理制度
- 施工仓库退货管理制度
- 弱电维修人员管理制度
- 水壶生产品质管理制度
- 政府采购公司管理制度
- 充电场站管理制度
- 教室卫生安全管理制度
- 企业报价管理制度
- 统编版(2025春)七年级下册道德与法治第三单元素养评价测试卷(含答案)
- 《老年肺炎临床诊断与治疗专家共识(2024年版)》临床解读
- 冀教版二年级下册数学复习计划
- 2025华电(海西)新能源限公司面向华电系统内外公开招聘高频重点提升(共500题)附带答案详解
- DB33T 2239-2020 经颅磁刺激戒毒康复应用管理规范
- 智能交通信号控制系统维护方案
- 大学生公共安全教育知到智慧树章节测试课后答案2024年秋郑州师范学院
- 【MOOC】影视鉴赏-扬州大学 中国大学慕课MOOC答案
- 专项04 工艺流程图题
- 2024年成人高考成考(高起专)数学(文科)试题及答案指导
- 《石油化工储运系统罐区设计规范》(SHT3007-2014)
评论
0/150
提交评论