北邮DSP硬件实验报告
北邮 DSP硬件实验报告

目录第三章 (2)实验一 (2)实验二 (3)实验三 (4)实验四 (5)实验五 (9)实验六 (13)实验七 (17)第四章 (35)实验一 (35)第三章实验一.mmregs ;定义存储器映像寄存器.global _main ;全局符号,可在外部定义_main:stm #3000h,sp ;设置堆栈指针寄存器的值为3000hssbx xf ;置位状态寄存器xf=1,灯亮call delay ;调用延时子程序,延时rsbx xf ;将xf置0call delay ;调用delay函数b _main ;程序跳转到"_MAIN"nopnop;延时子程序delay:stm 270fh,ar3 ;设置辅助寄存器ar3值为9999loop1:stm 0f9h,ar4 ;设置辅助寄存器ar4值为249loop2:banz loop2,*ar4- ;寄存器ar4值减一,当其值不为0时跳转到loop2 banz loop1,*ar3- ;寄存器ar3值减一,当其值不为0时跳转到loop1 ret ;可选择延迟的返回nop ;空指令nop.end.mmregs.global _main_main:;store data 存入数据stm 1000h,ar1 ;address of internal memory 寄存器ar1地址1000hrpt #07h ;循环执行下一条指令8次st 0aaaah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H~1007H的八个存储单元中.;;read data then re-store 读取数据再存到别的寄存器中stm 7h,ar3 ; 寄存器ar3地址7hstm 1000h,ar1 ; 寄存器ar1地址1000hstm 1008h,ar2 ; 寄存器ar2地址1008hloop: ;循环的将1000H~1007H的八个单元中的数据COPY到1008H~100F的;八个存储单元中.ld *ar1+,t ;,把地址为ar1 的数据单元中的数据装到累加器t 中,ar1 = ar1 +1 st t,*ar2+banz loop,*ar3-here: ;死循环.b here.end.mmregs ;定义映像寄存器.global _main ;声明全局符号.text_main:stm 3100h,sp ;设置堆栈指针寄存器的值为3100hstm 1000h,ar1 ;设置辅助寄存器ar1值为1000hportr 8000h,*ar1 ;读入I/O 8000H数据,将其存储到数据空间的1000H nop ;NOP为空操作,起延时作用.nopportw *ar1,8001h ;将数据空间的1000H单元的数据,写出到I/O 8000H nopnop 5b _main ;程序跳转到"_MAIN"执行.nopnop.end.global _c_int00,_timer0 ;引用函数c_int00,引用了c中的函数.sect ".vecs" ;自定义一个已初始化段.vecsreset: b _c_int00 ;复位中断向量,跳转到主程序nopnopnmi: rete ;非屏蔽外部中断的输入引脚nopnopnop; software interruptssin17: .space 4*16 ;软件中断,内部中断,保留出中断向量的地址空间,将4*16的地址;存储在sin17~sin30sin18: .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: .space 4*16int0: rete ;此处int0中断响应为0,设置rete响应中断并返回nopnopnopint1: rete ;此处int1中断响应为0,设置rete响应中断并返回nopnopnopint2: rete ;此处int2中断响应为0,设置rete响应中断并返回nopnopnoptint0: b _timer0 ;同步串口0(McBSP0)接受中断,直接返回nopnopbrint0: rete ;同步串口0(McBSP1)发送中断,直接返回nopnopnopbxint0: rete ;同步串口0(McBSP1)发送中断,直接返回nopnopnopdmac0: rete ;RESERVED OR DMA CHANNEL0 INTERRUPTnopnopnoptint1_dmac1: rete ;TIMER1 INTERRUPT OR DMA CHANNEL1 INTERRUPTnopnopnopint3: rete ;外部中断int3,允许中断并返回nopnopnophpint: rete ;HPI INTERRUPTnopnopnopbrint1_dmac2: rete ;McBSP1 RECEIVE INTERRUPT OR DMA CHANNEL 2 INTERRUPT nopnopnopbxint1_dmac3: rete ;McBSP1 TRANSMIT INTERRUPT OR DMA CHANNEL 3 INTERRUPT nopnopnopdmac4: rete ;DMA CHANNEL 4 INTERRUPTnopnopnopdmac5: rete ;DMA CHANNEL 5 INTERRUPTnopnopnop; ****************************结束*****************************;*************************************************************//*;* 文件名称: exp04.c;* 适用平台: EXPIII+实验系统;* CPU类型: DSP TMS320VC54X;* 软件环境: CCS3.1 (5000系列);* 试验接线: 1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54x CPU板的跳线J2的1、2短接;* (HPI 8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;;* CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);;* 试验现象: LED灯(LED1~LED8)以一定的间隔时间不停闪亮变化;;*************************************************************//************************文件预处理***************************/#include "tms320uc5402.h"/*************************************************************//********************全局变量定义与初始化*********************/ioport unsigned port8001;unsigned int show=0x00aa;unsigned int num=0x0000;/*************************************************************//*******************函数、子程序声明与定义********************/void sys_ini() //系统初始化子程序{asm(" ssbx INTM"); //全局禁止所有可屏蔽中断PMST&=0x00FF; //(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间SWWSR=0x7000; //io空间7个等待周期,程序与数据空间0个等待周期CLKMD=0x17FA; //CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间}void timer0_ini() //定时器0初始化子程序{TCR|=0x0010; //停止定时器0PRD=0x2710; //PRD=10000(D)TCR|=0x000A; //TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5msIMR=0x0008; //使能定时器0中断IFR=0xFFFF; //清除所有中断标志位asm(" rsbx INTM"); //全局使能可屏蔽中断TCR&=0xFFEF; //开始定时器0TCR|=0x0020; //复位定时起0}/*************************************************************//*****************中断服务子程序声明与定义********************/interrupt void timer0() //定时器0中断子程序{if(num==200) //记200次定时器中断,时间=200*5ms=1s{show=~show; //取反num=0;}elsenum++;return;}/*************************************************************//**************************主程序*****************************/ void main(void){sys_ini();timer0_ini();for(;;){port8001=show;}}/***************************结束******************************/实验五Initial.asm.mmregs.global _initial.text_initial:NOPLD #0, DP ;重置数据指针,为DP寄存器赋值0;DP是状态寄存器ST0 的低9 位,和7 位(数据存储器地址)构成16 位数据存储区地址STM #0, CLKMD ;设置时钟模式寄存器的值为0;可通过调整CLKMD 寄存器改变CPU 时钟。
北京邮电大学_dsp_matlab实验报告

数字信号处理实验报告实验名称:数字信号处理实验学生姓名:班级:班内序号:1.实验要求假设信号x(n) 由下述信号组成:请选择合适的长度N 和窗函数,用DFT 分析其频谱,得到清楚的三根谱线。
2.实验代码和实验结果N = 1000; % Length of DFTn = [0:1:N-1];xn = 0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4);Xk = fft(xn,N);k=[0:1:N-1];subplot(5,1,1);stem(k,abs(Xk(1:1:N)));title('DFT x(n)');xlabel('k');axis([140,240,0,6])subplot(5,1,2);stem(k, abs(Xk(1:1:N)),'r');%画出sin(0.3npi)-cos(0.302npi-pi/4) axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,3);stem(k, 1000*abs(Xk(1:1:N)),'g');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');subplot(5,1,4);stem(k,0.01*abs(Xk(1:1:N)),'k');%画%sin(0.3npi)-cos(0.302npi-pi/4)axis([140,160,0,6]);title('sin(0.3*pi*n)-cos(0.302*pi*n) ');xlabel('k');subplot(5,1,5);stem(k, 10*abs(Xk(1:1:N)),'m');%画出0.001*cos(0.45npi)axis([220,230,0,6]);title('cos(0.45*pi*n) ');xlabel('k');结论:由上图及过程可知,当DFT变换长度为1000时所得到的谱线非常理想。
DSP硬件实验报告-北邮

