DSP硬件实验报告北邮文档格式.docx
- 文档编号:17530206
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:9
- 大小:115.56KB
DSP硬件实验报告北邮文档格式.docx
《DSP硬件实验报告北邮文档格式.docx》由会员分享,可在线阅读,更多相关《DSP硬件实验报告北邮文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
delay.5second
delay:
;
延迟0.5秒
stm270fh,ar3(辅助寄存器3);
把地址存放到存储器映射寄存器中
loop1:
stm0f9h,ar4(辅助寄存器4);
loop2:
banzloop2,*ar4-;
AR4不为0时转移,指针地址减一
banzloop1,*ar3-;
若不为0,ar3减1,共进行10000*250次跳转
ret(可选择延迟的返回pc=sp++);
return,返回
stm2cycles
banzwhenTRUE4cycles
FALSE2cycles
0f9h=>
249d
270fh=>
9999d
.end
实验现象
XF灯以一定频率闪烁;
单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;
(二)资料存储实验
*FileName:
exp02.asm
getsomeknowledgeofthecmdfile
theprogramiscompiledatnoautoinitializationmode
.mmregs
.global_main
storedata
stm1000h,ar1;
ar1映射到内存1000h位
stm5000h,ar1;
addressofexteriormemory
rpt(循环执行下一条指令,计数为短立即数)#07h;
循环执行下一条指令8次
st(存储T寄存器的值)0aaaah,*ar1+;
data存储寄存器的值
readdatathenre-store
stm7h,ar3;
设置ar3
stm5008h,ar2;
stm1000h,ar1;
设置ar1为1000h
stm1008h,ar2;
设置ar2为1008h
loop:
ld*ar1+,t;
把单数据存储操作数装入T寄存器中
stt,*ar2+;
存储T寄存器的值
banzloop,*ar3-;
循环7次
here:
bhere;
实验目的:
本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。
在CCS中可以观察DATA内存空间地址0X1000~0X100F值的变化。
实验现象:
在CCS的“View”下拉菜单中的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;
本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H;
查看0x1000H~0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;
单击“Halt”暂停程序运行。
(三):
I/O实验
FileName:
exp03.asm
learnhowtooperatetheI/Oports
getsomeknowledgeoftherts.libfile
intheI/Ospace0x0000=>
8switches
0x0001=>
8LEDs
.text
stm3100h,sp;
堆栈指针的首地址设为#3100h
definetheaddress,定义ar1的地址
definetheaddress
portr00h,*ar1;
从端口00h读出开关状态,存入ar1中。
*ar1=port(00h)
portw*ar1,01h;
将ar1的内容(开关状态)写入到led灯上(输入到
01h),控制灯的亮灭
b_main;
寻循环执行
任意调整K0—K7开关,可以观察到对应LP0—LP7灯“亮”或“灭”(四):
定时器实验
源程序
【初始化程序】
.global_initial
_initial:
stm300h,ar1;
初始化300h数据地址,设置ar1的地址
st#00h,*ar1;
辅助寄存器ar1指向#00h
stm302h,ar1;
初始化302h数据地址,设置ar2的地址
stm200h,ar1
st#5555h,*ar1
stm201h,ar1
st#0aaaah,*ar1
stm202h,ar1
st#400h,*ar1
ssbx1,11;
将ST1.INTM置为1,停止所有中断
stm0ffffh,ifr;
清除所有中断标识ifr:
中断标志寄存器
stm00h,imr;
将立即数寄存器(imr)置为0,停止所有中断
stm410h,tcr;
停止计时器tcr:
发送控制寄存器
stm4e1fh,prd;
将初始时间设为4e1fh
stm420h,tcr;
开始计时器
stm08h,imr;
允许计时器中断
rsbx1,11;
将ST1.INTM置为0,开始所有中断
ret
【端口程序】
(定义管脚)
.global_porta
.global_portb
_porta:
stm304h,ar1;
设置ar1地址
st5555h,*ar1;
辅助寄存器ar1指向5555h
ar1的值做输出控制小灯亮灭
_portb:
st0aaaah,*ar1;
辅助寄存器ar1指向0aaaah
ar1的值控制亮灭
【向量程序】
.sect"
.vectors"
.ref_c_int00;
C程序入口
.ref_timer;
时间中断点
.align0x80;
必须被连结到页边界
RESET:
重设向量
BD_c_int00;
到C入口点的分支
STM#200,SP;
堆栈大小为200SP:
堆栈寄存器
nmi:
RETE;
启动中断并从一个返回
NOP
软件中断
sint17.space4*16
sint18.space4*16
sint19.space4*16
sint20.space4*16
sint21.space4*16
sint22.space4*16
sint23.space4*16
sint24.space4*16
sint25.space4*16
sint26.space4*16
sint27.space4*16
sint28.space4*16
sint29.space4*16
sint30.space4*16
int0:
RETE
int1:
int2:
tint:
b_timer;
设置实用time中断NOP
rint0:
xint0:
rint1:
xint1:
int3:
RETE
单击“Run”运行,可观察到LED灯(LP0—LP7)以一定的间隔时间不停摆动;
单击“Halt”,暂停程序运行,LED灯停止闪烁;
.单击“Halt”,暂停程序运行,LED灯停止闪烁。
(五):
INT2中断实验
stm300h,ar3;
初始化数据300har3:
辅助寄存器
st#00h,*ar3;
辅助寄存器ar3指向#00h
stm302h,ar4;
初始化数据300har4:
st#00h,*ar4
将st1.intm置为1,停止所有中断
stm00h,imr;
将立即数置0,停止所有中断imr:
立即数寄存器
清除所有中断标志ifr:
stm04h,imr;
允许int2中断
允许所有中断
【端口程序】与【向量程序】参见实验四。
.实验现象
单击“Run”运行程序,反复拨动开关K0,观察LP1—LP7LED灯亮灭变化;
单击“Halt”暂停程序运行,反复拨动开关K0,LP1—LP7LED灯亮灭不发生变化。
实验二:
A/D采样实验
实验目的
1.掌握利用TLV320AD50实现A/D转换的技术基本原理和常用方法。
2.学会DSP的多信道缓冲串口的应用方法。
3.掌握并熟练使用DSP和AD50的接口及其操作。
4.通过实验加深对DSP系统频谱混叠认识.
【C程序】
externvoidInitC5402(void);
/*创建初始化C5402的函数,返回值为空*/
externvoidOpenMcBSP(void);
/*创建打开McBSP端口的函数,返回值为空;
*/
externvoidCloseMcBSP(void);
/*创建关闭McBSP端口函数*/
externvoidREADAD50(void);
/*创建从AD50的数据流中读取数据的函数;
AD50:
硬件端口*/
voidmain(void)/*主函数开始*/
{
InitC5402();
/*初始化C5402DSP*/
OpenMcBSP();
/*调用函数,打开McBSP端口*/
while
(1)
READAD50();
/*从AD50的数据流中读取数据,完成AD转换*/
}
【汇编程序】
.global_InitC5402;
全局符号定义_InitC5402(初始化C5402)
.global_OpenMcBSP;
全局符号定义_OpenMcBSP(打开McBSP)
.global_CloseMcBSP;
全局符号定义_CLoseMcBSP(关闭McBSP)
.global_READAD50;
全局符号定义_READAD50(读取AD50数据流)
.global_WRITEAD50;
全局符号定义_WRITEAD50(向AD50写入数据流)
.includeMMRegs.h;
引入头文件MMRegs.h_InitC5402:
LD#0,DP;
重置数据存储器页指针
STM#0,CLKMD;
对DSP时钟进行软件设置
(在设置之前转到分线规模
式)
STM#0x4007,CLKMD;
将C5402DSP时钟设置到40Hz
*******ConfigureC5402SystemRegisters*******;
配置C5402系统寄存器
STM#0x2000,SWWSR;
为IO空间设置两个等待周期;
SWWSR:
外部总线S/W等待状态寄存器
为数据和监督空间设置0个等待周期
STM#0x0000,BSCR;
为堆栈转换寄存器设置等待状态;
BSCR:
外部总线块转换控制寄存器
堆栈空间为64k,之间没有多余的循环
连续的监督/数据读取
STM#0x1800,ST0;
为状态寄存器0进行预设值
STM#0x2900,ST1;
为状态寄存器1进行预设值(note:
INTX=1)
STM#0x00A0,PMST;
PMST:
处理器方式状态寄存器
OVLY=1,向量指向0080h
*******SetupTimerControlRegisters*******;
(设置时钟控制寄存器)
STM#0x0010,TCR;
停止on–chip计时TCR定时器控制寄存器
计时器0用作主循环的计时器
*******InitializeMcBSP2Registers*******;
(初始化McBSP2(用来创建设备配置)寄存器)
STMSPCR1,McBSP2_SPSA;
设置SPCR1的寄存器地址
STM#0000h,McBSP2_SPSD;
McBSP2recv=left–justify;
通过框架同步产生接受中断
STMSPCR2,McBSP2_SPSA;
设置SPCR2的寄存器地址;
通过框架同步产生传输中断
McBSP2Tx(异步传输);
在SW断点之后运行
STMRCR1,McBSP2_SPSA;
设置RCR1的寄存器地址;
RCR1:
接收控制寄存器STM#0040h,McBSP2_SPSD;
接收框架1长度=16bits
STMRCR2,McBSP2_SPSA;
设置RCR2的寄存器地址
STM#0040h,McBSP2_SPSD;
接收相位=1
设置框架2长度为16bits
STMXCR1,McBSP2_SPSA;
设置XCR1的寄存器地址
设置与接收(recv)相同
STMXCR2,McBSP2_SPSA;
设置XCR2的寄存器地址
STMPCR,McBSP2_SPSA;
设置PCR的寄存器地址
STM#000eh,McBSP2_SPSD;
时钟和框架从外部产生(slave)*******FinishDSPInitialization*******;
(结束DSP初始化)STM#0x0000,IMR;
关闭外围中断
STM#0xFFFF,IFR;
清除中断的标志
RET;
返回主程序
*******WaitingforMcBSP0RXFinished*******;
(等待McBSP0异步接收结束)
IfRxRDY1:
启动McBSP2Rx
LDMMcBSP2_SPSD,A
AND#0002h,A;
隐藏已经接受到的bit(可以用来代替系列端口中断)
BCIfRxRDY1,AEQ;
继续寄存(checking)
返回
*******WaitingforMcBSP0TXFinished*******;
(等待McBSP0异步传输结束)
IfTxRDY1:
启动McBSP2Tx
隐藏已经传输的bit
BCIfTxRDY1,AEQ;
继续寄存
******************************************
_OpenMcBSP:
rsbxxf;
寄存器xf复位为0
callwait;
非条件调用等待状态
-全文完-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 硬件 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)