DSP28335汇编教程
DSP 28335 教程 7

PCLKCR0.ADCENCLK = 1
ADCTRL3 ADCCLKPS bits
0110b
FCLK (12.5 MHz)
ADCTRL1 CPS bit
0b
ADCCLK =
FCLK/(CPS+1)
ADCCLK (12.5 MHz) ADCTRL1
To ADC pipeline sampling window
Reset SEQ2
0 = no action 1 = immediate reset SEQ2 to “initial state”
FCLK = HSPCLK/(2*ADCCLKPS)
ACQ_PS bits
0111b
sampling window = (ACQ_PS + 1)*(1/ADCCLK)
Note: Maximum F2833x ADCCLK is 25 MHz, but INL (integral nonlinearity error) is greater above 12.5 MHz. See the device datasheet for more information.
Interrupt Enable (SEQ1)
0 = interrupt disable 1 = interrupt enable
Interrupt Mode (SEQ1)
0 = interrupt every EOS 1 = interrupt every other EOS
ADC Control Register 2
Learning Objectives
Understand the operation of the Analog-to-Digital converter (ADC) Use the ADC to perform data acquisition
DSP 28335 教程 12

Idle-Line Wake-Up Mode
Idle time separates blocks of frames Receiver wakes up when SCIRXD high for 10 or more bit periods Two transmit address methods Deliberate software delay of 10 or more bits Set TXWAKE bit to automatically leave exactly 11 idle bits
MSB transmitted first
SPIDAT - Processor #1
11001001XXXXXXXX
Received data of less than 16 bits are right justified
User software must mask-off unused MSB’s
Allows numerous processors to be hooked up to the bus, but transmission occurs between only two of them Idle-line or Address-bit modes Sequence of Operation
Majority Vote SCICLK (Internal) SCIRXD
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
1
2
Start Bit
Falling Edge Detected
TMS320F28335教程

功耗性能比而具有最长的电池 寿命。
• 最佳的代码密度 • 兼容C54x™ DSP软件
DSP技术应用
Broadband Infrastructure DSP
TI C64x™ DSP 核心: 世界上具有最高性能的 DSPs
• 工作频率将达到1.1GHz • 最好的DSP编译器, 便于
DMA Interrupt Management
C28xTM 32-bit DSC
32x32-bit Multiplier
32-bit Timers (3)
RealTime JTAG
RM W
Atomi c
ALU 32-bit
Floatin g-Point Unit
2 QEP 12-bit ADC
得益于F28335浮点运算单元,从 而简化
软件开发,缩短开发周期。降低开发成本。
DSP技术应用
采用高性能的静态CMOS技术 主频达150MHZ(6.67ns) 低功耗设计,1.9V内核电压,3.3V I/O电压 Flash编程电压为3.3V 支持JTAG边界扫描接口 高性能32位CPU 16*16位和32*32位的乘法累加操作 16*16位的双乘法累加器 哈佛总线结构
Flash RAM
▪ Configurable 16- or 32-bit EMIF 控制外设
Memory Bus
TMS320F28335
Boot ROM
12 PWM (6 HRPWM)
6 CAP
▪ PWM outputs interfaces for three
3-phase motors
DSP技术应用
TMS320F28335概述
DSP 28335 教程 13 BIOS

Using Software Interrupts - SWI
Make each algorithm an independent software interrupt
SWI scheduling is handled by DSP/BIOS
HWI function triggered by hardware SWI function triggered by software
Lab Objective: Use DSP/BIOS Configuration Tool to:
Handle system memory and interrupt vectors Create a .tcf file
Learning Objectives
Introduction to DSP/BIOS DSP/BIOS Configuration Tool Scheduling DSP/BIOS threads Periodic Functions Real-time Analysis Tools Flash Programming with DSP/BIOS
DSP/BIOS
Module 12 TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
To create a new memory area:
Right-click on MEM and select insert memory Enter your choice of a name for the memory Right-click on the memory, and select Properties
DSP 28335 教程 附录4 DSP的C语言PPT课件