北京邮电大学DSP硬件实验报告学院: 电子工程学院专业:姓名:学号:班级:实验一常用指令实验一、实验目的熟悉DSP开发系统的连接了解DSP开发系统的组成和结构和应用系统构成熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。
二、实验步骤与内容(一)简单指令程序运行实验源程序:;File Name:exp01.asm;the program is compiled at no autoinitialization mode --程序在非自动初始化模式下编译.mmregs --(enter memory-mapped registers into the symbol table) --进入记忆映射注册进入符号表.global _main --(identify one or more global(external)symbols)--定义一个或多个全局变量_main:stm(累加器的低端存放到存储器映射寄存器中) #3000h,sp(堆栈指针寄存器);堆栈指针的首地址设为#3000hssbx(状态寄存器位置位)xf ;状态寄存器位置位,灯亮call (非条件调用,可选择延迟)delay(存储器延时) ;调用delay函数延时rsbx(状态寄存器复位)xf ;状态寄存器位复位,灯灭call delay ;调用delay函数延时b (累加器)_main ;可选择延迟的无条件转移,循环执行nop(无操作)nop;delay .5 seconddelay: ;延迟0.5秒stm 270fh,ar3 (辅助寄存器3) ;把地址存放到存储器映射寄存器中loop1:stm 0f9h,ar4 (辅助寄存器4);把地址存放到存储器映射寄存器中loop2:banz loop2,*ar4- ;AR4不为0时转移,指针地址减一banz loop1,*ar3- ; 若不为0,ar3减1,共进行10000*250次跳转ret (可选择延迟的返回 pc=sp++) ;return,返回nopnop;stm 2 cycles;banz when TRUE 4 cycles; FALSE 2 cycles;0f9h=>249d;270fh=>9999d.end实验现象XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;(二)资料存储实验源程序:*File Name:exp02.asm;get some knowledge of the cmd file;the program is compiled at no autoinitialization mode.mmregs.global _main_main:;store datastm 1000h,ar1 ;ar1映射到内存1000h位; stm 5000h,ar1 ;address of exterior memoryrpt(循环执行下一条指令,计数为短立即数) #07h ;循环执行下一条指令8次st(存储T寄存器的值) 0aaaah,*ar1+ ;data 存储寄存器的值;read data then re-storestm 7h,ar3 ;设置ar3; stm 5000h,ar1 ;address of exterior memory; stm 5008h,ar2 ;address of exterior memorystm 1000h,ar1 ;设置ar1为1000hstm 1008h,ar2 ;设置ar2为1008hloop:ld *ar1+,t ;把单数据存储操作数装入T寄存器中st t,*ar2+ ;存储T寄存器的值banz loop,*ar3- ;循环7次here:b here ;可选择延迟的无条件转移,循环执行.end实验目的:;本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。
北邮电子DSP硬件报告

DSP硬件课程实验报告学院:电子工程学院班级: 2011211203学号: 2011210876姓名:孙月鹏班内序号: 04实验一:常规指令实验一、 实验目的1.熟悉DSP 开发系统的连接2.了解DSP 开发系统的组成和结构和应用系统构成3.熟悉常用C54X 系列指令的用法(程序寻址,寄存器,I/O 口,定时器,中断控制)。
二、 实验设备计算机,CCS 2.0版软件,DSP 仿真器,实验箱。
三、 实验操作方法1、系统连接进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP 开发系统与计算机连接有问题。
2、运行CCS 程序先实验箱上电,然后启动CCS ,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。
四、代码注释与实验结果1)简单指令程序运行实验①代码及注释.mmregs ;定义储存器映像寄存器.global _main ;全局符号_main:stm #3000h,sp ;3000h 放入堆栈指针寄存器的首地址中 ssbx xf ;将对外接口XF 置1,此时灯亮call delay ;调用延时子程序,延时rsbx xf ;将XF 置0,call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nop ;无任何操作nop;延时子程序delay:PCI/USB/EPP 接口 JTAG 接口 计 算 机 仿 真 器 用户 开发板;2*16*16*16+7*16*16+15=9999loop1: ;循环1stm 0f9h,ar4 ;将ar4的值赋为15*16+9=249loop2: ;循环2banz loop2,*ar4- ;指针地址每次减1,ar4不为0时重复执行loop2 banz loop1,*ar3- ;同上ret ;可选择延迟的返回nop ;无操作nop②程序运行原理:此程序为灯闪烁程序。
北邮 DSP 实验二实验报告

实验二:数字信号的 FFT 分析题目1假设信号 x(n) 由下述信号组成:()0.001*cos(0.45)sin(0.3)cos(0.302)4x n n n n ππππ=+-- 这个信号有两根主谱线 0.3pi 和 0.302pi 靠的非常近,而另一根谱线 0.45pi 的幅度很小,请选择合适的长度 N 和窗函数,用 DFT 分析其频谱,得到清楚的三根谱线。
步骤:1.编写离散傅里叶变换DFT 函数:function [Xk] = dft(xn,N)% Computes Discrete Fourier Transform Coefficients% [Xk] = dft(xn,N)% Xk = DFT coeff. array over 0 <= k <= N-1% xn = input signal% N = length of DFTn = [0:1:N-1]; % row vector for nk = [0:1:N-1]; % row vecor for kWN = exp(-j*2*pi/N); % Wn factornk = n'*k; % creates a N by N matrix of nk valuesWNnk = WN .^ nk; % DFT matrixXk = xn * WNnk; % row vector for DFT coefficients2.代码实现:n=0:1:999;x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-0.25*pi);stem(n,x);title('signal x(n), 0<=n<=999');xlabel('n');X=dft(x,1000);% 计算1000点DFT magX=abs(X(1:1:501));% 镜像对称,只画出一半 k=0:1:500;w=2*pi*k/1000;stem(w/pi,magX);title('DTFT Magnitude');xlabel('frequency in pi units');axis([0.29,0.31,0,500]);xlabel('frequency between 0.29pi and 0.31pi');axis([0.44,0.46,0,0.5]);xlabel('frequency between 0.44pi and 0.46pi');3.图片:4.分析:x(n)由3个正弦函数叠加而成,周期分别是40, 20, 1000。
北邮信号与信息处理DSP实验二

北邮信号与信息处理DSP实验二信号与信息综合处理实验报告学院:班级:姓名:学号:实验二 FFT 实现1. 实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT 的过程。
2. 实验原理2.1FFT 变换(1) FFT 算法:[]122()()(/2)0,1,...,1()()(/2)N n Nx n x n x n N n x n x n x n N W =++⎧⎪=-⎨=-+⎪⎩,/2111/20/2122/20()(2)()()(21)()N nr N n N nr N n X k X r x n W X k X r x n W -=-=⎧==⎪⎪⎨⎪=+=⎪⎩∑∑(2) 蝶形运算图:(3) 实现函数:DSP_fft(w, N, x, y)。
2.2IFFT变换(1)算法实现:(2)实现流程:2.3SDRAM(1)EMIFA_Config:在csl_emifa.h中声明了一个结构体EMIFA_Config,用来配置EMIFA。
结构体中声明的12个32位无符号整形变量为EMIFA总线的12个接口寄存器;(2)指定SDRAM数据空间:#pragmaDATA_SECTION(sdram_data,".off_ram");unsigned int sdram_data[0x10000];上述代码含义为定义一个全局变量sdram_data[0x10000],将它指定到自定义的数据空间段off_ram中,其中函数具体用法为#pragma DATA_SECTION(函数名或全局变量名,"用户自定义在数据空间的段名";(3)CMD文件:DSP系统中存在大量的存储器,CMD文件描述物理存储器的管理、分配和使用情况,用于DSP 代码的定位。
3.程序功能3.1FFT变换通过给定的旋转因子,利用DSP_fft (w, N, x, y ) 函数,对给定64点序列进行FFT变换,其中N 为变换点数,具体说明如下:(1)w[64]为64点FFT的旋转因子,由tw_fft16x16.exe生成;(2)x[128]内存放原序列,即输入时域信号的实部虚部按顺序排列;(3)y[128]内存放FFT变换后的序列,实部虚部按顺序排列;(4)m[64]内存放FFT变换后64点模值的平方。
北邮信号与信息处理DSP实验三剖析

信号与信息综合处理实验报告学院:信息与通信工程学院班级:2013211124姓名:王丹頔学号:2013210659实验三FIR滤波器实现1.实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FIR的过程。
2.实验原理2.1AIC23(1)AIC23相关介绍图1 AIC23结构图图2 AIC23编码器控制寄存器图3 AIC23寄存器集合图4 采样速率设置图5 采样率可配参数(2)void DSK6416_init()-设置所有的CPLD寄存器到上电状态,初始化内部BSL数据结构;-在使用任何BSL函数之前都必须调用。
(3)DSK6416_AIC23_openCodec函数-DSK6416_AIC23_CodecHandle DSK6416_AIC23_openCodec (int id, DSK6416_AIC23_Config *Config);-id:指定使用哪个编码器,DSK6416上为id=0;-Config:指向包含编码器寄存器值的结构,以该结构中的值初始化寄存器;-调用成功:返回编码器句柄;失败:返回INV常数(-1)。
(4)DSK6416_AIC23_write函数-Int16 DSK6416_AIC23_write(DSK6416_AIC23_CodecHandle hCodec, Int32 val);-hCodec, Val:编码器句柄,写入编码器的值;- 返回TRUE :数据成功写入; - 返回FALSE :数据端口忙。
(5) DSK6416_AIC23_closeCodec 函数- DSK6416_AIC23_closeCodec(DSK6416_AIC23_CodecHandle hCodec); - 关闭编码器。
2.2 FIR 滤波器实现(1) FIR 滤波器介绍滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号。
北邮 数字信号处理硬件实验实验报告

