首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
DSP技术
» 学DSP的请进来看看!!!
1
2
3
4
5
下一页
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
学DSP的请进来看看!!!
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
1
#
打印
字体大小:
t
T
haining
发表于 2009-6-4 14:07
|
只看该作者
学DSP的请进来看看!!!
DSP
我在这里发几个DSP 的实验 ,来介绍一下学习DSP 的方法.
收藏
分享
评分
回复
引用
订阅
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
2
#
haining
发表于 2009-6-4 14:08
|
只看该作者
实验一 新手上路]
初学者编写的第一个程序通常是控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED。这个程序也常常用来测度一下DSP能否正常工作。
实验1.1 最简单的程序:控制XF引脚周期性变化
实验目的:通过简单的程序了解DSP程序的结构,熟悉CCS开发环境。
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
3
#
haining
发表于 2009-6-4 14:08
|
只看该作者
最简单的程序:TestXF1.asm
*循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化
*常用于检测DSP是否工作。
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
4
#
haining
发表于 2009-6-4 14:09
|
只看该作者
mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标记
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF置1
RPT #999 ;重复执行1000次空指令产生延时
NOP
RSBX XF ;XF清0
RPT #999 ;重复执行1000次空指令产生延时
NOP
B CodeStart ;跳转到程序开头循环执行
.end
NOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:50M/2000=25kHz
在没有示波器的情况下,就要将程序1.1稍作改进,增加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化,程序如下:
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
5
#
haining
发表于 2009-6-4 14:10
|
只看该作者
实验1.2 子程序调用
实验目的:学习子程序的调用
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
6
#
haining
发表于 2009-6-4 14:10
|
只看该作者
TestXF2.asm
*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,
*可以用试验板上的LED看到XF引脚电平的变化
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
7
#
haining
发表于 2009-6-4 14:10
|
只看该作者
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标记
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF置1
CALL Delay ;调用延时程序
RSBX XF ;XF清0
CALL Delay ;调用延时程序
B CodeStart ;跳转到程序开头循环执行
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
8
#
haining
发表于 2009-6-4 14:10
|
只看该作者
延时子程序:Delay
*用两级减一计数器来延时。调整AR1和AR2的大小LED闪烁的频率不同
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
9
#
haining
发表于 2009-6-4 14:11
|
只看该作者
Delay:
STM #999,AR1 ;循环次数1000
LOOP1: STM #4999, AR2 ;循环次数5000
LOOP2: BANZ LOOP2,*AR2- ;如果AR2不等于0,AR2减1,再判断
BANZ LOOP1,*AR1- ;如果AR1不等于0,AR1减1,跳转到LOOP1
RET
.end
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
10
#
haining
发表于 2009-6-4 14:11
|
只看该作者
注意这种延时方法并不精确,需要精确定时必须用定时器。
*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期
*当DSP工作在50MHz(时钟周期20ns),AR1=999, AR2=4999时
*延时约为400ms,则LED闪烁的周期为800ms,频率1.25Hz
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
11
#
haining
发表于 2009-6-4 14:13
|
只看该作者
设计指导:
1.源代码书写格式
源代码的书写有一定的格式,初学者往往容易忽视。简单归纳如下:
1.每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标签时的名称。指令区位于标号区之后,以空格或TAB格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。
2.一般区分大小写,除非加编译参数忽略大小写。
3.标点符号有时不注意会打成中文全角字符导致错误。
书写格式的要求在很多DSP书里都没有提,初学者往往只把书上的代码输入进去,编译时得到错误的提示,而不知所措。其中最容易犯的错误指令顶格写,不过一般经提示后不会犯第二次。
有些格式CCS并没有做要求,但注意养成良好的代码书写风格,增加代码的可读性。以上两个例子的书写风格可作参考,但不是硬性规定:
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
12
#
haining
发表于 2009-6-4 14:13
|
只看该作者
1.标号区占3个TAB的间隔,即12个字符
2.指令中的指令码占两个TAB间隔,然后是操作数。
3.每一行的尾注能对齐的尽量对齐
4.标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,用分格线框起来。
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
13
#
haining
发表于 2009-6-4 14:14
|
只看该作者
2.链接配置文件
一个完整的DSP程序至少包含三个部分:程序代码、中断向量表、链接配置文件(*.cmd)。这里介绍一下链接配置文件文件,对本次试验影响不大的中断向量表将在后文介绍。
连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其中最常用的也是必须的有两条:1.存贮器的分配
2.标明程序入口。以本次实验为例,下面的简单的链接配置文件就够用了
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
14
#
haining
发表于 2009-6-4 14:15
|
只看该作者
/* TestXF.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
MEMORY {
page 0:
PRAM: org=0100h len=0F00h /*定义程序存贮区,起始0100H,长度0F00H*/
}
SECTIONS{
.text:>
RAM page 0 /*将.text段映射到page0的param区*/
}
回复
引用
TOP
发短消息
加为好友
haining
当前离线
UID
779381
帖子
118
精华
0
积分
645
阅读权限
50
在线时间
0 小时
注册时间
2009-2-9
最后登录
2009-7-22
高级会员
UID
779381
性别
男
15
#
haining
发表于 2009-6-4 14:16
|
只看该作者
由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。作为本手册通用的链接配置文件如下,可以满足本书大部分程序的需要。在未特别指明的情况下使用这个通用的链接配置文件:
/* 5402.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
-m map.map /*生成存储器映射报告文件 */
MEMORY {
PAGE 0:
VECT: org=0080h len=0080h /*中断向量表*/
PARAM: org=100h len=0F00h /*代码区*/
PAGE 1:
DARAM: org=1000h len=1000h /*数据区*/
}
SECTIONS {
.text :> PARAM PAGE 0 /*代码段*/
.vectors :> VECT PAGE 0 /*中断向量表*/
STACK :> DARAM PAGE 1 /*堆栈*/
.bss :> DARAM PAGE 1 /*未命名段*/
.data :> DARAM PAGE 1 /*数据段*/
}
回复
引用
TOP
1
2
3
4
5
下一页
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议