Appendix D TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
unsigned int
16
short (same as int or smaller) 16
unsigned short
16
Usually 0 .. 255, but can hold 16 bits -32K .. 32K, 16 bits signed 0 .. 64K, 16 bits unsigned same as int same as unsigned int
addresses.
Setting Up the Stack
Linker command file:
SECTIONS
{
.stack :>
RAM align=2
...
}
Boot.asm sets up SP to point at .stack
The .stack section has to be linked into the low 64k of data memory. The SP is a 16-bit register and cannot access addresses beyond 64K.
long (same as int or larger) 32 -2M .. 2M, 32 bits signed
unsigned long
32 0 .. 4M, 32 bits unsigned
DSP 28335 教程 附录2 寻址

Immediate Addressing – “#”
one word instruction
OPCODEBiblioteka 8-bit OPERAND
two word instruction
OPCODE 16-bit OPERAND
Fixed value part of program memory instruction Supports short (8-bit) and long (16-bit) immediate constants Long immediate can include a shift Used to initialize registers, and operate with constants
Direct Addressing – Example
Z=X+Y
x .usect .sect MOVW MOV ADD MOV “samp”,3 “code” DP,#x AL,@x AL,@y @z, AL
0 0 0 1 F F 0000 0000 0000 0001 1111 1111
DP offset
Data Page Offset 00 0000 0000 0000 00 00 0000 00 0000 0000 0000 00 11 1111 00 0000 0000 0000 01 00 0000 00 0000 0000 0000 01 11 1111 00 0000 0000 0000 10 00 0000 00 0000 0000 0000 10 11 1111 11 1111 1111 1111 11 00 0000 11 1111 1111 1111 11 11 1111
DSP 2835 教程 附录3 DSP汇编语言

y
sum:
AR3 COUNT
Program Control ALU / Multiply Operations Data Move
Logical Operations
Special Instructions
ALU and Accumulator
16/32 data mem,
Product (32)
16/32 bit registers
MUX
8/16 Imm
ALU and Barrel Shifter
ST0, ST1
ACC AH (31-16) AL (15-0)
AH.MSB AH.LSB AL.MSB AL.LSB
Accumulator - Basic Math Instructions
Format
loc16,ACC <<shift loc16,ACC <<shift
MOV ADD SUB AND OR XOR AND NOT NEG MOV
Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax, loc16 Ax,loc16,#16b Ax Ax loc16,Ax
Function Short Branch Fast Short Branch Fast Branch Absolute Branch Dynamic Branch SB SBF BF LB LB BAR Instruction 8bit,cond 8bit,EQ|NEQ|TC|NTC 16bit,cond 16bit,cond 22bit *XAR7 16bit,ARn,ARn,EQ|NEQ Cycles T/F Size 7/4 4/4 7/4 4/4 4 4 1 1 2 2 2 1
DSP 28335 教程 附录4 DSP的C语言