数字信号处理硬件实验实验报告学院:电子工程学院一、5416常规实验(一)实验一常用指令实验1.代码及注释2.代码实现过程首先,为堆栈分配地址,然后输出端口置为1,灯亮,延时,累加器对此累加,如此循环。
(二)实验二数据存储实验1.代码及注释2.代码实现过程首先设定辅助寄存器ar1的地址,然后将数据存储到ar1中,每次完成操作后ar1指向下一地址,重复8次后结束。
3.相关截图(1)查看内存单元,将之修改为“0x0000”(2)run后,内存单元全部变成了“0xAAAA”3)查看CPU Registers单元(三)实验三I/O实验1.代码及注释2.代码实现过程开始后,读入I/O数据,写出I/O数据,结束。
3.实验结果图拨动开关前拨动开关后(四)实验四定时器实验1.代码及注释exp04.c2.代码实现过程开始后,系统初始化,计时器初始化。
随后输出端口赋值,LED灯开始闪烁。
定时器中断,跳到C程序中断子函数,依次计数,判断是否达到设定的时间,若达到,灯亮灭状态相反,若没有,继续亮灭,并且再次判断。
直到达到设定时间后,重新计数,定时器中断,跳到C程序中断子函数,依次计数,如此反复。
3.实验结果图交替闪烁:(五)实验五INT2中断实验1.代码及注释int2.cPORT.ASMVECTORS.ASMINITIAL.ASM2. 代码实现过程开始后,系统初始化,并中断子程序,八个LED灯在S5的控制下亮灭。
3.实验结果图反复按S5键,灯亮灭变化(六)实验六A/D转换实验1.代码及注释2.代码实现过程开始后,系统初始化并中断子程序。
将采样数据存入数组,并读取出来。
3.相关截图断点处停止A/D转化后的数据波形变化频率调节幅度调节观察memory点击animate,数据变成红色(七)实验七D/A转换实验1.代码及注释DA7303.C/*;***********************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*;*--------------------------------------------- 文件信息 --------------- ;*;* 文件名称 : DA7303.C;* 文件功能 : 该文件为测试AD7303的测试程序,CPU=TMS320VC5402LF2407;* 接口说明: CS = SPISTE(IOPC5)-- 配置成IO模式CLK = SPICLK -- 配置成SPI模式DATA = SPIMOSI -- 配置成SPI模式;*-------------------------------------------- 最新版本信息 ------------;* 文件作者 : 迟利刚;* 创建日期 : 2005/01/19;* 版本声明 : v1.0.0;*-----------------------------------------------------------------------//------------------头文件--------------------------------------/*******************************************************************/#include "lf2407.h"#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 1024//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/************************************************************************************** 所使用的函数原型 ****************************************************************************************/void cpu_init(void); //初始化CPUvoid xint1_init(void); //外部中断1初始化子程序void iopc_init(void); //初始化IOPC设置寄存器void spi_init(void); //初始化SPI设置寄存器interrupt void PHANTOM(void); //伪中断程序interrupt void int1(void); //中断1中断子程序void delay_3us(void); //3us延迟void Delay(UINT16 numbers); //长延迟//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(){asm(" nop ");asm(" nop ");asm(" nop ");asm(" setc INTM"); //禁止所有中断 ST0.9=INTMasm(" clrc SXM"); //抑制符号位扩展asm(" clrc OVM"); //累加器中结果正常溢出asm(" clrc CNF"); //配置 B0为数据储存器/*** Configure the System Control and Status registers ***/* SCSR1=0x00FD; //配置时钟锁相为4倍频CLKOUT=4*10MHZ=40MHZ,MAX CPU freq/*bit 15 0: reservedbit 14 0: CLKOUT = CPUCLKbit 13-12 00: IDLE1 selected for low-power mode when execute IDLE instructionbit 11-9 000: PLL x1 modebit 8 0: reservedbit 7 1: 1 = enable ADC module clockbit 6 1: 1 = enable SCI module clockbit 5 1: 1 = enable SPI module clockbit 4 1: 1 = enable CAN module clockbit 3 1: 1 = enable EVB module clockbit 2 1: 1 = enable EVA module clockbit 1 0: reservedbit 0 1: clear the ILLADR bit*/*SCSR2 = (*SCSR2 | 0x000B) & 0x000F;/*bit 15-7 0's: reservedbit 6 0: Input Qualifier Clocks=5 clockbit 5 0: D'ont write this bit.allows user to disable WD through the WDDIS bit in the WDCR.bit 4 0: XMIF_HI-Z, 0=normal mode, 1=Hi-Z'dbit 3 1: disable the boot ROM, enable the FLASHbit 2 no change MP/MC* bit reflects state of MP/MC* pin bit 1-0 11: 11 = SARAM mapped to prog and data*//*** Disable the watchdog timer ***/* WDCR=0x00EF; //禁止看门狗/*bits 15-8 0's: reservedbit 7 1: clear WD flagbit 6 1: disable the dogbit 5-3 101: must be written as 101bit 2-0 111: WDCLK divider = 64 WDCLK= CLKOUT/512*//*** Setup external memory interface for LF2407 ***/WSGR = 0x001F;/*bit 15-11 0's: reservedbit 10-9 00: bus visibility offbit 8-6 111: 7 wait-state for I/O spacebit 5-3 111: 7 wait-state for data spacebit 2-0 111: 7 wait state for program space*//*** Setup shared I/O pins ***/*MCRA = 0x0000; /* group A pins *//*bit 15 0: 0=IOPB7, 1=TCLKINAbit 14 0: 0=IOPB6, 1=TDIRAbit 13 0: 0=IOPB5, 1=T2PWM/T2CMPbit 12 0: 0=IOPB4, 1=T1PWM/T1CMPbit 11 0: 0=IOPB3, 1=PWM6bit 10 0: 0=IOPB2, 1=PWM5bit 9 0: 0=IOPB1, 1=PWM4bit 8 0: 0=IOPB0, 1=PWM3bit 7 0: 0=IOPA7, 1=PWM2bit 6 0: 0=IOPA6, 1=PWM1bit 5 0: 0=IOPA5, 1=CAP3bit 4 0: 0=IOPA4, 1=CAP2/QEP2bit 3 0: 0=IOPA3, 1=CAP1/QEP1bit 2 0: 0=IOPA2, 1=XINT1bit 1 0: 0=IOPA1, 1=SCIRXDbit 0 0: 0=IOPA0, 1=SCITXD*/*MCRB = 0xFE03; /* group B pins *//*bit 15 1: 0=reserved, 1=TMS2 (always write as 1) bit 14 1: 0=reserved, 1=TMS (always write as 1) bit 13 1: 0=reserved, 1=TD0 (always write as 1) bit 12 1: 0=reserved, 1=TDI (always write as 1) bit 11 1: 0=reserved, 1=TCK (always write as 1) bit 10 1: 0=reserved, 1=EMU1 (always write as 1) bit 9 1: 0=reserved, 1=EMU0 (always write as 1) bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*MCRC = 0x0001; /* group C pins *//*bit 15 0: reservedbit 14 0: 0=IOPF6, 1=IOPF6bit 13 0: 0=IOPF5, 1=TCLKINBbit 12 0: 0=IOPF4, 1=TDIRBbit 11 0: 0=IOPF3, 1=T4PWM/T4CMPbit 10 0: 0=IOPF2, 1=T3PWM/T3CMPbit 9 0: 0=IOPF1, 1=CAP6bit 8 0: 0=IOPF0, 1=CAP5/QEP4bit 7 0: 0=IOPE7, 1=CAP4/QEP3bit 6 0: 0=IOPE6, 1=PWM12bit 5 0: 0=IOPE5, 1=PWM11bit 4 0: 0=IOPE4, 1=PWM10bit 3 0: 0=IOPE3, 1=PWM9bit 2 0: 0=IOPE2, 1=PWM8bit 1 0: 0=IOPE1, 1=PWM7bit 0 1: 0=IOPE0, 1=CLKOUT*//*** Configure IOPA pin as an INPUT ***/*PADATDIR = *PADATDIR & 0x00FF;/*** Configure IOPB pin as an INPUT ***/*PBDATDIR = *PBDATDIR & 0x00FF;/*** Configure IOPC pin as an INPUT ***/*PCDATDIR = *PCDATDIR & 0x00FF;/*** Configure IOPD pin as an INPUT ***/*PDDATDIR = *PDDATDIR & 0xFEFF;/*** Configure IOPE pin as an INPUT ***/*PEDATDIR = *PEDATDIR & 0x00FF;/*** Configure IOPF pin as an INPUT ***/*PFDATDIR = *PFDATDIR & 0x7FFF;/*** Setup timers 1 and 2, and the PWM configuration ***/*T1CON = 0x0000; /* disable timer 1 */*T2CON = 0x0000; /* disable timer 2 */*GPTCONA = 0x0000; /* configure GPTCONA */*GPTCONB = 0x0000; /* configure GPTCONB *//*bit 15 0: reservedbit 14 0: T2STAT, read-onlybit 13 0: T1STAT, read-onlybit 12-11 00: reservedbit 10-9 00: T2TOADC, 00 = no timerX event starts ADCbit 8-7 00: T1TOADC, 00 = no timerX event starts ADCbit 6 0: TCOMPOE, 0 = Hi-z all timer compare outputs bit 5-4 00: reservedbit 3-2 00: TXPIN, 00 = forced lowbit 1-0 00: TXPIN, 00 = forced low*/* IMR=0x0000;/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/* IFR=0xFFFF; //清除所有中断标志,"写1清0"}//--------------------------------------------------------------------// 函数名称 : void xint1_init(void)// 函数说明 : 初始化XINT1// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void xint1_init() //外部中断1初始化子程序{* IMR=0x0001; //使能int1中断 --SPI Peripheral Interrupt Vector 0005h //when SPI INT IS high-priority mode/*bit 15-6 0: reservedbit 5 0: Level INT6 is maskedbit 4 0: Level INT5 is maskedbit 3 0: Level INT4 is maskedbit 2 0: Level INT3 is maskedbit 1 0: Level INT2 is maskedbit 0 0: Level INT1 is masked*/asm(" clrc INTM"); //开总中断}//--------------------------------------------------------------------// 函数名称 : void iopc_init(void)// 函数说明 : 初始化IOPC设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void iopc_init(){// *MCRB = *MCRB | 0x003C; // 配置SPISTE为IO,SPICLK、SPISOMI、SPISIMO为SPI口 *MCRB = *MCRB | 0x001C;/*bit 15 1: 0=reserved, 1=TMS2 (always write as 1)bit 14 1: 0=reserved, 1=TMS (always write as 1)bit 13 1: 0=reserved, 1=TD0 (always write as 1)bit 12 1: 0=reserved, 1=TDI (always write as 1)bit 11 1: 0=reserved, 1=TCK (always write as 1)bit 10 1: 0=reserved, 1=EMU1 (always write as 1)bit 9 1: 0=reserved, 1=EMU0 (always write as 1)bit 8 0: 0=IOPD0, 1=XINT2/ADCSOCbit 7 0: 0=IOPC7, 1=CANRXbit 6 0: 0=IOPC6, 1=CANTXbit 5 0: 0=IOPC5, 1=SPISTEbit 4 0: 0=IOPC4, 1=SPICLKbit 3 0: 0=IOPC3, 1=SPISOMIbit 2 0: 0=IOPC2, 1=SPISIMObit 1 1: 0=IOPC1, 1=BIO*bit 0 1: 0=IOPC0, 1=W/R**/*PCDATDIR = *PCDATDIR | 0x2020; /*** ConfigureSPISTE as an OUTPUT ***//****output high ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*/}//--------------------------------------------------------------------// 函数名称 : void spi_init(void)// 函数说明 : 初始化SPI设置寄存器// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void spi_init(){* SPICCR = * SPICCR & 0xFF7F; //复位SPI/*bit 7 0: reset SPI*/* SPICCR = 0x004f;/*bit 15-8 0: reservedbit 7 0: reset SPIbit 6 1: Data is output on falling edge and input on rising edge bit 5-4 0: reservedbit 3-0 1: Character Length 16bit*/* SPICTL = 0x000e;/*bit 15-5 0: reservedbit 4 0: Disable RECEIVER OVERRUN Flag bitbit 3 1: SPICLK signal delayed by one half-cycle;bit 2 1: SPI configured as a master.bit 1 1: Enables transmissionbit 0 0: Disables interrupt*/* SPIBRR = 0x0003;/*bit 15-7 0: reservedbit 6-0 3: 10MHZ Baud-Rate*/* SPIPRI = 0x0000;/*bit 15-7 0: reservedbit 6 0: Interrupts are high-priority requestsbit 5-4 0: Immediate stop on suspendbit 3-0 0: Reserved.*/* SPICCR=* SPICCR | 0x0080; //启动spi工作/*bit 7 1: start SPI}//-------------------------------------------------------------------- // 函数名称 : void int1(void)// 函数说明 : 中断1的子程序// 输入参数 : 无// 输出参数 : 无//-------------------------------------------------------------------- interrupt void int1() //中断1中断子程序{UINT16 temp;temp = *PVIR;* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<40000;i++);for(j=0;j<numbers;j++);}/************************************************************- 函数名称 : interrupt void PHANTOM(void)- 函数说明 : 伪中断子程序- 输入参数 : 无- 输出参数 : 无*********************************************************** */interrupt void PHANTOM(void){* IFR=0xFFFF; //清除所有中断标志,"写1清0"asm(" clrc INTM"); //开总中断return;}/************************************************************* ****************** 主函数 ******************************************************************************* */void main(){UINT16 temp,i;//----------系统初始化-------------------------------asm(" nop ");cpu_init(); //初始化CPUasm(" nop ");iopc_init(); //初始化IOPE设置寄存器asm(" nop ");xint1_init(); //外部中断1初始化子程序asm(" nop ");spi_init(); //初始化SPI设置寄存器asm(" nop ");//----------产生正弦波的数据------------------------for(i=0; i<LEN;i++){data_buff[i] = 127 + (int)(127.0*sin(2*pi*i/(LEN-1)));data_buff[i] = data_buff[i] & 0x00ff;}asm(" nop ");//---------发送给AD7303-----------------------------for(;;){for(i=0; i<LEN;i++){*PCDATDIR = *PCDATDIR & 0xffdf; /*** ConfigureSPISTE as an OUTPUT ***//****output low ******************//*bit 15-8 0: EnDIR 1 = output, 0 = inputbit 7-0 0: IOPEn in--1=high,0=low; out--1=high,0=low*///----------------------------------------------------------------* SPITXBUF = data_buff[i] & 0x00ff; //发送控制字、数据给AD7303//AD7303的控制字高8位// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 0 0 0 0 0 0 0 0//内部参考电压源,DAC-A、B DAC-A、B工作//----------------------------------------------------------------while((* SPISTS & 0x0040) == 0x0); //判断 SPISTS.6(SPI Interrupt Flag) //等于 1 ,说明SPITXBUF中数据发送完 //可以写入数据//等于0,不能再写入数据*PCDATDIR = *PCDATDIR | 0x0020; /*** ConfigureSPISTE as an an OUTPUT ***/ temp = *SPIRXBUF; // 读接收缓冲寄存器,清除SPI Interrupt Flagdelay_3us(); //延迟等待DA转换结束/****output high ******************/}} //----------- 等待SPI中断----------------------------------------while(1){port8001 = show;}}DA7303_54.c/*************************************************************;* 北京达盛科技有限公司;* 研发部;*;* ;*************************************************************//*;* 文件名称 : da7303_54.c;* 适用平台 : EXPIII+实验系统;* CPU类型 : DSP TMS320VC54X;* 软件环境 : CCS3.1 (5000系列);* 试验接线 : 1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54x CPU板的跳线J2的1、2短接;* (HPI 8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;;* CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);;* 试验现象 : 用示波器检测D/A转换单元的2号孔接口"输出1"输出一个正弦波;;*************************************************************///------------------头文件--------------------------------------#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//--------------- AD7303 控制字 --------------------------------// 15--------14-------13-----12-----11-----10------9-------8-----// INT/EXT---X--------LDAC---PDB---PDA-----A/B-----CR1-----CR0---// 参考电压--保留---- -B省电--A省电----0/A-1/B-//-------------------------------------------------------------//---------------------------------------------------------/* 端口定义 *///---------------------------------------------------------ioport UINT16 port8001; //定义输出io端口为0x8001;//----------------------------------------------------------//----------------------------------------------------------/* 全局变量定义 *///---------------------------------------------------------int data_buff[LEN]; //数据缓冲UINT16 show = 0x00aa; //LED显示的数值/*********************************************************************** *************** 所使用的函数原型 *************************************************************************************** */void cpu_init(void); //初始化CPUvoid Delay(UINT16 numbers); //延迟extern void delay_3us(void); //3us延迟void mcbsp0_write_rdy(UINT16 out_data);//MCBSP0发送一个数据void mcbsp0_init_SPI(void);//MCBSP0设置为SPI模式void mcbsp0_close(void);//MCBSP0关闭//-------------------------------------------------------------------/************************************************************************************************ 函数定义 *******************************************************************************************///--------------------------------------------------------------------// 函数名称 : void cpu_init(void)// 函数说明 : 初始化CPU// 输入参数 : 无// 输出参数 : 无//--------------------------------------------------------------------void cpu_init(void){asm(" nop ");asm(" nop ");asm(" nop ");//-------------------------------------------------------------------//CLKMD DEFINITIONS:// PLLMUL (bit 15-12) - 0000 PLL multiplier = 0 (mult by 1)// PLLDIV (bit 11) - 0 PLL divider = 0 (div by 1)// PLLCOUNT (bit 10-3)- 11111111 PLL counter set to max// PLLONOFF (bit 2) - 1 PLL on// PLLNDIV (bit 1) - 1 Select PLL mode// PLLSTATUS (bit 1) - x PLL Status (read only)// ------------------// 0000011111111111 = 0x07ff CLKMD=1 X CLKIN//--------------------------------------------------------------------*(unsigned int*)CLKMD=0x0; //switch to DIV mode clkout= 1/2 clkinwhile(((*(unsigned int*)CLKMD)&01)!=0);*(unsigned int*)CLKMD=0x37ff; //switch to PLL X 4 mode//--------------------------------------------------------------------// ST0 DEFINITIONS:// ARP (bit 15-13) - 000 Auxiliary register pointer// TC (bit 12) - 1 Test/control flag// C (bit 11) - 1 Carry is set to 1 if the result of an addition generates a carry; it is cleared to 0 if the// result of a subtraction generates a borrow.// OVA (bit 10) - 0 Overflow flag for accumulator A// OVB (bit 9) - 0 Overflow flag for accumulator B// DP (bit 8-0) - 00000000 Data-memory page pointer// --------------------// 0001 1000 0000 0000 =0x1800 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST0=0x1800;//--------------------------------------------------------------------// ST1 DEFINITIONS:// BRAF (bit 15) - 0 Block-repeat active flag// CPL (bit 14) - 1 Compiler mode CPL=0 DP;CPL=1 SP// XF (bit 13) - 1 XF status// HM (bit 12) - 0 Hold mode// INTM (bit 11) - 1 Interrupt mode INTM=0,All unmasked interrupts are enabled// Reser (bit 10) - 0 Always read as 0// OVM (bit 9) - 0 Overflow mode// SXM (bit 8) - 1 Sign-extension mode// C16 (bit 7) - 0 Dual 16-Bit/double-precision arithmetic mode// FRCT (bit 6) - 0 Fractional mode// CMPT (bit 5) - 0 Compatibility mode// ASM (bit 4-0) - 00000 Accumulator shift mode// --------------------// 0110 1001 0000 0000 =0x2900 Reset value//--------------------------------------------------------------------// *(unsigned int*)ST1=0x6900;//--------------------------------------------------------------------//IPTR DEFINITIONS?// IPTR (bit 15-7) - 001111111 Run-time Interrupt vector location = 0x3f80 (for now)// MP/~MC (bit 6) - 1 Turn off internal Instruction ROM (use RAM)// OVLY (bit 5) - 1 Turn on internal RAM// AVIS (bit 4) - 1 Address visibility on// DROM (bit 3) - 0 Data ROM of FF00~FFFF is external// CLKOFF (bit 2) - 0 Clockout enabled,only for use clkout=cpu clock// SMUL (bit 1) - 1 Saturate before multiply on MAC// SST (bit 0) - 0 Do not saturate before store// -----------------// 0011 1111 1111 0010 = 0x3ff2/*---------------------------------------------------------------------*/*(unsigned int*)PMST=0x3FF2;//---------------------------------------------------------------------// SWWSR DEFINITIONS?// XPA (bit 15) - 0 Extended program address control bit. XPA is used in conjunctionwith the program space fields// (bits 0 through 5) to select the address range for program spacewait states// I/O (bits 14-12) - 111 set to max wait states for seven// Data1 (bits 11-9) - 111 Seven Wait state for Upper data space(0x8000-0xFFFF)// Data2 (bits 8-6) - 111 Seven Wait states for Lower data space (0x0000 - 0x7FFF)// Prog1 (bits 5-3) - 111 Seven Wait state for Upper program space. (xx8000-xxFFFF)// Prog2 (bits 2-0) - 111 Seven Wait states for Program space. (xx0000-xx7FFF)// -----------------// 1 111 111 111 111 111 - 0x7fff/*--------------------------------------------------------------------*/*(unsigned int*)SWWSR=0x7fff;//--------------------------------------------------------------------//SWCR DEFINITIONS?// Reserved (bits 15-1)// SWSM (bit 0) - 1 wait-state base values are mulitplied by 2// for a maximum of 14 wait states.// --------------------------// 0000 0000 0000 0001//--------------------------------------------------------------------*(unsigned int*)SWCR=0x0001;//--------------------------------------------------------------------//BSCR DEFINITIONS?// BNKCMP (bit 15-12) - 1111 Bank compare. Determines the external memory-bank size. BNKCMP is used to maskthe four MSBs of// an address.// 1111 4k// 1110 8k// 1100 16k// 1000 32k// 0000 64k// PS-DS (bit 11) - 1 One extra cycle is inserted between consecutive data and program reads. // Reserved (bits 10-3) - 00000000// HBH (bit 2) - 0 The hpi bus holder is disabled// BH (bit 1) - 0 The data bus holder is disabled// EXIO (bit 0) - 0 The external bus interface functions as usual// ------------------------------------// 1111 1000 0000 0000//--------------------------------------------------------------------*(unsigned int*)BSCR=0xf800;//--------------------------------------------------------------------asm(" ssbx intm "); //Disable all mask interrupts//--------------------------------------------------------------------// IMR DEFINITIONS// Writing a 1 to any IMR bit position enables the corresponding interrupt (when INTM = 0)// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 0 DMA channel 5 interrupt mask bit// DMAC4 (bit 12) - 0 DMA channel 4 interrupt mask bit// BXINT1/DMAC3 (bit 11) - 0 McBSP1 transmit interrupt mask bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 0 McBSP1 receive interrupt mask bit, or the DMA channel 2// HPINT (bit 9) - 0 Host to ’54x interrup /mask// INT3 (bit 8) - 0 External interrupt 3 mask// TINT1/DMAC1 (bit 7) - 0 timer1 interrupt mask bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 0 reserved, or the DMA channel 0 interrupt mask bit// BXINT0 (bit 5) - 0 McBSP0 transmit interrupt mask bit// BRINT0 (bit 4) - 0 McBSP0 receive interrupt mask bit// TINT0 (bit 3) - 0 Timer 0 interrupt mask bit// INT2 (bit 2) - 0 External interrupt 2 mask bit// INT1 (bit 1) - 0 External interrupt 1 mask bit// INT0 (bit 0) - 0 External interrupt 0 mask bit// ------------------------------// 0000 0000 0000 0000//--------------------------------------------------------------------*(unsigned int*)IMR=0x0;//--------------------------------------------------------------------// IFR DEFINITIONS// Writing a 1 to any IFR bit position clear the corresponding interrupt mask ,when corresponding interrupt occur IFR corresponding bit=1// Reserved (bits 15-14) - xx// DMAC5 (bit 13) - 1 DMA channel 5 interrupt flag bit// DMAC4 (bit 12) - 1 DMA channel 4 interrupt flag bit// BXINT1/DMAC3 (bit 11) - 1 McBSP1 transmit interrupt flag bit, or the DMA channel 3// BRINT1/DMAC2 (bit 10) - 1 McBSP1 receive interrupt flag bit, or the DMA channel 2// HPINT (bit 9) - 1 Host to ’54x interrutpflak// INT3 (bit 8) - 1 External interrupt 3 flag// TINT1/DMAC1 (bit 7) - 1 timer1 interrupt flag bit, or the DMA channel 1 interrupt mask bit// DMAC0 (bit 6) - 1 reserved, or the DMA channel 0 interrupt flag bit// BXINT0 (bit 5) - 1 McBSP0 transmit interrupt flag bit// BRINT0 (bit 4) - 1 McBSP0 receive interrupt flag bit// TINT0 (bit 3) - 1 Timer 0 interrupt flag bit// INT2 (bit 2) - 1 External interrupt 2 flag bit// INT1 (bit 1) - 1 External interrupt 1 flag bit// INT0 (bit 0) - 1 External interrupt 0 flag bit// ------------------------------// 1111 1111 1111 1111/*--------------------------------------------------------------------*/ *(unsigned int*)IFR=0xffff;//--------------------------------------------------------------------asm(" nop ");asm(" nop ");asm(" nop ");}/************************************************************- 函数名称 : void Delay(int numbers)- 函数说明 : 延时- 输入参数 : numbers- 输出参数 : 无************************************************************/void Delay(UINT16 numbers){UINT16 i,j;for(i=0;i<4000;i++)for(j=0;j<numbers;j++);}/************************************************************************** - 函数名称 : void mcbsp0_write_rdy(UINT16 out_data);- 函数说明 : MCBSP0发送一个数据- 输入参数 : data- 输出参数 : 无- 补充说明 : 内部带是否发送完成的判断************************************************************************** */void mcbsp0_write_rdy(UINT16 out_data){UINT16 j;*(unsigned int*)McBSP0_SPSA=0x0001; //McBSP0_SPSA 指向 SPCR2while ((*(unsigned int *)McBSP0_SPSD&0x0002)==0);//mask XRDY bit,XRDY = 1 Transmitter is ready for new data in DXR[1,2].for(j=0;j<20;j++); //delay*(unsigned int *)McBSP0_DXR1= out_data;}/**************************************************************************- 函数名称 : void mcbsp0_init_SPI(void);- 函数说明 : MCBSP0设置为SPI模式- 输入参数 : 无- 输出参数 : 无- 补充说明 :***************************************************************************/void mcbsp0_init_SPI(void){//--------------------------------------------------------//复位 McBSP0*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(RRST=0)*(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2*(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(XRST=0)//---------------------------------------------------------//延迟Delay(0); //延迟 4000*CPU 时钟周期//等待复位稳定//--------------------------------------------------------- //配置 McBSP0为 SPI 模式*(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1*(unsigned int*)McBSP0_SPSD=0x1800;//DLB (bit 15) 0 Digital loop back mode disabled//RJUST (bit 14-13) 00 Right-justify and zero-fill MSBs in DRR[1,2] //CLKSTP (bit 12-11) 11//X (bit 10-8) 000 Reserved//DXENA (bit 7) 0 data transmit delay bit.DX enabler is off//ABIS (bit 6) 0 A-bis mode is disabled//RINTM (bit 5-4) 00 RINT driven by RRDY。
dsp硬件实验报告68365

