TITI C54xx DSP 十天速成讲义文档格式.docx

上传人:b****5 文档编号:21460434 上传时间:2023-01-30 格式:DOCX 页数:37 大小:39.08KB
下载 相关 举报
TITI C54xx DSP 十天速成讲义文档格式.docx_第1页
第1页 / 共37页
TITI C54xx DSP 十天速成讲义文档格式.docx_第2页
第2页 / 共37页
TITI C54xx DSP 十天速成讲义文档格式.docx_第3页
第3页 / 共37页
TITI C54xx DSP 十天速成讲义文档格式.docx_第4页
第4页 / 共37页
TITI C54xx DSP 十天速成讲义文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

TITI C54xx DSP 十天速成讲义文档格式.docx

《TITI C54xx DSP 十天速成讲义文档格式.docx》由会员分享,可在线阅读,更多相关《TITI C54xx DSP 十天速成讲义文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

TITI C54xx DSP 十天速成讲义文档格式.docx

数码管、LED显示,流水灯

第三天

中断的原理

中断向量表、中断向量指针

定时器中断程序设计、

外部中断程序设计

实验四:

中断实验

4.1定时器中断:

方波发生器

4.2外部中断:

频率计

键盘接口

4.3键盘接口

第四天

AD/DA

McBSP,AIC23语音芯片

实验五:

语音采集与回放

5.1实时采集、回放

5.2复读机:

采集存贮、回放

第五天

DMA原理与程序设计

实验六:

DMA实验

6.1用DMA传送内部存贮器数据

6.2用DMA接收McBSP数据

FIR的基本原理

FIR滤波器系数设计

介绍通常FIR如何编写程序

介绍利用DSP的特殊结构与指令如果提高运效率。

软件仿真IO输入的技巧

图形方式仿真算法的技巧

实验七数字信号处理实验

实验7.1FIR实验

第六天

IIR的基本原理

IIR滤波器系数设计

IIR滤波器程序设计

调试仿真技巧

实验7.2IIR实验

FFT的基本原理:

蝶形运算

DSP针对蝶形运算优化的寻址方式:

位倒序寻址

FFT程序设计

实验7.3FFT实验

第七天

计算三角函授的常用方法:

查表法、泰勒级数展开法

泰勒级数展开法程序设计

实验7.4DDS:

查表法输出正弦波

实验7.5泰勒级数展开法计算三角函数

程序加载Bootloader的原理

多种加载方式

加载的流程

BootTable的结构

创建BootROM的过程

相关编译选项设置

HEX500实用程序及配置文件

创建Boottable

第八天

Flash烧写原理,Boot表烧写方法

Flash烧写实验

C语言程序设计初步

用C语言改写前面的部分程序

第九天

C5000系列其它DSP与C5402的异同

TI其它系列DSP简介:

C2000、C6000

第十天

综合实验的设计思想

实验7.2IIR

.mmregs

.globalcodestart

K_DATA_SIZE.set256;

输入数据个数

K_BUFFER_SIZE.set8;

缓冲大小,需是2的整数次幂,并大于a、b的个数

K_STACK_SIZE.set256;

堆栈大小

K_A.set3;

a向量个数

K_B.set4;

b向量的个数

K_CIR.set4;

>

=a、b的长度,也可以设为K_BUFFER_SIZE-1

STACK.usect"

stack"

K_STACK_SIZE

SYSTEM_STACK.setK_STACK_SIZE+STACK

.data

DATA_DP:

.alignK_BUFFER_SIZE

bufferdatax:

.spaceK_BUFFER_SIZE*16;

sizeinbits

bufferdatay:

sizeinbits

inputdata:

.word0

filterdata:

.word0

.text

.asgAR2,ORIGIN

.asgAR3,INPUT

.asgAR4,FILTER

.asgAR5,OUTPUT

codestart:

SSBXFRCT

SSBXINTM

LD#DATA_DP,DP

STM#SYSTEM_STACK,SP

CALLfilter_start

NOP

LOOP:

BLOOP

.defb0,b1,b2,b3,a1,a2,a3;

.deffilter_start

b0.set1456H;

b1=0.1589*2^15

b1.set3D07H;

b2=0.4768

b2.set3D07H;

b3=0.4768

b3.set1456H;

b4=0.1589

a1.set-103AH;

a1=-0.1268

a2.set430FH;

a2=0.5239

a3.set-1016H;

a3=-0.1257

;

=================================================================

滤波子程序:

filter_start

=================================================================

filter_start:

STM#K_CIR,BK;

设置环形buffer的大小

STM#1,AR0;

和步长

STM#inputdata,ORIGIN;

AR2

STM#bufferdatax,INPUT;

AR3

STM#bufferdatay,FILTER;

AR4

STM#filterdata,OUTPUT;

AR5

初始化

RPT#K_B-1-1;

ST#0,*INPUT+0%;

x(-1)、x(-2)、x(-3)设为0

RPT#K_A-1

ST0,*FILTER+%;

y(-1)、y(-2)、y(-3)设为0

STM#bufferdatay,FILTER

STM#K_DATA_SIZE-1,BRC;

块循环次数,头三个值已经直接通过了

RPTBfilter_end-1;

块循环结束位置

可以把块循环改成中断调用,有新数据就中断一次。

nop;

数据从件导入点,加nop保证数据在使用前导入

nop

MVDD*ORIGIN,*INPUT;

新数据

MAR*+INPUT(-K_B+1)%

MPY*INPUT+0%,#b3,B;

B=x(n-3)*b3,i=i+1

LDB,A

MPY*INPUT+0%,#b2,B;

B=x(n-2)*b2,i=i+1

ADDB,A

MPY*INPUT+0%,#b1,B;

B=x(n-1)*b1,i=i+1

MPY*INPUT+0%,#b0,B;

B=x(n)*b0,i=i+1

MPY*FILTER+0%,#a3,B;

B=y(n-3)*a3,j=j+1j=n-3为y的指针

MPY*FILTER+0%,#a2,B;

B=y(n-2)*a2,j=j+1

MPY*FILTER+0%,#a1,B;

B=y(n-1)*a1,j=j+1

ADDB,A

STHA,*FILTER;

传送y(n)至y区,;

16位小数相乘得到的是32位小数

STHA,*OUTPUT;

传送y(n)至结果区;

取前16位就行了

MAR*+FILTER(-K_A+1)%

数据文件导出点,加nop保证数据在导出前已更新

filter_end:

NOP;

循环结束

RET

.end

十天速成-[实验八 

程序加载]2005-12-413:

57:

实验八程序加载

C5000DSP没有内部提供掉电保存程序的ROM/EPROM/Flash,上电时需要从外部加载应用程序。

C5000DSP提供了多种程序加载方式,满足不同应用的需要:

串行加载、并行加载、HPI加载等,实际应用最多的是并行加载,本实验主要介绍8位并行存贮器加载。

加载过程:

DSP上电时,如果MP/MC引脚为低电平,则跳转到内部ROM的FF80中断向量表的Reset中断,该处有一个跳转指令转到称为Bootloader的加载程序执行,该程序的功能是按照一定顺序查找可用的加载方式,如果找到,则开始加载应用程序,加载完毕转向应用程序执行。

实现并行存贮器加载的关键是建立一个加载表(boottable),该表包括:

一个或多个程序代码段、部分需要初始化的寄存器值、程序入口等信息。

CCS附带有一个应用程序(C5000系列是hex500.exx)可以把.out程序转成.hex格式的加载表,然后可以烧录到非易失性存贮器中,如OTP/EPPOM/EEPROM/Flash中。

具体步骤:

1.修改项目的编译选顶,使其生成可以转化成加载表的.out文件格式

2.为hex500.exe建立一个配置文件

3.用hex500.exe把*.out转化成加载表*.hex

4.在.hex未尾加上加载表起始地址

5.烧录到非易失性存贮器中

6.安到目标板上进行加载实验

各步骤详述如下:

在Project/BuildOption…/Complier里面加一个选项:

-v548,或在Basic/Processverson一栏中填写:

548,然后点确定。

注意:

如果不加这个选项,用hex500程序转化出来的hex文件无法加载。

这个配置文件包含了hex500程序执行所需要的选顶,下面是一个样板配置文件hex.cmd:

sample.out 

 

/*待转化的程序文件*/

-maphex.map 

/*生成一个map文件便于查看转化结果*/

-ohex.hex 

/*输出文件名*/

-i 

/*输出文件为IntelHex文件格式*/

-memwidth8 

/*目标系统的存贮器为8位*/

-romwidth8 

/*存贮器芯片的位宽为8位*/

-boot 

/*生成加载表*/

-bootorg0000h 

/*加载表在存贮芯片中的起始位置*/

-e80h 

/*程序入口,即加载完毕后跳转执行程序位置*/

初学者容易弄错的是memwidth、romwidth和bootorg这三个选项。