SP 0x400 Caller’s local (reset) vars
Arguments passed on stack Return address Function return addr Temp results
64K 4M
Setting Up the Stack
Boot.asm sets up SP to point at .stack
C Programming
Appendix D TMS320C28x™ MCU Workshop
T TO
Technical Training Organization
Copyright © 2009 Texas Instruments. All rights reserved.
Learning Objectives
FUNCTION across blocks
}
{ . . .
FILE across functions
PROGRAM across files
}
FILE2.C { . . . }
Optimization Performance
–o0
LOCAL
–o1 –o2
FUNCTION
–o3
FILE
Performs control-flow-graph simplification Allocates variables to registers Performs loop rotation Eliminates unused code Simplifies expressions and statements Expands calls to functions declared inline Performs local copy/constant propagation Removes unused assignments Eliminates local common expressions Default (-o) Performs loop optimizations Eliminates global common sub-expressions Eliminates global unused assignments Removes all functions that are never called Simplifies functions with return values that are never used Inlines calls to small functions Identifies file-level variable characteristics
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP28335汇编教程当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。
根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。
汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。
在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。
6.1汇编语言指令集概述在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。
在进行汇编讲解之前先来了解一下开发的核心——CPU。
在TMS320C2000系列中,CPU 内核为:C20x/C24x/C240x:C2xLP:C27x/C28x:C27x、C28x这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。
可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。
C28x芯片具有3种操作模式:1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统,因此,一般应使C28x芯片工作于该种模式。
2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。
在该模式下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。
3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x代码生成工具编译生成的。
在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。
本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。
复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。
6.1.1 DSP中的操作数汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。
如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明在应用程序的开发过程当中少不了的就是算术运算还有比较运算,当然在汇编语言编程的时候也是一样的,在汇编语言当中进行算术运算的操作并不像C/C++那样直观、方便,需要掌握众多的助记符才行,接下来会通过表6-2来说明一下关于算术方面的助记符以及与其表6-2影响指令的判断条件的说明在汇编程序当中实现乘法操作时一件非常不简单的事,由于是属于纯寄存器操作,因此,开发人员需要准备保存乘法结果的地址,在表6-1当中讲解操作数符号的时候有一个关于乘表6-3 PM与结果保存方式的关系6.1.2汇编语法指令描述前一小节提到过,汇编指令一般都由操作符和操作数组成,操作符也被称为指令助记符,它是指令中的关键字,表示本条指令操作类型,不能省略。
操作数可以省略,也可以有很多,但各操作数之间要用“,”分开。
指令助记符与操作数之间要用空格分开。
ARn:n为数值0~7,ARn指定下次的辅助寄存器。
ind:选择一下7种符号之一:*,*+,*-,*0+,*0-,*BR0+,*BR0-(兼容模式使用)。
#:立即寻址方式中常用的前缀。
数值前面带“#”,表示该数值为一个立即数。
<<左移。
>>右移。
@:当使用C28x语法时,64位字段数据与通过“@”符号来表示,一帮组程序员理解当前正在使用哪种寻址模式。
@@:当使用C28x语法时,128位字段数据页通过“@@”符号来表示。
loc16:16位寻址方式指定地址单元的内容。
loc32:32位寻址方式指定地址单元的内容。
#16bitsigned:16位有符号立即数。
6.2寻址方式通过6.1节当中读者们应当对汇编语言编程有了一定的了解,仅仅了解了汇编语言的操作符还是不过的,接下来就从汇编语言最根本的开始学习——寻址方式寻址方式就是寻找操作数或者操作数地址的方式,在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、相联存储方式或堆栈存取方式。
几乎所有的计算机,在内存中都采用地址指定方式。
当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。
C28x系列DSP的指令集采用7种寻址方式:1.直接寻址方式:DP(数据页指针),在此方式中,16位的DP寄存器被当做一个固定的页指针,讲指令中提供6未或者7位的地址偏移量与DP寄存器中的值组合起来就构成完整的地址。
当访问具有固定地址的数据结构时,这种寻址方式特别有用,例如,外设寄存器和C/C++中的全局及静态变量。
2.堆栈寻址方式:SP(堆栈指针),在这种方式下,16位的SP指针被用来访问软件堆栈的内容。
C28x系列的堆栈是从低端地址想高端地址生长的,SP总是指向下一个空的存储单元。
当需要访问堆栈中的数据时,SP的值减去指令仲提供的6位偏移量作为被访问数据的地址和,而堆栈指针将在入栈后加1,出栈前减1.3.间接寻址方式:XAR0到XAR7(辅助寄存器指针),在该方式下,32位的XARn寄存器被当做一般的数据指针来使用个。
通过相应的指令可以实现操作后XARn加1、操作前/后减1,还可以配合3位偏移量或者其他16位寄存器实现变址寻址。
4.寄存器寻址方式:这种方式下,另一个寄存器可以是该次访问的资源或者目的操作数。
这样在C28x中既能实现寄存器到寄存器的操作。
5.数据/程序/IO空间寻址方式:在这种方式下,存储器中操作数的地址被包含在指令中。
6.程序空间间接寻址方式:某些指令可以通过指针来访问位于程序空间中的存储器操作数。
由于在C28xCPU中存储器是统一寻址的,所以单周期内可以读取两个操作数。
7.字节寻址方式:该方式能访问到股东地址单元的最低有效位和最高有效位。
提示:对于基于C28x的DSP芯片来说,以上的7种寻址方式仲出了IO空间寻址方式外其他的都支持。
C28x的大多数指令都是利用操作符中的8位字段来选择寻址方式和对寻址方式进行修改.在C28x的指令系统中,这个8位字段用于以下寻址方式:1.loc16:为16位数据访问选择直接/堆栈/间接/寄存器寻址方式。
[loc16]表示loc16这种寻址方式对应的16位数据。
2.loc32:为32位数据访问选择直接/堆栈/间接/寄存器寻址方式。
[loc32]表示loc32这种寻址方式对应的32位数据。
在直接寻址方式下,loc16/loc32指的是一个用标号表示的地址,这个地址由16位的DP寄存器和操作码内8位字段的6位或7位偏移量共同决定。
[loc16]/[loc32]表示这个地址对应的16/32位数据。
以上7种寻址方式都与“loc16/loc32”组合起来使用。
在间接寻址方式下,loc16/loc32表示放在辅助寄存器(XAR0~XAR7)中的一个地址,[loc16]/[loc32]表示这个地址对应的16/32位数据。
在堆栈寻址方式下,loc16/loc32表示堆栈指针指向的一个堆栈单元,[loc16]/[loc32]表示这个单元内的16/32位数据。
在寄存寻址方式下, loc16/loc32表示一个16位或32位寄存器(如ACC、P、XT、AH 等), [loc16]/[loc32]表示这些寄存器内的16/32位数据。
由于C28x提供了多种寻址方式,因此用寻址方式选择位(AMODE)来选择8位字段(loc16/loc32)的解码。
该位属于状态寄存器ST1。
寻址方式可以大致归类如下:(1)AMODE=0——该方式是复位后的默认方式,也是C28x的C/C++编译器使用的方式。
这种方式与C2xLP CPU的寻址方式不完全兼容。
数据页指针偏移量是6位(在C2xLP CPU 中是7位),并且不支持所有的间接寻址方式。
(2)AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式兼容。
数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
编译器总是假定AMODE=0,所以它只使用对AMODE=0有效的寻址模式。
而汇编器可以通过设置命令行选项实现默认AMODE=0或者AMODE=1。
v28:假定AMODE=0(C28x寻址方式)v28 – m20:假定AMODE=1(与C2xLP全兼容的寻址方式)在文件中使用内嵌伪指令:. c28_amode :告诉汇编器后面的代码段都假定AMODE=0(C28x寻址方式). lp_amode :告诉汇编器后面的代码段都假定AMODE=1(与C2xLP全兼容的寻址方式)6-4。
表6-4 loc16/loc32的寻址方式6.2.1直接寻址方式指令字中包含数据存储器的7位便宜地址与基地址构成16位数据存储器地址,基地址由数据页指针DP或堆栈指针SP提供,具体由ST1的CPL决定。
64K数据存储器包含512个数据页指针DP,DP的范围记为0~511.状态寄存器ST0内的第9位数据指针中的值来确定当前数据页。
具体的直接寻址方式如图6-1所示。
15~8位7位6~0位图6-1直接寻址方式表6-5直接寻址方式下loc16/loc32的语法说明假设需要访问数据空间地址0000105DH:(1)AMODE=0:使用直接寻址方式访问数据存储器时,必须首先对DP进行设置以确定数据页面,然后再书写进行某种操作的指令,该指令的操作数将确定数据页面内部的特定偏移单元。
其步骤如下:1. 设置数据页面将当前数据页面载入DP。
MOVW DP,#0041H ;初始化数据页面指针2. 设置偏移量给出6位偏移量作为指令的一个操作数。
ADD AL,@1Dh ; AL与当前数据页面内偏移1DH单元的内容相加,结果存入到AL中如图6-2所示直接寻址下AMODE为0的地址分配16bit6bit图6-2直接寻址下AMODE为0的地址分配(1)AMODE=1:1选择兼容选址模式SETC AMODE ;令AMODE=1.lp_amode ;通知编译器AMODE=12设置数据页面讲当前数据页面载入DPMOVW DP,#0040H ;初始化数据页面指针3设置偏移量给出7位偏移量作为指令的一个操作数。
ADD AL,@@5Dh ;AL与当前数据页面内偏移量5DH单元的内容相加,结果存入到AL中如图6-3所示直接寻址下AMODE为1的地址分配。
15bit7bit图6-3直接寻址下AMODE为1的地址分配6.2.2堆栈寻址方式在堆栈寻址方式下,16位的SP指针被用于访问软件堆栈的信息。