DSP 硬件课程实验报告学院:电子工程学院班级: 2009211204 姓名:***学号: ******** 班内序号: 14实验一:常用指令实验 一:实验要求1、4、5、7 指令实验---要求看懂2、3、6 指令实验---边做边进行源程序指令的详细注释二:实验步骤及内容2、直接寻址方式下的数据存取:源程序地址存的 16进制数反汇编程序主寄存器注释CPL=0 A=#1234h DP=#04hB=@20 @22=AA=A+#9AhDP=#09h @25=A A=#1234hDP=#8 @38h=A @3AH=#365hCPL=1 SP=#1C00h@5Fh=#0ACDChF6BE F020 1234 EA041114 8016F000 9A EA09 8019 F020 1234EA08 8038 763A 365 F7BE7718 1C00 765FABCDstartST[1,14]=0A=#1234h <<0DP=#4 B=@OX14 @OX16=AA=A+#0X9A DP=#9 @OX19=A A=#1234h <<0 DP=#8 @OX38=A @OX3A=#0X365ST[1,14]=1 Mmr[@0X18]=#0X1C00@0X5F=#0XACDCA=000001234DP=4 B=OX216地址内的值 内存窗口内OX216地址显示语句@22=A 结果A=0000012CE=1234+9A DP=9A=000001234 DP=8 CPL=1SP=1BFF(SP 指针自动减1,1C00-1=1BFF)将ST1状态寄存器的14位置0, 设置有效地址为DP:dma 。
寄存器a 载入立即数1234HDP 是ST0的(8-0)位。
DP=4的9位2进制数是000000100。
dma=20=14H ;DP :dma=04H :14H=000000100 0010100=>214H ;在内存窗口内OX214地址显示语句B=@20的结果。
北邮dsp实验一

