首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
DSP技术
» [教程]TI C54xx DSP 十天学会-[实验一 新手上路]
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
[教程]TI C54xx DSP 十天学会-[实验一 新手上路]
发短消息
加为好友
reporter
当前离线
UID
114293
帖子
5
精华
0
积分
3
阅读权限
10
在线时间
158 小时
注册时间
2011-12-9
最后登录
2020-5-8
新手上路
UID
114293
1
#
打印
字体大小:
t
T
reporter
发表于 2013-9-4 11:04
|
只看该作者
[教程]TI C54xx DSP 十天学会-[实验一 新手上路]
新手上路
,
实验目的
,
示波器
,
初学者
,
周期性
十天学会TI C54xx DSP初学者编写的第一个程序通常是控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED。这个程序也常常用来测度一下DSP能否正常工作。实验1.1 最简单的程序:控制XF引脚周期性变化    实验目的:通过简单的程序了解DSP程序的结构,熟悉CCS开发环境。**************************************************************最简单的程序:TestXF1.asm*循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化*常用于检测DSP是否工作。*************************************************************        .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来显示电平的变化,程序如下:实验1.2 子程序调用实验目的:学习子程序的调用**************************************************************TestXF2.asm*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,*可以用试验板上的LED看到XF引脚电平的变化*************************************************************        .mmregs         ;预定义的寄存器        .def   CodeStart   ;定义程序入口标记                .text           ;程序区CodeStart:               ;程序入口        SSBX   XF       ;XF置1        CALL   Delay     ;调用延时程序        RSBX   XF       ;XF清0        CALL   Delay     ;调用延时程序        B     CodeStart   ;跳转到程序开头循环执行***************************************************************延时子程序:Delay*用两级减一计数器来延时。调整AR1和AR2的大小LED闪烁的频率不同**************************************************************Delay:             STM   #999,AR1   ;循环次数1000LOOP1:     STM   #4999, AR2 ;循环次数5000LOOP2:     BANZ   LOOP2,*AR2- ;如果AR2不等于0,AR2减1,再判断        BANZ   LOOP1,*AR1- ;如果AR1不等于0,AR1减1,跳转到LOOP1        RET        .end        ***************************************************************注意这种延时方法并不精确,需要精确定时必须用定时器。*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期*当DSP工作在50MHz(时钟周期20ns),AR1=999, AR2=4999时*延时约为400ms,则LED闪烁的周期为800ms,频率1.25Hz**************************************************************设计指导:1.源代码书写格式源代码的书写有一定的格式,初学者往往容易忽视。简单归纳如下:1.每一行代码分为三个区:标号区、指令区和注释区。标号区必须顶格写,主要是定义变量、常量、程序标签时的名称。指令区位于标号区之后,以空格或TAB格开。如果没有标号,也必须在指令前面加上空格或TAB,不能顶格。注释区在标号区、程序区之后,以分号开始。注释区前面可以没有标号区或程序区。另外还有专门的注释行,以*打头,必须顶格开始。2.一般区分大小写,除非加编译参数忽略大小写。3.标点符号有时不注意会打成中文全角字符导致错误。书写格式的要求在很多DSP书里都没有提,初学者往往只把书上的代码输入进去,编译时得到错误的提示,而不知所措。其中最容易犯的错误指令顶格写,不过一般经提示后不会犯第二次。有些格式CCS并没有做要求,但注意养成良好的代码书写风格,增加代码的可读性。以上两个例子的书写风格可作参考,但不是硬性规定:1.标号区占3个TAB的间隔,即12个字符2.指令中的指令码占两个TAB间隔,然后是操作数。3.每一行的尾注能对齐的尽量对齐4.标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,用分格线框起来。此外其它编程语言的编程风格也可以借用过来,比如标示符命名规则、程序说明的要求等。如果项目组有规定,则按规定执行。本书的代码尽量保持一定的风格,不过读者可以发现前面的代码注释较多,后面随着学习的深入,一般不会对每一条指令加注释,只注明程序段的功能。另外代码贴到word里后,格式有些错位,无法一一纠正。2.链接配置文件一个完整的DSP程序至少包含三个部分:程序代码、中断向量表、链接配置文件(*.cmd)。这里介绍一下链接配置文件文件,对本次试验影响不大的中断向量表将在后文介绍。连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条目,实现不同方面的选项,其中最常用的也是必须的有两条:1.存贮器的分配 2.标明程序入口。以本次实验为例,下面的简单的链接配置文件就够用了:/* TestXF.cmd */-e CodeStart     /*程序入口,必须在程序中定义相应的标号*/MEMORY {    page 0:       &nbsp
RAM: org=0100h len=0F00h   /*定义程序存贮区,起始0100H,长度0F00H*/    }SECTIONS{    .text:&gt
RAM page 0         /*将.text段映射到page0的param区*/    }由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配置文件。作为本手册通用的链接配置文件如下,可以满足本书大部分程序的需要。在未特别指明的情况下使用这个通用的链接配置文件:/* 5402.cmd */-e CodeStart       /*程序入口,必须在程序中定义相应的标号*/-m map.map         /*生成存储器映射报告文件 */MEMORY { &nbsp
AGE 0:    VECT: org=0080h   len=0080h   /*中断向量表*/   &nbsp
ARAM: org=100h   len=0F00h   /*代码区*/ &nbsp
AGE 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     /*数据段*/  }更多参考:1.关于代码书写格式:SPRU102: TMS320C54x Assembly Language Tools User's Guide,3.5 Source Statement Format2.关于链接配置文件:SPRU102: TMS320C54x Assembly Language Tools User's Guide,7.5 Linker Command Files,7.7 The MEMORY Directive,7.8 The SECTIONS Directive练习:1、试一下不按规定格式书写代码会产生什么样的编译错误。2、试一下将链接配置文件中的MEMORY,SECTIONS改成小写会出现什么样的编译错误。3.修改程序1.2中AR1,AR2的值,观察LED闪烁频率 *注:部份文章为网上收录供大家共同学习参考之用,并不代表本站意见。如存在版权问题请马上通知我们,我们将马上删除。
document.body.oncopy=function(){
event.returnValue=false;
var t=document.selection.createRange().text;
var s="参考地址:http://www.hfdzbbs.com/read-htm-tid-314.html";
window.clipboardData.setData('Text', t+'\r\n'+s);
}
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议