DSP实验指导书输入输出
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c)点击File,选择Load Program,选中所要下载的*.out文件,点击“OK”则系统将可执行文件下载到实验板上的片外程序区中。之后就可对程序进行调试仿真。
7).程序单步执行
按F8,就可观察到程序单步运行的状态,并可观察D2的发光情况。
8).程序全速运行
按F5,就可观察到程序在全速运行状态下,D2的发光情况。并用示波器观察I/O管脚的波形。如果D2的闪烁不明显,可修改延时子程序。
GEL_MapAdd(0x1000,1,0xF000,1,1);/* External SRAM */
}
menuitem "F2407 DEBUGGER";
hotmenu flash_disable()
{
*(int *)SCSR2 = MP;
}
hotmenu flash_enable()
{
*(int *)SCSR2 = MC;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
asm(" clrcxf");
*PADATDIR=*PADATDIR&0x0FF00;// IOPA端口设置为输出方式
*PBDATDIR=*PBDATDIR&0x0FF00;
*PCDATDIR=*PCDATDIR&0x0FF00;
}
SECTIONS
{
.vectors:>VECS PAGE 0
.text:>FLASH PAGE 0
.cinit :>FLASH PAGE 0
.data :>FLASH PAGE 0
.stack :>B0 PAGE 1
.bss :>B1 PAGE 1
.reg240x :> SARAM_D
}
下面介绍一下CMD文件中常用的程序段名与含义
asm(" clrcCNF");// B0被配置为数据存储空间
asm(" setcINTM");// 禁止所有中断
*SCSR1=0x83FE;// CLKIN=15M,CLKOUT=2*CLKIN=30M
*WDCR=0x0E8;// 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 即WD保护位复位后的缺省值为1,故可以用
*PEDATDIR=*PEDATDIR&0x0FF00;
*PFDATDIR=*PFDATDIR&0x0FF00;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
}
}
e)点击Project,选择Add Files To Project。将该工程要用的.cmd,.asm文件添加到该工程中,至此project则已建好。(注:如源文件是*.C,则还要把D:\CCStudio_v3.1\C2400\cgtools\librts2xx.lib加入到Project中.
5).可执行文件*.out的生成,加载片片外程序区
*PCDATDIR=*PBDATDIR|0x0FFFF;
*PEDATDIR=*PBDATDIR|0x0FFFF;
*PFDATDIR=*PBDATDIR|0x0FFFF;
}
void delay( nDelay)
{
int i,j;
unsigned int k;
for ( i=0;i<nDelay;i++ )
*PBDATDIR=*PBDATDIR|0x0FFFF;
*PCDATDIR=*PCDATDIR|0x0FFFF;
*PEDATDIR=*PEDATDIR|0x0FFFF;
*PFDATDIR=*PFDATDIR|0x0FFFF;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
GEL_MapAdd(0x0060,1,0x0020,1,1);/* B2 */
GEL_MapAdd(0x0200,1,0x0100,1,1);/* B0 */
GEL_MapAdd(0x0300,1,0x0100,1,1);/* B1 */
GEL_MapAdd(0x0800,1,0x0800,1,1);/* SRAM */
2IO调试程序的实验步骤
1).将DSP仿真器与计算机连接好;
2).将DSP仿真器的JTAG插头与SEED-DSK2407单元的J1相连接;
3).启动计算机,当计算机启动后,接通电源。观察电源指示灯D1,是否亮;若有不亮的,请断开电源,检查电源。
4).projtct文件的建立
a)在D:\CCStudio_v3.1\MyProjects目录下建立以自己名字为首字母的文件夹目录,然后在自己的目录底下新建GPIO实验目录。(注决不能包含有任何中文字符)
b)双击桌面CCStudio 3.1弹出界面,
c)下拉菜单project(工程),选择new,在project里输入工程名称GPIO,在Location输入自己文件夹的位置,后完成。
d)将D:\CCStudio_v3.1\MyProjects\sin1目录底下的f2407.gel,f2407.h,GPIO.cmd三个文件复制到工程目录底下。再编写GPIO.asm文件保存到同一目录下.
// 直接返回中断服务程序
void interrupt nothing()
{
return;
}
for ( j=0;j<64;j++ )
k++;
}
// 主程序
main()
{
//int led;// 定义一个局部变量
//int i,k;// 定义其它一些临时变量
initial();// 系统初始化
while(1)
{
asm(" setcxf");
*PADATDIR=*PADATDIR|0x0FFFF;// IOPA端口设置为输出方式
#define MP0x0f
#define MC0x0b
/* The Startup() function is executed when the GEL file is loaded. */
StartUp()
{
F2407_Init();
}
F2407_Init()
{
GEL_Reset();
GEL_MapReset();
3.4.3.4 GEL文件简介
GEL文件的功能同cmd文件的功能基本相同,用于初始化DSP。但它的功能比cmd文件的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。以下面的例子介绍一下GEL文件的构成。例:
#define SCSR10x7018
#define SCSR20x7019
7. .sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间
(三)vectors.asm文件简介
vectors.asm是DSP的中断向量表文件。中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断读物的标志符在汇编语言模块外部使用,所以标志符用.ref或.global
1. .cinit存放C程序中的变量初值和常量;
2. .const存放C程序中的字符常量、浮点常量和用const声明的常量;
3. .text存放C程序的代码;
4. .bss为C程序中的全局和静态变量保留存储空间;
5. .far为C程序中用far声明的全局和静态变量保留空间;
6. .stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;
// 软件禁止看门狗
*IMR=0x0000;// 禁止所有中断
*IFR=0x0FFFF;// 清除全部中断标志,"写1清0"
*MCRA=*MCRA&0x000;// IOPA、IOPB端口配置为一般的I/O功能,TMS320LF240x的
// 端口均为8位,MCRA为16位因此控制了IOPA,和IOPB的设置
实验二数字I/O实验
一、实验目的
1.熟悉CCS的开发环境;
2.掌握DSP扩展数字I/O口的方法;
3.了解DSK-2407的硬件系统;
二、实验内容
1. DSP的初始化
2. TMS320LF2407数字I/O口使用
三、实验背景知识
(一)DSP系统中数字I/O的实现:
DSP系统中一般只有少量的数字I/O资源,而一些控制中经常需要大量的数字量的输入与输出。因而,在外部扩展I/O资源是非常有必要的。在扩展I/O资源时一般占用DSP的I/O空间。其实现方法一般有两种:其一为采用锁存器像74LS273、74lS373之类的集成电路;另一种是采用CPLD在其内部做锁存逻辑,我们采用的是后者。
GEL_MapOn();
GEL_MapAdd(0x0000,0,0x8000,1,1);/* Flash/External SRAM */
GEL_MapAdd(0x8000,0,0x8000,1,1);/* External SRAM */
GEL_MapAdd(0x0000,1,0x0060,1,1);/* MMR */
1)点击Project,选择Rebuild All(编译、汇编、连接所有文件)。如果在汇编连接过程中没有错误,则生成一个名字和工程名相同的可执行的.out文件。
6).பைடு நூலகம்执行文件*.out加载片片外程序区
a)下拉菜单File->Load GEL…加载f2407.gel文件。
b)选择GEL→F2407DEBUGGER→flash_disable命令。
*MCRB=*MCRB&0x0FE00;// IOPC、D端口配置为一般的I/O功能
*MCRC=*MCRC&0x8000;// IOPE、F端口配置为一般的I/O功能
*PADATDIR=*PBDATDIR|0x0FFFF;// IOPA端口设置为输出方式
*PBDATDIR=*PBDATDIR|0x0FFFF;
五、实验程序功能与结构说明
(一)数字IO调试程序
1在数字IO调试程序中,主要包含以下文件:
1).vectors.asm:包含了LF2407中断向量表文件;
2).CGPIO.c::这是实验的主程序,包含了系统的初始化,及LED与数字量输出。
3).2407CMD.cmd:声明了系统的存贮器配置与程序各段的连接关系。
}
四、实验要求
通过本实验,了解DSP对I/O口的操作,完成LED的控制。熟练使用CCS对程序进行调试。
1.画出‘LF2407的I/O引脚加总线隔离的电路
2.找出TMS320LF2407的与I/O口有关的寄存器;
3.做好预习,实验前编好程序。
4.通过查阅指令执行时间,计算延时的时间,再观察示波器的读数,比较两者。
PAGE 1:
B2: origin = 0060h, length = 020h
B0: origin = 200h, length = 100h
B1: origin = 300h, length = 100h
SARAM_D: origin = 0800h, length = 800h
REG_MEM:origin =7000h ,length=1000h
(二)CMD文件简介
cmd文件用于DSP代码的定位。由3部分组成:
1.输入/输出定义:
.obj文件:链接器要链接的目标文件。
.lib文件:链接器要链接的库文件。
.map文件:链接器生成的交叉索引文件。
.out文件:链接器生成的可执行代码;链接器选项。
2. MEMORY命令:描述系统实际的硬件资源。
3. SECTIONS命令:描述"段"如何定位。
下面例子则可说明其基本格式:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts2xx.lib
MEMORY
{
PAGE 0:
VECS origin = 0000h, length = 0040h
FLASH: origin = 100h, length =7F00h
六、思考题
加深对DSP扩展数字I/O口的理解,学会使用DSP的扩展总线。
七、参考程序
//该程序用于实验演示模板上的LED2的显示,CGPIO.c
#include "2407c.h"
// 初始化子程序
initial()
{
asm(" setcSXM");// 抑制符号位扩展
asm(" clrcOVM");// 累加器中结果正常溢出
7).程序单步执行
按F8,就可观察到程序单步运行的状态,并可观察D2的发光情况。
8).程序全速运行
按F5,就可观察到程序在全速运行状态下,D2的发光情况。并用示波器观察I/O管脚的波形。如果D2的闪烁不明显,可修改延时子程序。
GEL_MapAdd(0x1000,1,0xF000,1,1);/* External SRAM */
}
menuitem "F2407 DEBUGGER";
hotmenu flash_disable()
{
*(int *)SCSR2 = MP;
}
hotmenu flash_enable()
{
*(int *)SCSR2 = MC;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
asm(" clrcxf");
*PADATDIR=*PADATDIR&0x0FF00;// IOPA端口设置为输出方式
*PBDATDIR=*PBDATDIR&0x0FF00;
*PCDATDIR=*PCDATDIR&0x0FF00;
}
SECTIONS
{
.vectors:>VECS PAGE 0
.text:>FLASH PAGE 0
.cinit :>FLASH PAGE 0
.data :>FLASH PAGE 0
.stack :>B0 PAGE 1
.bss :>B1 PAGE 1
.reg240x :> SARAM_D
}
下面介绍一下CMD文件中常用的程序段名与含义
asm(" clrcCNF");// B0被配置为数据存储空间
asm(" setcINTM");// 禁止所有中断
*SCSR1=0x83FE;// CLKIN=15M,CLKOUT=2*CLKIN=30M
*WDCR=0x0E8;// 不使能看门狗,因为SCSR2中的WDOVERRIDE
// 即WD保护位复位后的缺省值为1,故可以用
*PEDATDIR=*PEDATDIR&0x0FF00;
*PFDATDIR=*PFDATDIR&0x0FF00;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
}
}
e)点击Project,选择Add Files To Project。将该工程要用的.cmd,.asm文件添加到该工程中,至此project则已建好。(注:如源文件是*.C,则还要把D:\CCStudio_v3.1\C2400\cgtools\librts2xx.lib加入到Project中.
5).可执行文件*.out的生成,加载片片外程序区
*PCDATDIR=*PBDATDIR|0x0FFFF;
*PEDATDIR=*PBDATDIR|0x0FFFF;
*PFDATDIR=*PBDATDIR|0x0FFFF;
}
void delay( nDelay)
{
int i,j;
unsigned int k;
for ( i=0;i<nDelay;i++ )
*PBDATDIR=*PBDATDIR|0x0FFFF;
*PCDATDIR=*PCDATDIR|0x0FFFF;
*PEDATDIR=*PEDATDIR|0x0FFFF;
*PFDATDIR=*PFDATDIR|0x0FFFF;
delay(1000);/* 延时子程序 */
delay(1000);/* 延时子程序 */
GEL_MapAdd(0x0060,1,0x0020,1,1);/* B2 */
GEL_MapAdd(0x0200,1,0x0100,1,1);/* B0 */
GEL_MapAdd(0x0300,1,0x0100,1,1);/* B1 */
GEL_MapAdd(0x0800,1,0x0800,1,1);/* SRAM */
2IO调试程序的实验步骤
1).将DSP仿真器与计算机连接好;
2).将DSP仿真器的JTAG插头与SEED-DSK2407单元的J1相连接;
3).启动计算机,当计算机启动后,接通电源。观察电源指示灯D1,是否亮;若有不亮的,请断开电源,检查电源。
4).projtct文件的建立
a)在D:\CCStudio_v3.1\MyProjects目录下建立以自己名字为首字母的文件夹目录,然后在自己的目录底下新建GPIO实验目录。(注决不能包含有任何中文字符)
b)双击桌面CCStudio 3.1弹出界面,
c)下拉菜单project(工程),选择new,在project里输入工程名称GPIO,在Location输入自己文件夹的位置,后完成。
d)将D:\CCStudio_v3.1\MyProjects\sin1目录底下的f2407.gel,f2407.h,GPIO.cmd三个文件复制到工程目录底下。再编写GPIO.asm文件保存到同一目录下.
// 直接返回中断服务程序
void interrupt nothing()
{
return;
}
for ( j=0;j<64;j++ )
k++;
}
// 主程序
main()
{
//int led;// 定义一个局部变量
//int i,k;// 定义其它一些临时变量
initial();// 系统初始化
while(1)
{
asm(" setcxf");
*PADATDIR=*PADATDIR|0x0FFFF;// IOPA端口设置为输出方式
#define MP0x0f
#define MC0x0b
/* The Startup() function is executed when the GEL file is loaded. */
StartUp()
{
F2407_Init();
}
F2407_Init()
{
GEL_Reset();
GEL_MapReset();
3.4.3.4 GEL文件简介
GEL文件的功能同cmd文件的功能基本相同,用于初始化DSP。但它的功能比cmd文件的功能有所增强,GEL在CCS下有一个菜单,可以根据DSP的对象不同,设置不同的初始化程序。以下面的例子介绍一下GEL文件的构成。例:
#define SCSR10x7018
#define SCSR20x7019
7. .sysmem用于C程序中malloc、calloc和realloc函数动态分配存储空间
(三)vectors.asm文件简介
vectors.asm是DSP的中断向量表文件。中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般中断向量表文件是采用汇编语言编写;在文件中一般汇编指令.sect来生成一个表。这个表包含中断向量的地址和跳转指令。因为中断读物的标志符在汇编语言模块外部使用,所以标志符用.ref或.global
1. .cinit存放C程序中的变量初值和常量;
2. .const存放C程序中的字符常量、浮点常量和用const声明的常量;
3. .text存放C程序的代码;
4. .bss为C程序中的全局和静态变量保留存储空间;
5. .far为C程序中用far声明的全局和静态变量保留空间;
6. .stack为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;
// 软件禁止看门狗
*IMR=0x0000;// 禁止所有中断
*IFR=0x0FFFF;// 清除全部中断标志,"写1清0"
*MCRA=*MCRA&0x000;// IOPA、IOPB端口配置为一般的I/O功能,TMS320LF240x的
// 端口均为8位,MCRA为16位因此控制了IOPA,和IOPB的设置
实验二数字I/O实验
一、实验目的
1.熟悉CCS的开发环境;
2.掌握DSP扩展数字I/O口的方法;
3.了解DSK-2407的硬件系统;
二、实验内容
1. DSP的初始化
2. TMS320LF2407数字I/O口使用
三、实验背景知识
(一)DSP系统中数字I/O的实现:
DSP系统中一般只有少量的数字I/O资源,而一些控制中经常需要大量的数字量的输入与输出。因而,在外部扩展I/O资源是非常有必要的。在扩展I/O资源时一般占用DSP的I/O空间。其实现方法一般有两种:其一为采用锁存器像74LS273、74lS373之类的集成电路;另一种是采用CPLD在其内部做锁存逻辑,我们采用的是后者。
GEL_MapOn();
GEL_MapAdd(0x0000,0,0x8000,1,1);/* Flash/External SRAM */
GEL_MapAdd(0x8000,0,0x8000,1,1);/* External SRAM */
GEL_MapAdd(0x0000,1,0x0060,1,1);/* MMR */
1)点击Project,选择Rebuild All(编译、汇编、连接所有文件)。如果在汇编连接过程中没有错误,则生成一个名字和工程名相同的可执行的.out文件。
6).பைடு நூலகம்执行文件*.out加载片片外程序区
a)下拉菜单File->Load GEL…加载f2407.gel文件。
b)选择GEL→F2407DEBUGGER→flash_disable命令。
*MCRB=*MCRB&0x0FE00;// IOPC、D端口配置为一般的I/O功能
*MCRC=*MCRC&0x8000;// IOPE、F端口配置为一般的I/O功能
*PADATDIR=*PBDATDIR|0x0FFFF;// IOPA端口设置为输出方式
*PBDATDIR=*PBDATDIR|0x0FFFF;
五、实验程序功能与结构说明
(一)数字IO调试程序
1在数字IO调试程序中,主要包含以下文件:
1).vectors.asm:包含了LF2407中断向量表文件;
2).CGPIO.c::这是实验的主程序,包含了系统的初始化,及LED与数字量输出。
3).2407CMD.cmd:声明了系统的存贮器配置与程序各段的连接关系。
}
四、实验要求
通过本实验,了解DSP对I/O口的操作,完成LED的控制。熟练使用CCS对程序进行调试。
1.画出‘LF2407的I/O引脚加总线隔离的电路
2.找出TMS320LF2407的与I/O口有关的寄存器;
3.做好预习,实验前编好程序。
4.通过查阅指令执行时间,计算延时的时间,再观察示波器的读数,比较两者。
PAGE 1:
B2: origin = 0060h, length = 020h
B0: origin = 200h, length = 100h
B1: origin = 300h, length = 100h
SARAM_D: origin = 0800h, length = 800h
REG_MEM:origin =7000h ,length=1000h
(二)CMD文件简介
cmd文件用于DSP代码的定位。由3部分组成:
1.输入/输出定义:
.obj文件:链接器要链接的目标文件。
.lib文件:链接器要链接的库文件。
.map文件:链接器生成的交叉索引文件。
.out文件:链接器生成的可执行代码;链接器选项。
2. MEMORY命令:描述系统实际的硬件资源。
3. SECTIONS命令:描述"段"如何定位。
下面例子则可说明其基本格式:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts2xx.lib
MEMORY
{
PAGE 0:
VECS origin = 0000h, length = 0040h
FLASH: origin = 100h, length =7F00h
六、思考题
加深对DSP扩展数字I/O口的理解,学会使用DSP的扩展总线。
七、参考程序
//该程序用于实验演示模板上的LED2的显示,CGPIO.c
#include "2407c.h"
// 初始化子程序
initial()
{
asm(" setcSXM");// 抑制符号位扩展
asm(" clrcOVM");// 累加器中结果正常溢出