信号与信息处理综合实验DSP实验一:HELLO和LED实验报告学院:信息与通信工程学院班级:姓名:学号:实验一HELLO和LED一、实验目的:熟悉CCS v5的开发流程,了解各个菜单功能。
二、程序功能:1、在控制台中显示Hello World。
在运行程序后,在控制台显示Hello World。
2、控制LED灯的亮灭情况。
三、程序基本信息:1、基本语句:DSK6416_init() 初始化板子的库DSK6416_LED_init() 初始化板子的LED情况DSK6416_DIP_init() 初始化DIP开关DSK6416_rest(DSK6416_USER_REG,0xFF) 调用寄存器及赋值DSK6416_waitusec(100000) 程序延时2、具体程序:#include "dsk6416.h"#include "dsk6416_led.h"#include "dsk6416_dip.h"void main(){DSK6416_init();DSK6416_LED_init();DSK6416_DIP_init();while(1){if (DSK6416_DIP_get(0)==1){DSK6416_LED_off(3);DSK6416_LED_off(2);DSK6416_LED_off(1);DSK6416_LED_off(0);}else if (DSK6416_DIP_get(3)==0){{DSK6416_rset(DSK6416_USER_REG, 0x0f);DSK6416_waitusec(50000);DSK6416_rset(DSK6416_USER_REG, 0x00);DSK6416_waitusec(150000);}if (DSK6416_DIP_get(3)==1){DSK6416_rset(DSK6416_USER_REG, 0xf1);DSK6416_waitusec(50000);DSK6416_rset(DSK6416_USER_REG, 0xf2);DSK6416_waitusec(50000);DSK6416_rset(DSK6416_USER_REG, 0xf4);DSK6416_waitusec(50000);DSK6416_rset(DSK6416_USER_REG, 0xf8);DSK6416_waitusec(50000);}}四、功能测试记录:1、Hello World:2、LED:运行结果是:按下键3LED不工作,再按下键0LED进入闪烁功能,再抬起键3LED 进入跑马灯功能。
北邮dsp实验报告