不同存贮器配置下设置不同,并且要注意的是上文注释的(包括TI资料中的解释)是程序脱机烧写的设置,而在系统烧录(EEPROM、Flash、NVSRAM可以支持)与脱机烧写又会有所不同。

脱机烧写指的是将存贮芯片放置在编程器里烧写,优点是直接可以利用hex500转化出来的hex文件,缺点是普通编程器无法烧写贴片封装的芯片。

在系统烧写相对灵活,但对不同系统,不同芯片需要编写专用的烧录程序,并且需要将hex文件进一步进行格式转换成烧录程序可以识别的程序。

不同情况设置方法如下表:

存贮器配置方案

脱机烧写

在系统烧写

8位存贮器

-memwidth8

-romwidth8

16位存贮器

-memwidth16

-romwidth16

两片8位贮器并行组成16位存贮器

bootorg

芯片中的起始地址

系统中的起始地址

在dos窗口下执行:

hex500hex.cmd

如果hex500.exe与hex.cmd以及待转化的程序文件不在同一目录下,需加上路径或设置path环境变量。

4.在FFFFH加上加载表起始地址

当开始并行加载时,Bootloader程序会在外部程序空间的FFFFH(如果是8位系统,同时也会查FFFEH)寻找加载表的地址,如果熟悉hex文件格式可以直接在hex文件末尾加一条纪录,也可以烧录器软件中加。

应用实例:

本实验箱是用于程序加载的是8位EPROM或EEPROM,可以用脱机方式,如用EEPROM也可以用在系统方式。

Hex500程序的配置文件如前hex.cmd文件,只需要把第一行的sample.out换成实际的程序名称。

EPROM/EEPROM在程序空间的地址为8000H,并且由于是8位系统,则要在FFFEH和FFFFH的值分别设为80H、00H。

可以在生成的.hex文件倒数第二行加上:

:

027FFE00800001

也可以在烧录器软件中修改FFFEH-FFFFH处的值,然后就可以烧写了。

烧写好后,将芯片安置在IC座中,确认MP/MC跳线置为低电平,INT3、INT2的跳线置于悬空后,打开电源,就可以看到程序运行的状况。

.mmregs

.globalcodestart 

K_DATA_SIZE 

.set256 

;

K_BUFFER_SIZE 

.set8 

K_STACK_SIZE 

K_A 

.set3 

K_B 

.set4 

K_CIR 

STACK 

.usect"

SYSTEM_STACK 

.setK_STACK_SIZE+STACK

.data

.alignK_BUFFER_SIZE

sizeinbits 

.word0 

.text

.asgAR2,ORIGIN

.asgAR3,INPUT

.asgAR4,FILTER

.asgAR5,OUTPUT

SSBXFRCT

SSBXINTM

LD#DATA_DP,DP

STM#SYSTEM_STACK,SP

CALLfilter_start

NOP

BLOOP

.defb0,b1,b2,b3,a1,a2,a3;

.deffilter_start

b0 

.set1456H 

b1=0.1589 

*2^15

b1 

.set3D07H 

b2 

b3 

a1 

.set-103AH;

a2 

.set430FH 

a3 

.set-1016H;

================================================================= 

STM#K_CIR,BK 

STM#1,AR0 

STM#inputdata,ORIGIN 

STM#bufferdatax,INPUT 

STM#bufferdatay,FILTER;

STM#filterdata,OUTPUT 

RPT#K_B-1-1 

ST#0,*INPUT+0% 

RPT#K_A-1

ST 

0,*FILTER+% 

STM#bufferdatay,FILTER

STM#K_DATA_SIZE-1,BRC 

RPTBfilter_end-1 

nop 

nop

MVDD*ORIGIN,*INPUT 

MAR*+INPUT(-K_B+1)%

MPY*INPUT+0%,#b3,B 

LD 

B,A

MPY*INPUT+0%,#b2,B 

ADDB,A

MPY*INPUT+0%,#b1,B 

B=x(n-1)*b1,i=i+1 

MPY*INPUT+0%,#b0,B 

B=x(n)*b0,i=i+1 

MPY*FILTER+0%,#a3,B 

B=y(n-3)*a3,j=j+1j=n-3为y的指针 

MPY*FILTER+0%,#a2,B 

B=y(n-2)*a2,j=j+1 

MPY*FILTER+0%,#a1,B 

B=y(n-1)*a1,j=j+1 

ADDB,A 

STHA,*FILTER 

传送y(n)至y区, 

STHA,*OUTPUT 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1