DSP实验指导书2007(2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1)SRAM的初始化
void InitXintf(void)
{
XintfRegs.XINTCNF2.bit.XTIMCLK =0;
XintfRegs.XTIMING6.bit.X2TIMING = 0;
XintfRegs.XTIMING6.bit.XWRTRAIL = 0;
XintfRegs.XTIMING6.bit.XWRACTIVE = 1;
volatile unsigned int *LED1=(volatile unsigned int *)0x80001;//DEP2
volatile unsigned int *LED2=(volatile unsigned int *)0x80002;//DEP3
volatile unsigned int *LED3=(volatile unsigned int *)0x80003;//DEP4
6、库文件:rts2800_ml.lib
由TI提供的C28×系列DSP运行库文件,编译器选项为大存储器模式。
4、工程文件:CpuTimer.pjt
5、可执行文件:DEBUG目录下的CpuTimer.out
4.2实验要求
4.2.1.中断周期的设置
通过拨盘开关改变定时器时间常数(即周期定时器的值),通过LED1和LED2的闪烁频率观察定时器中断的频率(提示:同实验一,使LED跟随拨盘开关的状态变化);当频率高时无法通过肉眼观测到LED的状态变化,可选取定时器中断周期的范围为0.2~5秒左右以便于观测。
同时EPM7128的四个引脚与四个按键相连,地址为0x80004,四个按键S1、S2、S3、S4分别与该地址的数据位D3-D0对应,有键按下时该位为低电平。
数码管采用共阳极接法,当引脚为低电平时对应的段发光,得到的段码定义如下表:
数字
0
1
2
3
4
5
6
7
8
9
段码
0xБайду номын сангаас0
0xF9
0xA4
0xB0
0x99
0x92
如设GPIOF8-GPIOF11引脚为I/O口,且GPIOF8、GPIOF9为输入,GPIOF10、GPIOF11为输出。若使GPIOF10、GPIOF11的电平分别跟随GPIOF8、GPIOF9的输入电平变化,可编程如下:
1)通用I/O的初始化
EALLOW;//在写受保护寄存器时应先打开保护
GpioMuxRegs.GPFMUX.all=0x0000;//设置GPIOF口所有引脚为通用I/O
GpioMuxRegs.GPFDIR.all=0x0C00;//GPIOF10、GPIOF11为输出,其余为输入
GpioMuxRegs.GPFQUAL.all=0x0000;//不使用输入量化功能
EDIS;//写完之后再使能寄存器保护
2)主程序中
GpioDataRegs.GPFDAT.bit.GPIOF10=GpioDataRegs.GPFDAT.bit.GPIOF8;
DSP芯片的初始化例程参见课件第二讲中的函数InitSysCtrl(void),该函数完成了对DSP时钟、外设时钟和看门狗模块的初始化。
3.2通用I/O
F281×器件上有高达56个多功能复用引脚,通过GPxMUX寄存器可配置为外设信号或数字I/O引脚。如果配置为数字I/O引脚,可以通过方向寄存器(GPxDIR)控制引脚为输入或输出;通过量化寄存器(GPxQUAL)量化输入信号,以消除信号中的毛刺干扰。
DSP28_SysCtrl.c――初始化DSP时钟、看门狗等
DSP28_PieVect.c――中断矢量表的初始化
DSP28_PieCtrl.c――PIE中断控制的初始化
DSP28_Gpio.c――拨盘开关与LED的初始化
5、连接命令文件:SRAM.cmd
声明了系统的存储器配置与程序各段间的链接关系,与该文件对应的可执行程序装载在片内SRAM执行。
}
SRAM的测试方法是首先对所有单元写入设定数值,然后读出并进行校验。可以选取有代表性的数据进行测试,如0x0000、0xFFFF、0x5555、0xAAAA等。
四、实验程序结构和实验要求
4.1程序组成
在通用I/O口实验中主要包括了如下程序:
1、C源程序
GpioTest.c――实验主程序,完成SRAM和通用I/O测试。
2)SRAM读写与测试
unsigned int * SRAM = (unsigned int *) 0x100000;
for(i = 0; i < 0xFFFF; i++)
{
*(SRAM + i) = 0x5555;
if(*(SRAM + i) != 0x5555)
{while(1);}//如果SRAM测试未通过,则程序停止在该行
4、通过拨盘开关设定输入状态,通过发光二极管观察实验结果。
三、实验背景知识
3.1DSP的初始化
在用户程序中,需要首先对DSP芯片进行初始化。初始化过程主要执行以下操作:1)配置PLLCR寄存器;2)屏蔽看门狗模块;3)设定外设时钟寄存器,即HISPCP、LOSPCP、PCLKCR;4)如果使用了外部扩展接口,配置相应的时序设置寄存器;5)初始化中断控制寄存器和中断向量表;6)初始化用户程序中使用到的外设模块。
5、可执行文件:DEBUG目录下的GpioTest.out
4.2实现的功能
程序运行后,首先执行DSP系统初始化,配置通用I/O和存储器时序。通过两位拨盘开关改变输入引脚的高低电平,观察输出引脚分别控制的2个LED的电平变化(亮/灭)。
4.3 实验要求
正确进行对通用I/O的设置及存储器时序的配置,完成对SRAM的测试,对拨盘开关的两位输入信号分别进行非、与、或、与非、或非、异或等逻辑运算后,将运算结果的电平通过LED显示出来。
0x82
0xF8
0x80
0x90
四、实验程序结构和实验要求
4.1程序组成
在通用I/O口实验中主要包括了如下程序:
4、C源程序
CpuTimer.c――实验主程序。
DSP28_GlobalVariableDefs.c――DSP寄存器和全局变量定义,用于位域结构方式的编程。
DSP28_CpuTimers.c――定时器的初始化和配置。
DSP28_device.h――系统头文件
2、连接命令文件:SRAM.cmd
声明了系统的存储器配置与程序各段间的链接关系,与该文件对应的可执行程序装载在片内SRAM执行。
3、库文件:rts2800_ml.lib
由TI提供的C28×系列DSP运行库文件,编译器选项为大存储器模式。
4、工程文件:GpioTest.pjt
3、了解DSP程序的基本组成和程序各段的含义;
4、掌握DSP的初始化和通用I/O的应用;
5、掌握SRAM的时序配置和自检方法。
二、实验内容
1、DSP源文件与工程文件的建立;
2、DSP芯片的初始化,通用I/O的设置与使用,SRAM的读写与测试;
3、编译与连接选项的设置,程序调试(如设置断点、单步执行、全速执行);
DSP28_GlobalVariableDefs.c――DSP寄存器和全局变量定义,用于位域结构方式的编程。
DSP28_Gpio.c――初始化通用I/O的F组,即GPIOF。
DSP28_SysCtrl.c――初始化DSP时钟、看门狗等
DSP28_Xintf.c――初始化外部扩展接口Zone6(扩展有SRAM芯片)
CPU定时器的原理框图和定时中断如下图所示:
3.2人机接口
在DSP实验板上,使用了可编程逻辑芯片EPM7128的32个管脚,将其编程为4个8为锁存器,分别与四个八段数码管引脚相连,四个数码管的地址定义如下:
volatile unsigned int *LED0=(volatile unsigned int *)0x80000;//DEP1
4、DSP芯片包含了18K的片内SRAM,与系统扩展的外部SRAM相比,采用片内SRAM有何优点?
5、试简要介绍从创建工程文件开始到装载程序到DSP芯片中全速执行的主要步骤。
一、实验目的
1、掌握CPU定时器的配置方法;
2、掌握外设中断的初始化和中断处理过程;
3、了解人机接口电路及编程应用。
二、实验内容
I/O信号
通用I/O
对应外设信号
SW1
GPIOF8
MCLKXA
SW2
GPIOF9
MCLKRA
LED1
GPIOF11
MFSRA
LED2
GPIOF10
MFSXA
在实验中需要设置DSP上的GPIOF8、GPIOF9、GPIOF10、GPIOF11引脚为通用I/O口,并通过拨盘开关设定输入引脚GPIOF8、GPIOF9上的高/低电平,根据输入引脚状态编程(输入/输出间的关系自己定义)设置GPIOF10、GPIOF11口上的电平,使LED亮(低电平)或灭(高电平)。实验系统中使用的输入/输出信号定义见下表。
六、实验思考
1、对通用I/O的信号一般进行那些运算,它们适于作为哪些扩展外设的接口?
2、根据对片外SRAM的时序配置,一个读/写操作分别占用几个CPU指令周期?根据DSP的时钟频率,计算对SRAM进行读/写操作的指令执行速率。
3、对于只读的程序存储器(如EPROM、Flash存储器等芯片),如何进行自检?
第四章 DSP实验内容
根据教学计划,本课程共安排以下六个实验:
实验一DSP初始化与通用I/O实验
实验二定时器中断与人机接口实验
实验三SCI串行通信接口实验
实验四SPI接口和D/A转换实验
实验五A/D转换实验
实验六直流无刷电机控制实验
一、实验目的
1、了解DSP开发系统的组成;
2、熟悉集成开发环境CCS的使用,掌握工程的生成方法和程序调试方法;
提示:中断周期由DSP的时钟频率和CPU定时器0的周期寄存器值确定。
4.2.2.定时器扫描的人机接口
在定时器中断中对按键状态进行扫描,并刷新数码管显示值(提示:此时可将定时器中断周期修改为10ms左右)。要求对按键按下的次数进行递增计数(计数值范围0000-9999,不同的按键可赋予不同的权重,如计数值为(S1×1000+S2×100+S3×10+S4),并在数码管上显示出计数值。
GpioDataRegs.GPFDAT.bit.GPIOF11=GpioDataRegs.GPFDAT.bit.GPIOF9;
3.3SRAM的时序配置和自检
实验系统中通过外部扩展总线在Zone6扩展了一片外部SRAM芯片CY7C1021V33,容量为64K×16bit,地址范围为0x100000~0x10FFFF。SRAM芯片的原理图和真值表如下,实验中采用16位数据方式访问SRAM。
XintfRegs.XTIMING6.bit.XWRLEAD = 1;
XintfRegs.XTIMING6.bit.XRDTRAIL = 0;
XintfRegs.XTIMING6.bit.XRDACTIVE =2;
XintfRegs.XTIMING6.bit.XRDLEAD = 1;
}
初始化程序可参见文件DSP28_Xintf.c。
5)打开CCS,进入CCS的集成开发环境,熟悉工程文件的创建、编译链接与运行。
6)装入DSP目录下的工程文件GpioTest.pjt,进入调试环境。
7)编译、连接程序,装载在Debug目录下生成的可执行文件GpioTest.out。
8)修改程序(更改程序后,要重新编译、链接),进行调试(单步、断点)和全速运行,注意查看SRAM自检是否通过,并观察LED显示随拨盘开关状态的变化。
如果时间充足,将给出的实验程序改编成为不采用位域结构的形式。并比较二种编程方法的优缺点(选作)。
五、实验步骤
1)确认DSP仿真器与计算机的并口连接好。
2)将DSP仿真器的JTAG插头与DSP板的J2连接好。
3)启动计算机。当计算机启动后,继续下面的步骤。
4)将DSP板电源线(三芯插头)插到220V交流电源插座上,接通DSP板电源,观察DSP板上的3.3V(绿色)、1.8V(红色)电源指示灯是否亮;若有不亮的请断开电源,检查电源是否插好或报告指导教师。
1、CPU定时器的初始化;
2、外设中断的初始化和定时中断处理;
3、独立式按键的扫描与数码管静态显示;
4、采用定时器中断处理按键扫描与显示刷新。
三、实验背景知识
3.1 通用定时器
TMS320F2812片内有3个32位通用定时器。这些定时器有一个32位计数器,当计数器递减计数到0时,产生一个中断。其中TIMER0中断为PIE中断,TIMER1中断直接连到CPU的INT13,TIMER2中断直接连到CPU的INT14,实验中要求使用定时器0。
void InitXintf(void)
{
XintfRegs.XINTCNF2.bit.XTIMCLK =0;
XintfRegs.XTIMING6.bit.X2TIMING = 0;
XintfRegs.XTIMING6.bit.XWRTRAIL = 0;
XintfRegs.XTIMING6.bit.XWRACTIVE = 1;
volatile unsigned int *LED1=(volatile unsigned int *)0x80001;//DEP2
volatile unsigned int *LED2=(volatile unsigned int *)0x80002;//DEP3
volatile unsigned int *LED3=(volatile unsigned int *)0x80003;//DEP4
6、库文件:rts2800_ml.lib
由TI提供的C28×系列DSP运行库文件,编译器选项为大存储器模式。
4、工程文件:CpuTimer.pjt
5、可执行文件:DEBUG目录下的CpuTimer.out
4.2实验要求
4.2.1.中断周期的设置
通过拨盘开关改变定时器时间常数(即周期定时器的值),通过LED1和LED2的闪烁频率观察定时器中断的频率(提示:同实验一,使LED跟随拨盘开关的状态变化);当频率高时无法通过肉眼观测到LED的状态变化,可选取定时器中断周期的范围为0.2~5秒左右以便于观测。
同时EPM7128的四个引脚与四个按键相连,地址为0x80004,四个按键S1、S2、S3、S4分别与该地址的数据位D3-D0对应,有键按下时该位为低电平。
数码管采用共阳极接法,当引脚为低电平时对应的段发光,得到的段码定义如下表:
数字
0
1
2
3
4
5
6
7
8
9
段码
0xБайду номын сангаас0
0xF9
0xA4
0xB0
0x99
0x92
如设GPIOF8-GPIOF11引脚为I/O口,且GPIOF8、GPIOF9为输入,GPIOF10、GPIOF11为输出。若使GPIOF10、GPIOF11的电平分别跟随GPIOF8、GPIOF9的输入电平变化,可编程如下:
1)通用I/O的初始化
EALLOW;//在写受保护寄存器时应先打开保护
GpioMuxRegs.GPFMUX.all=0x0000;//设置GPIOF口所有引脚为通用I/O
GpioMuxRegs.GPFDIR.all=0x0C00;//GPIOF10、GPIOF11为输出,其余为输入
GpioMuxRegs.GPFQUAL.all=0x0000;//不使用输入量化功能
EDIS;//写完之后再使能寄存器保护
2)主程序中
GpioDataRegs.GPFDAT.bit.GPIOF10=GpioDataRegs.GPFDAT.bit.GPIOF8;
DSP芯片的初始化例程参见课件第二讲中的函数InitSysCtrl(void),该函数完成了对DSP时钟、外设时钟和看门狗模块的初始化。
3.2通用I/O
F281×器件上有高达56个多功能复用引脚,通过GPxMUX寄存器可配置为外设信号或数字I/O引脚。如果配置为数字I/O引脚,可以通过方向寄存器(GPxDIR)控制引脚为输入或输出;通过量化寄存器(GPxQUAL)量化输入信号,以消除信号中的毛刺干扰。
DSP28_SysCtrl.c――初始化DSP时钟、看门狗等
DSP28_PieVect.c――中断矢量表的初始化
DSP28_PieCtrl.c――PIE中断控制的初始化
DSP28_Gpio.c――拨盘开关与LED的初始化
5、连接命令文件:SRAM.cmd
声明了系统的存储器配置与程序各段间的链接关系,与该文件对应的可执行程序装载在片内SRAM执行。
}
SRAM的测试方法是首先对所有单元写入设定数值,然后读出并进行校验。可以选取有代表性的数据进行测试,如0x0000、0xFFFF、0x5555、0xAAAA等。
四、实验程序结构和实验要求
4.1程序组成
在通用I/O口实验中主要包括了如下程序:
1、C源程序
GpioTest.c――实验主程序,完成SRAM和通用I/O测试。
2)SRAM读写与测试
unsigned int * SRAM = (unsigned int *) 0x100000;
for(i = 0; i < 0xFFFF; i++)
{
*(SRAM + i) = 0x5555;
if(*(SRAM + i) != 0x5555)
{while(1);}//如果SRAM测试未通过,则程序停止在该行
4、通过拨盘开关设定输入状态,通过发光二极管观察实验结果。
三、实验背景知识
3.1DSP的初始化
在用户程序中,需要首先对DSP芯片进行初始化。初始化过程主要执行以下操作:1)配置PLLCR寄存器;2)屏蔽看门狗模块;3)设定外设时钟寄存器,即HISPCP、LOSPCP、PCLKCR;4)如果使用了外部扩展接口,配置相应的时序设置寄存器;5)初始化中断控制寄存器和中断向量表;6)初始化用户程序中使用到的外设模块。
5、可执行文件:DEBUG目录下的GpioTest.out
4.2实现的功能
程序运行后,首先执行DSP系统初始化,配置通用I/O和存储器时序。通过两位拨盘开关改变输入引脚的高低电平,观察输出引脚分别控制的2个LED的电平变化(亮/灭)。
4.3 实验要求
正确进行对通用I/O的设置及存储器时序的配置,完成对SRAM的测试,对拨盘开关的两位输入信号分别进行非、与、或、与非、或非、异或等逻辑运算后,将运算结果的电平通过LED显示出来。
0x82
0xF8
0x80
0x90
四、实验程序结构和实验要求
4.1程序组成
在通用I/O口实验中主要包括了如下程序:
4、C源程序
CpuTimer.c――实验主程序。
DSP28_GlobalVariableDefs.c――DSP寄存器和全局变量定义,用于位域结构方式的编程。
DSP28_CpuTimers.c――定时器的初始化和配置。
DSP28_device.h――系统头文件
2、连接命令文件:SRAM.cmd
声明了系统的存储器配置与程序各段间的链接关系,与该文件对应的可执行程序装载在片内SRAM执行。
3、库文件:rts2800_ml.lib
由TI提供的C28×系列DSP运行库文件,编译器选项为大存储器模式。
4、工程文件:GpioTest.pjt
3、了解DSP程序的基本组成和程序各段的含义;
4、掌握DSP的初始化和通用I/O的应用;
5、掌握SRAM的时序配置和自检方法。
二、实验内容
1、DSP源文件与工程文件的建立;
2、DSP芯片的初始化,通用I/O的设置与使用,SRAM的读写与测试;
3、编译与连接选项的设置,程序调试(如设置断点、单步执行、全速执行);
DSP28_GlobalVariableDefs.c――DSP寄存器和全局变量定义,用于位域结构方式的编程。
DSP28_Gpio.c――初始化通用I/O的F组,即GPIOF。
DSP28_SysCtrl.c――初始化DSP时钟、看门狗等
DSP28_Xintf.c――初始化外部扩展接口Zone6(扩展有SRAM芯片)
CPU定时器的原理框图和定时中断如下图所示:
3.2人机接口
在DSP实验板上,使用了可编程逻辑芯片EPM7128的32个管脚,将其编程为4个8为锁存器,分别与四个八段数码管引脚相连,四个数码管的地址定义如下:
volatile unsigned int *LED0=(volatile unsigned int *)0x80000;//DEP1
4、DSP芯片包含了18K的片内SRAM,与系统扩展的外部SRAM相比,采用片内SRAM有何优点?
5、试简要介绍从创建工程文件开始到装载程序到DSP芯片中全速执行的主要步骤。
一、实验目的
1、掌握CPU定时器的配置方法;
2、掌握外设中断的初始化和中断处理过程;
3、了解人机接口电路及编程应用。
二、实验内容
I/O信号
通用I/O
对应外设信号
SW1
GPIOF8
MCLKXA
SW2
GPIOF9
MCLKRA
LED1
GPIOF11
MFSRA
LED2
GPIOF10
MFSXA
在实验中需要设置DSP上的GPIOF8、GPIOF9、GPIOF10、GPIOF11引脚为通用I/O口,并通过拨盘开关设定输入引脚GPIOF8、GPIOF9上的高/低电平,根据输入引脚状态编程(输入/输出间的关系自己定义)设置GPIOF10、GPIOF11口上的电平,使LED亮(低电平)或灭(高电平)。实验系统中使用的输入/输出信号定义见下表。
六、实验思考
1、对通用I/O的信号一般进行那些运算,它们适于作为哪些扩展外设的接口?
2、根据对片外SRAM的时序配置,一个读/写操作分别占用几个CPU指令周期?根据DSP的时钟频率,计算对SRAM进行读/写操作的指令执行速率。
3、对于只读的程序存储器(如EPROM、Flash存储器等芯片),如何进行自检?
第四章 DSP实验内容
根据教学计划,本课程共安排以下六个实验:
实验一DSP初始化与通用I/O实验
实验二定时器中断与人机接口实验
实验三SCI串行通信接口实验
实验四SPI接口和D/A转换实验
实验五A/D转换实验
实验六直流无刷电机控制实验
一、实验目的
1、了解DSP开发系统的组成;
2、熟悉集成开发环境CCS的使用,掌握工程的生成方法和程序调试方法;
提示:中断周期由DSP的时钟频率和CPU定时器0的周期寄存器值确定。
4.2.2.定时器扫描的人机接口
在定时器中断中对按键状态进行扫描,并刷新数码管显示值(提示:此时可将定时器中断周期修改为10ms左右)。要求对按键按下的次数进行递增计数(计数值范围0000-9999,不同的按键可赋予不同的权重,如计数值为(S1×1000+S2×100+S3×10+S4),并在数码管上显示出计数值。
GpioDataRegs.GPFDAT.bit.GPIOF11=GpioDataRegs.GPFDAT.bit.GPIOF9;
3.3SRAM的时序配置和自检
实验系统中通过外部扩展总线在Zone6扩展了一片外部SRAM芯片CY7C1021V33,容量为64K×16bit,地址范围为0x100000~0x10FFFF。SRAM芯片的原理图和真值表如下,实验中采用16位数据方式访问SRAM。
XintfRegs.XTIMING6.bit.XWRLEAD = 1;
XintfRegs.XTIMING6.bit.XRDTRAIL = 0;
XintfRegs.XTIMING6.bit.XRDACTIVE =2;
XintfRegs.XTIMING6.bit.XRDLEAD = 1;
}
初始化程序可参见文件DSP28_Xintf.c。
5)打开CCS,进入CCS的集成开发环境,熟悉工程文件的创建、编译链接与运行。
6)装入DSP目录下的工程文件GpioTest.pjt,进入调试环境。
7)编译、连接程序,装载在Debug目录下生成的可执行文件GpioTest.out。
8)修改程序(更改程序后,要重新编译、链接),进行调试(单步、断点)和全速运行,注意查看SRAM自检是否通过,并观察LED显示随拨盘开关状态的变化。
如果时间充足,将给出的实验程序改编成为不采用位域结构的形式。并比较二种编程方法的优缺点(选作)。
五、实验步骤
1)确认DSP仿真器与计算机的并口连接好。
2)将DSP仿真器的JTAG插头与DSP板的J2连接好。
3)启动计算机。当计算机启动后,继续下面的步骤。
4)将DSP板电源线(三芯插头)插到220V交流电源插座上,接通DSP板电源,观察DSP板上的3.3V(绿色)、1.8V(红色)电源指示灯是否亮;若有不亮的请断开电源,检查电源是否插好或报告指导教师。
1、CPU定时器的初始化;
2、外设中断的初始化和定时中断处理;
3、独立式按键的扫描与数码管静态显示;
4、采用定时器中断处理按键扫描与显示刷新。
三、实验背景知识
3.1 通用定时器
TMS320F2812片内有3个32位通用定时器。这些定时器有一个32位计数器,当计数器递减计数到0时,产生一个中断。其中TIMER0中断为PIE中断,TIMER1中断直接连到CPU的INT13,TIMER2中断直接连到CPU的INT14,实验中要求使用定时器0。