北邮dsp实验报告北邮DSP实验报告一、引言数字信号处理(Digital Signal Processing,简称DSP)是一门研究如何对数字信号进行分析、处理和合成的学科。
作为一门重要的电子信息科学与技术专业的实验课程,北邮DSP实验旨在让学生通过实践掌握DSP的基本理论和实际应用。
本实验报告将对北邮DSP实验进行详细介绍和总结。
二、实验目的北邮DSP实验的主要目的是让学生通过实际操作,深入理解数字信号处理的基本概念和方法,并掌握DSP实验的基本流程和技巧。
具体目标包括:1. 熟悉DSP实验平台的硬件结构和软件环境;2. 掌握数字信号的采样、量化和编码方法;3. 学习常见的数字滤波器设计和实现方法;4. 理解信号频谱分析和频域滤波的原理和应用;5. 实现音频信号的处理和效果增强。
三、实验内容北邮DSP实验主要包括以下内容:1. DSP实验平台的介绍:包括硬件结构和软件环境的说明,学生需要了解DSP实验平台的基本构成和使用方法。
2. 数字信号的采样与重构:学生需要通过实际操作,了解采样定理的原理和应用,以及数字信号的重构方法。
3. 数字信号的量化与编码:学生需要学习数字信号的量化误差和编码方法,并通过实验验证量化误差的影响。
4. FIR数字滤波器设计与实现:学生需要学习FIR滤波器的设计原理和方法,并通过实验实现低通、高通和带通滤波器。
5. IIR数字滤波器设计与实现:学生需要学习IIR滤波器的设计原理和方法,并通过实验实现巴特沃斯和切比雪夫滤波器。
6. 音频信号的处理与效果增强:学生需要学习音频信号的基本特性和处理方法,包括均衡器、混响器和压缩器等效果器的实现。
四、实验过程北邮DSP实验的具体过程如下:1. 实验准备:学生需要提前熟悉实验平台的硬件结构和软件环境,并准备好实验所需的音频信号和滤波器设计参数。
2. 实验操作:学生按照实验指导书的步骤进行实验操作,包括采样与重构、量化与编码、滤波器设计与实现等。
北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)

北邮信息工程信号与信息处理综合实验DSP实验二报告(FFT实现)信息与通信工程学院信号与信息处理综合实验报告(DSP部分)班级:姓名:学号:序号:日期:信号与信息处理综合实验报告实验二 FFT实现一、实验目的进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FFT的过程。
二、程序功能1、基本功能本程序的基本要求是:将FFT结果写入SDRAM后,并读取出来。
2、拓展功能(1)其他点数的FFT;(2)FFT后再进行IFFT,验证是否与原数据一致。
三、程序基本信息(一)、程序模块描述:1、FFT程序(实现基本功能):(1)FFT部分:1?主函数(main):初始化输入序列、旋转因子、FFT点数,负责其它功能函数的调用,并完成一些基本操作。
2?void DSP_radix2(int n, short *restrict xy, const short *restrict w):完成FFT运算(基2频域抽选)。
参数说明:n是输入序列的长度,short xy是输入序列(复数),const short w为旋转因子。
3? void bitrev_index(short *index, int n):计算得到重新排序表,n 为序列长度。
4? void DSP_bitrev_cplx(int *x, short *index, int nx):根据bitrev_index计算的排序表,把FFT输出的复数序列x重新排序为自然顺序。
DSP_bitrev_cplx:(2)SDRAM配置与写入部分:主函数(main):负责其它功能的调用,执行SDRAM写入、读取和检测,并点亮对应的LED。
EMIFA_config(&MyEmifaConfig):实现对EMIFA总线的12个接口寄存器的配置。
具体配置信息在MyEmifaConfig结构体中。
第1页信号与信息处理综合实验报告 #pragmaDATA_SECTION(sdram_data,".off_ram");数据段定义,定义要写入的数据位置,需要在CMD文件中建立对应的section。
北邮 DSP 实验一

6.1
使用printf语句输出 。
6.2
首先初始化板子初始函数以及LED及DIP,然后设置while循环,在循环之中读取CPLD寄存器的八比特数值。若检测到数值为0XE0,即表示只有DIP0按下,则设置CPLD寄存器八比特数值为0XEF,即表示四盏灯全亮,延迟一段时间之后,设置CPLD寄存器八比特数值为0XE0,即表示四盏灯全灭,并延迟相同时间;否则设置CPLD寄存器八比特数值为0XE0,即表示四盏灯全灭。
3)跑马灯顺序亮灭
只按下DIP1并如上图所示设置断点,单步运行后查看寄存器的值,低八位的值为D1,与所赋的值相同,此时第一盏灯亮,如下图所示:
4)跑马灯加速亮灭
同时按下DIP1及DIP2并如上图所示设置断点,单步运行后查看寄存器的值,低八位的值为90,与所赋的值相同,此时四盏灯全灭,如下图所示:
九.
十.心得体会
总体来说第一次DSP实验比较简单,主要是学习DSP芯片的基本知识,熟悉DSK开发板以及Code Composer Studio v5集成开发环境,掌握利用CPLD的USER_REG寄存器配置LED和DIP开关的方法,了解程序优化的原理和基本操作。感觉编程能力方面要求不高,在原来的编程基础上需要掌握DSK6416相关函数、LED相关函数和4DIP开关相关函数的使用就可以。除了在熟悉软件和开发板上遇到了一些问题以外,实验的其他方面进行得非常顺利,在基本功能实现后我们很快就完成了其他扩展功能,比如实现了LED全亮全灭,跑马灯及变速等功能。另外根据实验课件教程,我们进行了多次的断点调试,使用软件更加熟练,为之后的实验做充足的准备。
DSK6416_waitusec(delay1);
}
else
{
DSK6416_rset(DSK6416_USER_REG,0XE0);
北邮dsp实验一报告

DSP实验报告
1.实验要求
●(1) 常用数字信号序列的产生:
●熟悉 Matlab 产生数字信号的基本命令,加深对数字信号概念的理解,并能够
用 Matlab 产生和绘制出一些常用离散信号序列。
请用Matlab画出下列序列的波形(-10<n<10):
●a) δ(n)
●b) 单位阶跃序列 2 u(n-5)
●c) 矩形序列 R(n)
●d)y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)
●(2)加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将
上述基本序列进行这些基本运算,得到多个序列构成的组合序列。
●(3)请用您的计算机声卡采用一段您自己的声音 x(n),长度为 45秒,单声道,
取样频率 44.1kHz,16bit/样值,然后与给定的一段背景音乐 y(n) 按下式叠加为一个声音信号 z(n):z(n) = 0.7x(n) + 0.3y(n)
●要求在同一个 Figure 中,画出采集声音 x(n)、背景音乐 y(n)和混音 z(n) 的时域波
形;
2.实验代码
实验图像见文件夹中的JPG图片。
dsp硬件实验报告.

北京邮电大学数字信号处理硬件实验实验名称:DSP硬件操作实验姓名:刘梦颉班级:2011211203学号:2011210960班内序号:11日期:2012年12月20日实验一常用指令实验」、实验目的了解DSP开发系统的组成和结构,熟悉DSF开发系统的连接,熟悉DSP的开发界面,熟悉C54X系列的寻址系统,熟悉常用C54X系列指令的用法。
:、实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱。
三、实验操作方法1、系统连接进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:1)上电复位在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。
2)运行CCS程序先实验箱上电,然后启动CCS此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。
四、实验步骤与内容1、实验使用资源实验通过实验箱上的XF指示灯观察程序运行结果2、实验过程启动CCS 2.0,并加载“ expOl.out”;加载完毕后,单击“ Run”运行程序; 五、实验结果可见XF灯以一定频率闪烁;单击“ Halt”暂停程序运行,则XF灯停止闪烁,如再单击“ Run”,则“ XF”灯又开始闪烁;关闭所有窗口,本实验完毕。
六、源程序代码及注释流程图:实验二资料存储实验一、实验目的掌握TMS320C54勺程序空间的分配;掌握TMS320C54勺数据空间的分配;熟悉操作TMS320C5数据空间的指令。
二、实验设备计算机,CCS3.3版软件,DSP仿真器,实验箱。
三、实验系统相关资源介绍本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。
对于其它类型的CPU请参考查阅相关的资料手册。
下面给出TMS32OVC5410 的内存分配表:对于存储空间而言,映像表相对固定。
北邮dsp_matlab实验三和四报告

数字信号处理Matlab实验实验三:IIR 数字滤波器的设计和实现(6学时)数字信号处理的另一个重要应用是数字滤波器。
数字滤波器是一个运算过程,将输入数列按既定的要求转换成输出数列。
在数字信号的处理时只需利用数字相加、乘以常数和延时等运算,就可以完全达到传输特性的要求。
数字滤波器分为无限冲激响应(IIR)和有限冲激响应(FIR)两大类。
本实验用IIR 数字滤波器产生双音多频DTMF 拨号信号的产生,演示IIR 数字滤波器在通信系统中的应用。
DTMF 信号是将拨号盘上的0~F 共16 个数字,用音频范围的8 个频率来表示的一种编码方式。
8 个频率分为高频群和低频群两组,分别作为列频和行频。
每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。
频率组合方式如下图所示。
根据ITU Q.23 建议,DTMF信号的技术指标是:传送/接收率为每秒10个号码,或每个号码100ms。
每个号码传送过程中,信号存在时间至少45ms,且不多于55ms,100ms的其余时间是静音。
在每个频率点上允许有不超过±1.5%的频率误差。
任何超过给定频率±3.5%的信号,均被认为是无效的,拒绝承认接收。
另外,在最坏的检测条件下,信噪比不得低于15dB。
本次实验内容:DTMF 信号的编码: 把您的联系电话号码DTMF 编码生成为一个.wav 文件。
其中关键是不同频率的正弦波的产生,要求采用滤波法生成所要求的DTMF信号。
通过本次实验,达到以下目的:(a)复习和巩固IIR 数字滤波器的基本概念;(b)掌握IIR 数字滤波器的设计方法;(c)掌握IIR 数字滤波器的实现结构;(d)能够由滤波器的实现结构分析滤波器的性能(字长效应);(e)了解通信系统电话DTMF 拨号的基本原理和IIR 滤波器实现方法。
实验代码:d=input('请键入电话号码:','s');sum=length(d);total_x=[];fs=8000;%取样频率sum_x=[];sum_x=[sum_x,zeros(1,800)];%800个0for a=1:sum %symbol=abs(d(a)); sum=11tm=[49,50,51,65; 52,53,54,66; 55,56,57,67; 42,48,35,68];%DTMF表中键的16个ASCII码值for p=1:4;for q=1:4;if tm(p,q)==abs(d(a)); break,end %得列号qendif tm(p,q)==abs(d(a)); break, end %得行号pendf1=[697,770,852,941];%行频率向量f2=[1209,1336,1477,1633];%列频率向量%为了发声,加长序列n=1:400;x=sin(2*pi*n*f1(p)/fs)+sin(2*pi*n*f2(q)/fs); %构成双频信号x=[x,zeros(1,400)];%400个点后面再添加400个0sum_x=sum_x+x;total_x=[total_x,x];%将所编码连接起来endwavwrite(total_x,'C:\Users\log\Documents\MATLAB\sound_3'); %将数据读入声音文件sound(total_x);%发出声音subplot(211);plot(total_x);title('DTMF信号时域波形');Xk=fft(x);subplot(212);k=(1:800)*sum*fs/800;plot(k,abs(Xk));xlabel('频率');title('DTMF信号频谱');disp('双频信号已生成并发出.')%接收端检测程序k=[18 20 22 24 31 34 38 42]; %要求的DFT样本序号%k=[18 19 20 21 22 23 24 25];N=205; % ?%N=200;disp('接收端检测到的号码为:')for a=1:sum %1:11m=800*(a-1); %m=0:800:8000X=goertzel(total_x(m+1:m+N),k+1); %用Goertzel算法计算11点DFT样本val=abs(X);%stem(k,val,'.'); grid; xlabel('k');ylabel('|X(k)|');%set(gcf,'color','w') %设置背景色白色%shg,disp('图形上显示11个近似基频的DFT幅度');pause(10);limit=80;for s=5:8if val(s)>limit,break,endendfor r=1:4if val(r)>limit, break,endendbuffer(a)=tm(r,s-4);enddisp(char(buffer))%显示接收到的字符(char型)运行截图:实验四:FIR 数字滤波器的设计和实现(4学时)本次实验的内容是另一类重要的数字滤波器——FIR 数字滤波器,要求如下:录制自己的一段声音,长度为45秒,取样频率32kHz,然后叠加一个高斯白噪声,使得信噪比为20dB。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理硬件实验实验报告题目:数字信号处理硬件实验学院:电子工程学院班级:姓名:学号:2013xxxxxx实验一常用指令实验一.实验目的了解DSP开发系统的组成和结构,熟悉DSP开发系统的连接,熟悉DSP的开发界面,熟悉C54X系列的寻址系统,熟悉常用C54X系列指令的用法。
二.实验设备计算机,CCS3.3版软件,DSP仿真器,EXPIII+实验箱。
三.实验步骤与内容1.系统连接进行DSP实验之前,先必须连接好仿真器、EXPIII+实验箱及计算机,连接方法如下所示:1)上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接正常后,先启动计算机,此时仿真器上的“绿色小灯”点亮,再打开EXPIII+实验箱220V电压置“ON”,EXPIII+实验箱上电,此时仿真盒上的“红色小灯”点亮,否则DSP 开发系统与计算机连接有问题。
(实验箱上电后状态:CPLD 单元的D1、D2灯亮,CPU板D1、D2、D4灯亮,以太网接口D41、D42灯亮、电源单元4个灯亮,K1~K8开关向上为亮,向下为灭)2)运行CCS3.3程序在计算机上,启动CCS3.3正常,此时仿真器上的“绿色小灯”应点亮,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。
注:如在此出现问题,可能是系统没有正常复位或连接错误,应重新检查系统硬件并复位;也可能是软件安装或设置有问题,应尝试调整软件系统设置,具体仿真器和仿真软件CCS3.3的应用方法参见第二章。
2.样例程序实验操作说明1)实验箱和54xCPU拨码开关设置◆实验箱CPLD单元的拨码开关SW2的4置OFF(54x的译码有效);2置ON,1置OFF对应5X的int1中断分配给A/D中断使用;3置OFF。
◆A/D单元开关:JP3的3、6置ON,其余置OFF。
◆总线宽度开关:SW1的2置ON(16位),1置OFF(8位)。
◆语音接口小板上开关:SW1的2置OFF,其余置ON;SW2全置ON。
◆语音单元开关:S6扬声器选择的1,2均置ON。
◆模拟信号源开关:S23全置OFF。
◆USB单元跳线J20,J21。
◆54xCPU 板:跳线J2的1、2短接(HPI8位模式);SW1的2、6置ON ,其余置OFF (HPI 使能;DSP 工作微处理器方式;CPU_CS=0);SW2全置ON (FLASH 工作在数据空间,LED 灯D5的工作状态处于灭状态)。
2)启动CCS3.3,进入CCS3.3软件开发环境: •打开工程文件*.PTJ:点Project →Open …→选CODE\normal\exp01_XF\EXP01.PJT →点•加载输出文件*.out:加载“exp01.out ”点File →Load Program …→选normal\exp01_XF\Debug\exp01.out →点•加载完毕,单击“Run ”运行程序,可见实验箱的“CPLD 单元”的指示灯D3以一定频率闪烁;•单击“Halt ”暂停程序运行,则实验箱的“CPLD 单元”的指示灯D3停止闪烁。
实验结果:实验箱的CPLD 单元的指示灯D3以一定频率闪烁;单击“Halt ”暂停运行,则指示灯D3停止闪烁,如再单击“Run ”则指示灯D3又开始闪烁;实验完毕,关闭所有窗口。
四.流程图及代码注释实验二数据存储实验一.实验目的掌握TMS320C54的程序空间的分配;掌握TMS320C54的数据空间的分配;熟悉操作TMS320C54数据空间的指令。
二.实验设备计算机、CCS3.3板软件、DSP仿真器、EXPIII+实验箱。
三.实验系统相关资源介绍本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。
对于其它类型的CPU请参考查阅相关的资料手册。
下面给出TMS32OVC5410的内存分配表:对于存储空间而言,映像表相对固定。
值得注意的是内部寄存器与存储空间的映像关系。
因此在编程应用时这些特定的空间不能作其它用途。
对于程序存储空间而言,其映像表和CPU的工作模式有关。
当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在为计算机模式。
具体的内存映像关系如上图所示。
四.实验步骤与内容1.实验箱开关设置同实验一设置。
2.连接好DSP开发系统,运行CCS软件;3.在CCS的Memory窗口中查找C54016各个区段的数据存储器地址,在可以改变的数据地址随意改变其中内容;4.在CCS中装在实验示范程序,单步执行程序,观察程序中写入和读出的数据存储地址的变化;5.联系其他寻址方式的使用。
6.样例程序实验操作说明◆启动CCS3.3,并加载“normal\exp02_mem\Debug\exp02.out”;◆源程序查看:用下拉菜单中Project/Open,打开“normal\exp02_mem\EXP02.PJT”,点EXP02.PJT(Debug)点“Source”,可查看源程序exp02.asm。
◆用下拉菜单中“View”中的“Memory”查看内存单元。
◆输入要查看的内存单元地址,在Memory框,选Data,选Hex 16bit-CStyle,在Enter An Address处输入地址0x1000,点也可以“单步”运行程序,单击“Halt”暂停程序运行,查看0x1000~0x100F单元内数值的变化。
◆用“View”下拉菜单中的Registers下的查看“CPU Registers”单元,单步执行可看到CPU中每个寄存器的变化。
实验完毕,关闭窗口。
五.本实验说明本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。
在CSS中可观察到DATA存储器空间地址0X1000~0X100F值的变化。
六.流程图七.源程序及注释实验三 I/O实验一.实验目的了解I/O口的扩展;掌握I/O口的操作方法;熟悉PORTR,PORTW指令的用途;了解数字量与模拟量的区别和联系。
二.实验设备计算机、CCS3.3版软件,DSP仿真器,EXPIII+实验箱。
三.实验步骤与内容1.实验箱开关设置同实验一。
2.运行CSS软件,装载范例程序,分别调整数字输入单元的开关K1~K8,观察LED1~LED8亮灭的变化,以及输入和输出状态是否一致。
3.样例程序实验操作说明◆打开“normal\exp03_IO\EXP03,PJT”,加载“normal\exp03_IO\Debug\exp03.out”;◆在开关输入输出单元中任意调整K1~K8开关,可以观察到对应LED1~LED8灯“亮”或“灭”;单击“Halt”暂停持续运行,开关将对灯失去控制。
4.本实验完毕,关闭所有实验。
四.实验说明实验中采用简单的一一映像关系来对I/O口进行验证,目的是使实验者能够对I/O 有一目了然的认识。
在本实验系统中,提供的IO空间分配如下:CPU1的I/O空间:0x8000,按键input(X)8;CPU1的I/O空间:0x8001,灯output(X)8。
实验现象:调整K0~K7的开关,观察LP1~LP7 LED不同条件下灯的亮灭变化。
五.流程图六.源程序及注释实验四定时器实验一.实验目的熟悉C54的定时器;掌握C54定时器的控制方法;学会使用定时器中断方式控制程序流程。
二.实验设备计算机、CCS3.3版软件、DSP硬件仿真器、EXPIII+实验箱。
三.实验步骤和内容1.实验箱开关设置同实验一;2.运行CSS软件,调入样例程序,装载并运行;3.定时器试验通过数字量输入输出单元的LED1~LED8来显示;4.样例程序实验操作说明◆启动CCS3.3并加载“normal\exp04_timer\EXP04\Debug\exp04.out”,点“打开”,单击“Run”运行程序,可观察到LED灯以一定间隔时间不停闪亮变化;◆单击“Halt”,暂停程序运行,LED灯停止闪烁;单击“Run”,运行程序,LED灯又开始闪烁;◆源程序查看:用下拉菜单中Project/Open打开“normal\exp04_timer\EXP04\EXP04.PJT”,在Projects\EXP04.PJT(Debug)\Source下,可查看各源程序exp04.c 和vector.asm。
◆本实验完毕,关闭所有窗口。
四.实验说明C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD 和定时减法寄存器TDDR。
在本系统中,如果设置时钟频率为20MHZ,令PRD=0x4e1f,这样得到每1/1000秒中断一次,通过累计1000次,就能定时1秒钟。
五.实验现象单击“Run”后8个LED灯的第1,3,5,7个发亮,另外几个不亮,1s 后第2,4,6,8个发亮,其他不亮,每隔一秒变化一次;单击“Halt”后LED均不亮。
六.实验流程图主程序:中断程序:七.源程序及注释实验五 INT2中断实验一.实验目的1.掌握中断技术,学会对外部中断的处理方法;2.掌握中断对程序流的控制,理解DSP对中断的相应时序。
二.实验设备计算机、CCS3.3版软件、DSP仿真器、EXPIII+实验箱。
三.实验步骤和内容1.实验箱开关设置同实验一设置。
2.用导线连接“CPLD单元”的“单脉冲输出”孔和“电机控制单元”的INT2孔。
3.低电平单脉冲触发DSP中断INT2;该中断由“单脉冲单元”按键S5产生。
按一次,产生一个中断。
4.运行CSS软件,调入样例程序,装载并运行;5.每按一次“单脉冲输出”按键LED1~LED8灯亮灭交替变化一次;6.本实验完毕,关闭所有窗口。
四.实验说明DSP的INT2中断为低电平沿触发。
五.实验现象单击“Run”运行程序后,灯1.3.5.7亮,按一下S5键,变为2.4.6.8亮,再按下S5,又变为1.3.5.7亮…每次在按下S5时LED发生变化,在S5弹起时不发生变化。
单击”Halt”后,按下S5键LED灯亮灭不变化。
六.实验流程图七.源程序及代码实验六 A/D转换实验一.实验目的熟悉A/D转换的基本原理,掌握AD7822BN的技术指标和常用方法,掌握并熟练使用DSP和AD7822BN的借口及其操作。
二.实验设备计算机、CSS3.3软件、DSP仿真器、EXPIII+实验箱、连接线三.实验步骤和内容1.实验箱开关设置同实验一设置;2.在“模拟信号源”的S23开关全部置OFF;用连接线连接“模拟信号源”的“信号1孔”与“A/D单元”的“ADINI”孔。