资源预览内容
第1页 / 共309页
第2页 / 共309页
第3页 / 共309页
第4页 / 共309页
第5页 / 共309页
第6页 / 共309页
第7页 / 共309页
第8页 / 共309页
第9页 / 共309页
第10页 / 共309页
亲,该文档总共309页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
DSP原理与运动控制系统 第一章 DSP概述 n第一节 什么是DSP?n第二节 DSP芯片的特征 n第三节 DSP芯片的发展 n第四节 TI公司DSP芯片的简介 第一节第一节 什么是什么是DSP?n模拟信号(模拟信号(Analog Signals):):在时域中,时间和幅值连续变化的信号,例如:声音、温度、压力等等n数字信号(数字信号(Digital Signals):):对模拟信号按一定的时间间隔进行采样,并将采样值进行量化,也即时间和幅值均为离散的信号n数字信号处理(数字信号处理(Digital Signal Processing):):用数学方法对上述的数字信号进行处理,对信号进行变化或提取相应的信息n实时处理(实时处理(Real-Time):):数字信号处理与信号的输入和输出保持同步n非实时处理(非实时处理(Non Real-Time):):先对信号进行采样并存储,然后再对其进行处理数字信号处理数字信号处理(Digital Signal Processing):): 用数学方法处理数字化了的模拟信号n数字信号处理的特点: AiXi:乘加操作 高速实时:快速运算分析数字信号处理器(数字信号处理器(Digital Signal Processor):):用于实时完成上述数字信号处理的微处理器 DSP:特指数字信号处理器器模拟信号量化采样数字信号数字信号处理实时处理非实时处理数字信号处理器数字信号处理(Digital signal processing)第二节第二节 DSP芯片的特征 1 硬件结构特点2 软件特点硬件结构的特点n多总线:片内多条数据、地址和控制总线n流水线执行:多个控制和运算部件并行工作n硬件乘法器n特殊片上外设: 软件插入等待电路(便于与慢速设备接口) 数字锁相电路PLL(有利系统稳定)n丰富片上存储器类型:RAM、ROM、Flash等n丰富片上外部:定时器、异步串口、同步串口、DMA控制器、HPI接口、A/D和通用I/O口等nJTAG(Joint Test Action Group)标准测试接口(IEEE 1149标准接口):便于对DSP作片上的在线仿真软件的特点 n特殊指令: MAC(连乘加指令,单周期同时完成乘法和加法运算)n 特殊寻址方式: 位倒序寻址(实现FFT快速倒序) 循环寻址 第三节 DSP芯片的发展 n世界上第一个单片 DSP 芯片:1978年 AMI公司发布的 S2811(内部都没有单周期乘法器)。1980 年,日本 NEC 公司:P D7720是第一个具有乘法器的商用 DSP 芯片。n最成功的DSP 芯片:TI 公司在1982年成功推出其第一代 DSP 芯片 TMS32010系列。第二代DSP芯片TMS32020,第三代DSP芯片TMS320C30,第四代DSP芯片TMS320C40/C44,第五代 DSP 芯片TMS320C5X/C54X,第二代DSP芯片的改进型TMS320C2XX,集多片DSP芯片于一体的高性能DSP芯片TMS320C8X以及目前速度最快的第六代DSP芯片TMS320C62X/C67X等。 nTI将常用的DSP芯片归纳为三大系列,即:TMS320C2000系列(包括TMS320C2X/C2XX)、TMS320C5000系列(包括TMS320C5X/C54X/C55X)、TMS320C6000系列(TMS320C62X/C67X)。TI公司DSP市场份额占全世界份额近 50。n第一个采用CMOS工艺的浮点DSP: Hitachi 公司于1982年推出。1983 年 Fujitsu 公司推出的MB8764,其指令周期为 120ns,且具有双内部总线,从而使处理吞吐量发生了一个大的飞跃。而第一个高性能浮点DSP芯片应是 AT&T 公司于1984 年推出的DSP32。 nMotorola 公司1986年推出了定点处理器MC56001。1990年,推出了与IEEE 浮点格式兼容的浮点 DSP 芯片 MC96002。n美国模拟器件公司(Analog Devices,简称AD)在DSP芯片市场上也占有一定的份额,相继推出了一系列具有自己特点的DSP芯片,其定点DSP芯片有ADSP2101/2103/2105、ASDP2111/2115、ADSP2161/2162/2164以及ADSP2171/2181,浮点DSP芯片有ADSP21000/21020、ADSP21060/21062等。 第四节 TI公司DSP芯片的简介 C2000系列系列DSP子系列子系列n C2xx子系列:16位定点DSP、20MIPS 代表器件:TMS320F206PZn C24x子系列:16位定点DSP、20MIPS 代表器件:TMS320F240n LF240x子系列:16位定点DSP、40MIPS 代表器件:TMS320LF2407nF28x子系列:32位定点DSP、150MIPS 代表器件:TMS320F2812、TMS320F2810第二章TMS320X240X 结构n第一节 结构概述 n第二节 TMS320X240X 系统结构和配置寄存器 n第三节 TMS320LF2407 CPU控制器 第一节 结构概述n采用高性能静态CMOS技术,供电电压3.3V,40MIPS执行速度,具有较高的实时处理能力。n基于TMS320C2XX DSP的CPU内核,保证代码兼容性。n片内高达32K字的FLASH程序存储器,高达2.5K字的数据/程序RAM(544字双存取DARAM,2K字的单存取RAM:SARAM)n两个事件管理器模块EVA和EVB:包括2个16位Gtimer;8个16位PWM通道;3个捕获单元;片内光电编码器接口电路;事件管理器适合控制交流感应电机、无刷直流电机、开关磁阻电机、交流永磁同步电机、UPS电源等。 n可扩展的外部存储器(LF2407)总共192K;64K程序存储器,64K数据存储器,64K I/O寻址空间。n10位16通道高速A/D转换器,最小转换时间375ns,多事件类型触发动作,序列器灵活管理n看门狗定时模块(WDT)n控制器局域网络(CAN)2.0B模块n串行通讯接口(SCI)n16位串行外设接口模块(SPI)n基于锁相环的时钟发生器n高达40个可单独编程或复用的通用输入/输出引脚(GPIO)n5个外部中断(电机驱动保护、复位和外部中断)n电源管理包括3种低功耗模式第二节TMS320X240X 系统结构和配置寄存器 n2.1 系统结构n2.2 配置寄存器2.1 系统结构2.2 配置寄存器第三节TMS320X2407 CPU控制器 n3.1 总线结构n3.2 输入定标器n3.3 乘法器n3.4 中央处理器(CALU)n3.5 辅助寄存器算术单元(ARAU)n3.6 状态寄存器(ST)3.1总线结构nPAB:程序空间地址总线nPRDB:程序代码数据读取总线nDRAB:数据空间地址读总线nDWAB:数据空间地址写总线nDRDB:数据空间数据读取总线nDWEB:数据空间地址写入总线3.2输入定标器n输入(16位数据):1、DRDB:存储器数据2、PRDB:表格数据n输出(32位结果):CALUn操作:左移016位n控制:SXM位3.3乘法器n硬件乘法器:输入:TREG和数据(DRDB或PRDB)输出:32位PREGn乘积定标器:输入:PREG;输出:CALU;控制:ST1.PM(00:不移位;01:左移1位;10:左移4位;11:带符号位右移6位)3.4中央处理器3.4中央处理器1 中央算术逻辑单元2 累加器3 输出定标器1 中央算术逻辑单元n输入:一个总是来自于累加器;另一个来自于输入定标器或乘积定标器的输出。n输出:累加器(ACC)n操作:16位加/减;二进制逻辑运算;位测试、移位、桶形移位(和累加器配合)n控制:SXM2 累加器n执行单个的移位或循环操作n将CALU结果的高字或低字送至输出定标器n产生或受控状态位:进位位C 0:减借位;1:加进位溢出模式位OVM 0:溢出不控制;1:饱和限制溢出标志位OV 1:32位溢出标志;测试/控制位TC:根据被测试位的值,TC位0或13 输出定标器n输入:累加器的32位结果n输出:16位结果和数据总线相连n操作:左移07位,最高位丢掉,最低位添0,ACC的结果不受影响3.5 辅助寄存器单元n功能:提供灵活的数据空间间接寻址能力,辅助寄存器中的16位地址可以访问64K数据存储空间的任意单元。n特点:在CALU操作的同时执行8个辅助寄存器上的无符号16位算术运算。n操作1 辅助寄存器值加/减1或一个变址值2 辅助寄存器值加/减一个常数(ADRK/SBRK)3 比较AR0和当前AR的值,结果传送至ST1.TCn辅助功能:比较条件(CMPR)、暂存寄存器(LAR/SAR)、软件计数器n由ST0.ARP(3位)指定的当前操作的AR。3.6状态寄存器状态寄存器ST0nDP(08位):数据页指针nINTM(9):中断屏蔽位,0使能;1禁止。nOVM(11):溢出模式nOV(12):溢出状态保持位(复位或指令清除)nARP:辅助寄存器指针状态寄存器ST1nPM(01):乘积移位模式(SPM/LST)nXF(4):XF引脚状态(复位时为1)nC(9):进位位nSXM(10):符号扩展模式位(复位时位1)nTC(11):测试/控制标志位(BIT/BITT)nCNF:片内DARAM配置位决定B0数据块的归属nARB:辅助寄存器指针缓冲器,旧的ARP-ARB相关操作指令nLST LDP BIT BITT CLRCnSETC SPM MAR SST SAR第三章 TMS320X2407 DSP系统资源与管理 第一节 存储器与I/O空间第二节 系统中断第三节 程序控制第四节 时钟域和节电模式第一节 存储器与I/O空间n基本特点1 寻址空间192K(PM DM I/O)2 多总线并行操作3 片上存储器:544字DARAM(B0 B1 B2)2K字SARAM(PM DM)32K字FLASH(PM)4 FLASH编程:JTAG、SPI SCI(由240XA器件上的BOOT ROM控制)1.1 程序存储器n64K寻址空间,包括片上的的DARAM和FLASH EEPROM/ROMn程序空间构造控制CNF位:0:256字映射到片内DARAM 1:DARAM B0块映射到PMMP/MC引脚:0:微控制器模式,前32K空间在片内(00x7fff);后32K空间在片外; 1:微处理器模式, 整个64K空间均在片外PON位(构造寄存器):0:2K字SARAM不被PM使用 1: 2K字SARAM可以被PM使用1.2数据存储器n64K寻址空间,包括 3个片上数据块(B0 B1 B2)和外设寄存器映射;前32K在片上,后32K由外部寻址。n寻址方式:直接寻址和间接寻址,采用直接寻址时,只能在128字的数据块内操作,所以必须定义页指针(包含512个页,0511,当前页由ST0.DP确定) 采用间接寻址时,可以对64K空间内的任意单元进行访问。n注意不能访问数据存储空间上的非法地址空间(ILLEGAL SPACE),否则会产生非法地址操作错误1.3I/O空间n 64K寻址空间nROM型器件无I/O空间1.4控制引脚n信号名信号名 信号描述信号描述 A(0:15) 外部16位单向地址总线. D(0:15) 外部16位双向数据总线.PS DS IS 程序、数据、I/O空间片选信号 STRB 外部存储空间片选信号WE RD 写/读选通信号R/W 读/写确认信号MP/MC 微处理器/微控制器模式选择信VIS OE 外部寻址可视输出使能ENA 144 外部寻址使能控制(内部下拉)1.5 读时序写时序等待状态控制寄存器nPSWS DSWS ISWS :加入07个等待状态nBVIS:内部总线操作是否对外部可视00 01 :不可视;10:内部数据空间操作外部可视;11:内部程序空间操作外部可视;第二节系统中断n2.1 中断结构n2.2 中断优先级和中断向量表n2.3中断控制寄存器n2.4中断响应流程2.1中断结构n两级中断:内核中断和外设中断n两种类型中断:不可屏蔽中断(RS,NMI),可屏蔽中断(外部中断以及其它外设中断等)n中断管理:外设级管理和CPU级管理n中断响应/确认硬件和中断服务软件均有两级级连2.2中断优先级和中断向量表n内核中断:复位中断(RS)、不可屏蔽中断(NMI)、INT1INT6,优先级顺序固定。n外部中断:外部引脚事件、SPI、SCI、ADC、CAN连接INT1、5、6;事件管理器连接INT2、3、4。优先级顺序可编程。2.3中断控制寄存器nCPU中断控制寄存器1 中断标志寄存器IFR标志位清除方式:写1、中断确认、系统复位(INTR指令产生的中断标志必须由软件清除)n2中断屏蔽寄存器IMR外设中断寄存器n外设中断矢量寄存器PIVRn外设中断请求寄存器PIRQR0,1,2n外设中断确认寄存器PIACKR0.1.2(仅做测试用)备注说明n复位中断触发条件:外部复位引脚和看门狗定时器溢出n不可屏蔽中断:非法地址访问,察看状态SCSR1.0位(只能软件清除)n外部事件中断控制寄存器XINT1,2CR:中断响应流程n硬件响应流程:外设中断事件外设中断标志置位外设中断请求置位INTXCPU中断申请-CPU中断标志置位CPU确认中断清除外设和CPU中断请求加载外设中断矢量响应中断。n软件响应流程:取INTX矢量地址进入通用中断服务程序GISR现场保护读外设中断矢量寄存器PIVR确认非伪中断进入专用中断服务例程SISR清除外设中断符号位和INTM位中断响应恢复现场中断退出例程说明第三节程序控制n1 程序地址产生:PC STACK MSTACKn2 流水线操作n3转移、调用和返回1 程序地址产生n硬件机构:16位程序计数器PC、驱动程序地址总线PAB的程序地址寄存器PAR、8级16位宽度堆栈STACK、1级16位微堆栈MSTACK、重复计数器RPTCn操作功能:顺序操作、空周期、子程序调用/跳转/返回、表移动或块移动返回、中断调用/返回、计算转移n备注:堆栈:可用于保存地址或数据(POP/PUSH, POPD/PUSHD)微堆栈:用于数据或表格重复移动时存储下一条指令的地址对外不可见2流水线操作n四级流水线n取指、译码、取操作数、指令执行同步执行n两段静态执行逻辑:执行和锁存结果3 转移、调用和返回n无条件:转移B, BACC;调用CALL, CALA;返回RET;n有条件:转移BCND,BANZ(当前AR内容不为0);调用CC;返回RETC;n多条件判断:使用两个或三个条件;n重复单条指令:RPT单条指令执行N +1次;第四节 时钟域和节电模式n4.1 锁相环n4.2 看门狗n4.3 节电模式4.1锁相环n引脚:时钟输入:XTAL1/CLKIN XTAL2时钟输出:CLKOUT/IOPE0(SCSR1.14控制)滤波回路:PLLF PLLF2供电:PLLVccA Vssn控制:SCSR1.911 0.54倍频4.2 看门狗n特点:1) 8位WD计数器溢出时产生系统复位;2) 计数器的时钟由预标定因子选择6种;3) WD键寄存器清除WD计数器;4) 不正确的WD检查位会产生系统复位;5) WD计数器在系统复位后自动启动;6) 保证系统崩溃或看门狗自身故障时产生可靠的系统复位;n看门狗时钟:CLKOUT/512n预标定因子:WDCR.02选择264分频(3.28ms209.7ms/40MHz)n看门狗复位条件:WDCNTR溢出;不正确的WD键寄存器写入(非55h, AAh顺序或值);WD检验位出错(非101)。n看门狗清除条件:先向WD键寄存器写入55,再写入AAh。n控制寄存器8位宽度,16位读写方式。n在实时监控模式下,看门狗时钟被禁止。nDSP复位上电后,看门狗将自动启动,通常需要软件在初始化时处理。看门狗寄存器nWD计数器nWD键寄存器nWD控制寄存器4.3节电模式n时钟域:两个,CPU时钟(用于CPU逻辑)和系统时钟(包括外设时钟和CPU中断逻辑时钟)n节电模式描述(相应的唤醒外设中断必须使能,并保持足够的有效时间)第四章TMS320X240X的片上外设n4.1 数字I/O模块n4.2 A/D转换器n4.3 事件管理器4.1 数字I/O模块1 概述n41个通用、双向的数字I/O引脚n具备基本功能和一般的I/O复用能力n功能选择:3个控制寄存器MCRA,B,C决定nI/O行为控制:6个数据和方向控制寄存器PA(B,C,D,E,F)DATDIR决定n输出能力: GROUP1(PWM16, T1(2)PWM, CAP16, TCLKINA, IOPF6, IOPC1, XF, A015):+/-2mA;GROUP2(PS/DS/IS,CAN,SPI,T3(4)PWM,PWM712): +/-4mA;GROUP3(TDIRA(B),SCIXINT1(2),TCLKINB,CLKOUT):+/-8mA;2 I/O复用输出控制寄存器nMCRA-7090hnMCRB-7092hnMCRC-7094hn尽量不要改变保留位的值,以免产生不可预测的结果nI/O端口的功能是可以动态改变的3 I/O数据和方向寄存器nPADATDAR-7098h:A端口nPBDATDAR-709Ah:B端口nPADATDAR-709Ch :C端口nPADATDAR-709Eh :D端口nPADATDAR-7095h :E端口nPADATDAR-7096h :F端口4.2 A/D转换器n带内置可编程时间窗口采样保持器的16通道10位ADC;n可编程16通道自动排序、自动转换;n两个独立的最多可选择8个转换通道的排序器(SEQ1和SEQ2)可独立工作为双8位模式或级链的单16位模式;n通道转换顺序可编程;n可单独访问的16个转换结果寄存器;n多种AD转换触发事件:软件立即启动、事件管理器EVA/EVB、外部引脚;n灵活的中断控制允许单序列或间隔序列转换完成后申请中断n启动/停止模式允许多个按时间排序的触发转换事件同步转换;nEVA和EVB可分别独立触发两个排序器;n内置的校验模式和自测试模式;1 排序器工作原理概述n硬件机构:通道选择状态器(Ch Sel):用于存放需要转换的模拟输入通道号;状态指针:指示当前已经转换完成的状态号;转换计数器:由最大转换通道数加载(MAX CONV1+1),减计数;n工作机制:通过通道选择状态器管理两个多路开关:模拟通道输入和转换结果输出;根据当前的转换状态和控制设置管理ADC的启动和停止。特征排序器1 SEQ1排序器2 SEQ216通道级链排序器SEQ启动触发方式EVA、软件、外部引脚EVB、软件、外部引脚EVA、EVB、软件、外部引脚最大转换通道数8816转换完成后自动停止YesYesYes触发优先级高低不需要排序控制器位分配CONV07CONV815CONV015A/D转换结果寄存器Result07Result815Result015双排序器和单排序器工作比较(1) 连续的自动排序方式n条件:CONT RUN bit = 1;n运行:SOC触发条件有效(上一次转换已经完成)-加载自动排序状态寄存器(MAXCONV)-启动ADC(排序状态寄存器自动减1)-保存转换结果-转换结束判断(排序状态寄存器=0?)-置中断标志-加载自动排序状态寄存器,复位状态指针为CONV00-启动下一次转换;n转换顺序:从通道选择0开始;n说明:转换完成时,需要及时读取转换结果; 适宜于通道的连续采样;举例n在双排序器模式下完成1、2、3、4、5、6、7等通道的连续转换。MAXCONV=6;(2) 排序器的启动/停止模式n条件:CONT RUN bit = 0;任何一个排序器(SEQ1,SEQ2, SEQ)均可工作在该模式下;n运行:SOC触发条件有效(上一次转换已经完成)-加载自动排序状态寄存器(MAXCONV)-启动ADC(排序状态寄存器自动减1)-保存转换结果-转换结束判断(排序状态寄存器=0?)-置中断标志-转换结束(自动排序状态寄存器=0,状态指针指向当前转换完成的通道);n说明:可实现在时间上独立的多个采样序列转换;所有序列转换完成后,需要手动复位排序器;具有自动返回的能力(MAXCONV=16)。(3)转换结果n输入模拟信号的数字转换结果为: 输入的模拟电压 - VREFLODigital Value = 1023*- VREFHI - VREFLO(4) 触发条件和中断n触发条件:n中断方式:每完成一次采样序列,中断信号产生一次(只有一个EOS信号);每完成两次采样序列,中断信号产生一次(已经有一个EOS信号) 。(5) 校定模式和自测试模式n校准模式:计算ADC模块的零、中点和最大值的偏移误差(BRGENA和HI/LO位控制),偏差结果存在校准寄存器内(可以通过软件干预),由硬件将该值加在转换结果上实现自动补偿。n自测试模式:检测ADC引脚的短路/开路。n240xA系列芯片不支持这两种工作模式。2 ADC时钟预标定n可以调整器件的ADC采样和保持的时间来适应模拟信号的阻抗变化nADC转换时间:转换序列启动时间;采保时间;转换时间;转换结束时间;序列转换完成置标志位时间。n最长时间(16个通道):15+13*14+14=211个周期(CPS=0, ACQ=0,第一次转换需要15个周期,最后一次转换需要14个周期,其他13个周期)3 ADC模块的寄存器n功能:控制寄存器ADCTRL1, ADCTRL2n行为:最大转换通道寄存器MAXCONV,通道选择排序控制寄存器CHSELSEQ14n结果:ADC 结果寄存器RESULT015, 标准结果寄存器CALIBRATIONn状态:自动排序状态寄存器AUTO_SEQ_SR备注说明n240XA芯片不支持自标定模式,ADCTRL1的 03位必须设置为0,ADCTRL2的14位只能作为序列器1的复位控制。n序列器的BSY状态位只能在转换启动后四个状态周期才能正确检测。n注意不要同时设置CPS=1和ACQ.PS=0(该设置只转换一个通道就会停止)4.3 事件管理器n1 结构概述n2 通用定时器n3 PWM比较发生单元n4 事件捕获单元n5 QEP处理单元1 结构概述n(1)特点:)特点:两套独立的EVM模块;每个EVM模块包括2个通用的16位定时器;三个比较单元;具有空间矢量状态机、死区发生器和输出逻辑控制的PWM回路;3个捕获单元、光电编码器输入的四倍频辨向处理电路(QEP);中断逻辑。在功能结构上与C24X相比有比较大的变化。n(2)结构框图:)结构框图:(3)事件管理器的引脚nEVA:通用定时器比较输出-T1CMP/T1PWM, T2CMP/T2PWM;PWM输出-PWM16;外部时钟输入-TCLKINA, TDIRA;捕获和QEP输入-CAP1/QEP1, CAP2/QEP2, CAP3。 nEVB:通用定时器比较输出-T3CMP/T3PWM, T4CMP/T4PWM;PWM输出-PWM712;外部时钟输入-TCLKINB, TDIRB;捕获和QEP输入-CAP4/QEP3, CAP5/QEP4, CAP6。n功率保护引脚:PDPINTA/B, 低有效(保持6或者12个状态周期)封锁所有的PWM输出为高阻态(要求PDPINT中断使能,否则无效),该信号由内部时钟信号确认和同步,系统复位后即被使能。 C240EV和240XAEV的比较n取消了单调加和单调加减计数模式;n取消了32位计数器模式n取消了GP的驻留模式,在周期匹配、上溢和下溢使能自动反向计数n捕获3事件可以触发ADC转换n捕获单元可以使用T1或T2时基n在捕获FIFO中有1个或2个事件均可产生捕获中断标志n捕获FIFO的状态可随时访问nQEP只能作为T2或T4的时基n3个简单比较单元被取消,全比较模式只在PWM模式中使用n死区计数器减少为4位(8),预标定时间因子增加为5位(3)n每个独立外设的中断控制逻辑被统一管理,外设只有产生中断标志的中断申请信号和相应的使能信号,中断交由外设中断扩展控制器PIE管理n取消了外设中断响应自动清除相应标志的操作,中断标志位必须由软件写1清除nPDPINTA/B在系统复位后被使能n初始化写COMCONA/B只需一次(在C240中需要2次)(4)事件管理器的中断管理和响应n事件管理器的中断被分为3组,每一组分配1个CPU中断号(INT2,3,4),多中断源的管理和仲裁由PIE模块处理。n中断源:中断事件发生后,EVM中断标志寄存器EVA(/B)IFRA(/B/C)对应位被置1,该标志位只能由软件强制写1清除。n中断使能:由中断屏蔽寄存器EVA(B)IMRA, EVA(B)IMRB,EVA(B)IMRC三个16位寄存器管理所有的中断使能位。n中断请求:外设的中断标志位和中断屏蔽位置1,产生CPU INT 中断申请。nCPU响应:IFR标志位和IMR使能位有效,CPU向PIE发布中断确认,IFR标志位被自动清除,CPU结束当前指令执行,取中断向量,之后操作由软件管理。nPIE响应:确认CPU响应,清除PIRQ标志位,刷新PIVR寄存器,等待下一次中断。n中断软件:GISR保护现场,读PIVR确定外设中断;SISR-清除外设中断标志,中断返回前使能CPU的INTM位(清除)。2 通用定时器GPTimern1个可读写的16位计数器TxCNT(x=14)n1个可读写的16位比较寄存器(双缓冲)TcCMPR(x=14)n1个可读写的16位的周期寄存器(双缓冲) TxPR(x=14)n可读写的定时器控制寄存器TxCON(x=14)n输入时钟可编程预标定器n控制和中断逻辑n定时器比较输出n输出控制逻辑n定时器2(4)可以选择定时器1(3)的周期寄存器值作为自己的定时周期(1)通用定时器的基本特点n输入信号:内部的CPU时钟;外部时钟TCLKINA/B TDIRA/B(最大频率为CPU时钟的1/4);复位信号。n输出信号:定时器比较输出TxPWM;ADC模块的启动信号;事件信号(上溢、下溢、比较匹配、周期匹配等);计数方向指示位。n双缓冲方式:比较寄存器和周期寄存器带有影子寄存器;比较寄存器在特定事件发生时才刷新加载,而周期寄存器仅当计数寄存器TxCNT为零时刷新。n定时器的比较输出模式:高/低有效(输出随比较和周期匹配的事件而变化);强制高/低(一旦有效不再改变)n四种计数模式:停止/保持;连续增/减计数;连续增计数;定向增/减计数;n定时器同步:定时器2/4,通过合适的寄存器构造可以和定时器1/3同步工作;n事件可以在硬件上自动启动ADC模块的工作,无需CPU介入;n中断事件:上溢TxCNT=FFFFh;下溢- TxCNT=FFFFh;比较匹配- TxCNT=TxCMPR;周期匹配- TxCNT=TxPR;(2)控制寄存器n功能备注说明nTMODE0,1,1112位:计数模式选择,00-停止/保持,01-连续增/减,10-连续增,11-定向增/减nTPS02:时钟预标定因子nT2WT1/T4WT1:T2/T4使能选择,只在T2CON和T4CON内有效nSELT1PR/SELT3PR:周期寄存器选择,只在T2CON和T4CON内有效,在T1CON和T3CON内为保留位行为:(3)通用定时器的计数运行n停止/保持模式:GP定时器保持当前状态停止运行;n连续加计数:GP定时器按照定标的输入时钟计数,直到计数器的值和周期寄存器的值匹配,之后的下一个时钟的上升沿,GP复位为0并开始下一个计数周期,同时外设周期匹配中断标志产生,并产生可以启动ADC模块的事件。在GP复位为0之后一个时钟周期,下溢中断标志产生,并产生可以启动ADC模块的事件。定时周期: (TxPR+1)*定标时钟说明:TxCON.TENABLE位控制定时期的启动计数,同时决定控制始终输入预标定因子。 编程方式:设置通用定时控制器GPTCONA-设置周期寄存器TxPR-设置比较寄存器TxCMPR-清除计数器TxCNT-设置定时器控制寄存器TxCON,使能定时器工作n连续增减计数:GP定时器按照定标的输入时钟加计数,直到计数器的值和周期寄存器的值匹配,之后的下一个时钟的上升沿,GP减计数直到计数器为0,并开始以加计数的方式开始下一个计数周期,其间外设周期匹配、下溢、上溢等中断事件标志位产生,并产生可以启动ADC模块的事件。定时周期: 2*TxPR*定标时钟说明:TxCON.TENABLE位控制定时期的启动计数;GPTCONA/B中的状态位指示当前的计数方向;适合产生对称的PWM波形。n编程方式:设置通用定时控制器GPTCONA-设置周期寄存器TxPR-设置比较寄存器TxCMPR-清除计数器TxCNT-设置定时器控制寄存器TxCON,使能定时器工作n定向增减计数方式:根据定标的时钟(内部或外部)和TDIRA/B引脚的输入来增或减计数,当TDIRA/B为高时,定时器加计数直到周期匹配或上溢,之后定时器复位为0,并继续增计数;当TDIRA/B为低时,定时器减计数直到为0,定时器的计数器重新加载周期寄存器的值,开始新的减计数。其间外设周期匹配、下溢、上溢等中断事件产生并产生可以启动ADC模块的事件。 说明:TDIRA/B引脚变化后,计数方向的改变在当前计数完成一个时钟周期之后。在该方式下,第一个计数脉冲将会丢失。该方式能够用于事件管理器模块的QEP脉冲计数或者作为外部脉冲计数。LDP#DP_EVA;指向7400h7480h单元SPLK#41H,GPTCONA;TCOMPOE=1 允许定时器 ;比较输出SPLK#5H,T1PR;设置周期寄存器SPLK#3H,T1CMPR;设置比较寄存器SPLK#0H,T1CNT;设置计数寄存器SPLK#0174EH,T1CON ;TMODE=10 连续增计数模式,TPS=111 预分频为128 ;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟 ;TECMPR=1 定时器1比较使能,SELT1PR=0 SPLK#01F5EH,T2CON;TMODE=11 定向增/减计数模式,TPS=111 ;预分频为128;TENABLE=1 定时器计数使能,TCLKS=1 外部时钟;TECMPR=1 定时器1比较使能,SELT1PR=0 SPLK#0F4EH,T1CON;TMODE=01 连续增/减计数模式,TPS=111 ;预分频为128;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟;TECMPR=1 定时器1比较使能,SELT1PR=0 (4)GPTimer的比较操作n特点:由TxCMPR、GPTCONX.6和TxCON.1(比较输出使能)控制TxPWM引脚输出,由计数方式控制产生对称或非对称的PWM波形。n比较运行:比较匹配后,经过一个CPU时钟周期产生比较中断信号和启动ADC模块的信号(如果中断事件作为ADC的SOC触发条件),同时改变PWM的输出状态(由GPTCONA/B设置)。n输出逻辑:高/低有效,强制高/低非对称比较输出波形对称比较输出波形说明n当比较寄存器为0时,TxPWM始终输出有效电平;n当比较寄存器值大于周期寄存器值时,TxPWM始终输出无效电平;n当比较寄存器值等于周期寄存器值时,TxPWM输出一个周期的有效电平(连续增模式);对于连续增减模式,输出无效电平。n有效输出时间:连续增方式TxPR-TxCMPR+1;连续增减方式Txpr-TxCMPRup+TxPR-TxCMPRdn.nPDPINTA/B有效或复位时,TxPWM位高阻态3 全比较单元 n特点:每个事件管理器模块包含3个全比较单元;3个16位比较寄存器CMPR13(双缓冲);1个比较控制寄存器COMCONA/B;1个16位行为控制寄存器ACTRA/B(双缓冲);6个3态PWM比较输出;控制和中断逻辑。(1)比较器部分n输入信号:来自控制寄存器的控制信号;定时器T1/3的计数信号和下溢与周期匹配信号;复位信号。n比较器运行模式:由COMCONx控制,比较器运行使能、比较器输出使能、比较寄存器刷新模式、SVPWM模式使能。n比较器运行原理:和定时器的比较单元一致。n编程处理:设置周期寄存器TxPR设置行为控制寄存器ACTRAx设置比较寄存器CMPRx设置比较控制寄存器COMCONx设置定时器控制寄存器TxCON(启动定时器等操作)比较器单元寄存器n功能:n行为:(2)PWM发生器n硬件机构:对称和非对称波形发生器;可编程死区逻辑;输出逻辑;SVPWM状态机;n基本特点:16位寄存器;可编程死区范围012us;最小死区宽度25ns;可动态改变PWM载波频率;在每个PWM周内和以后改变PWM脉冲宽度;可屏蔽功率器件保护中断PDPINT;可产称对称、非对称、空间矢量PWM波形;自动重装载机制;(3)死区发生器单元n输入信号:3个全比较器的输出PH13;1个预标定输入时钟(x/1,x/2,x/4.x/32(101111) 。n输出信号:DTPH1, DTPH1_, DTPH2, DTPH2_, DTPH3, DTPH3_n死区控制寄存器:死区时间=m*p, m:死区定时器周期DBT03;p:预标定因子DBT24(4)输出逻辑n输入信号:DTPH1, DTPH1_, DTPH2, DTPH2_, DTPH3, DTPH3_;ACTRx的控制位;PDPINTx和RS.n输出信号:PWMx x=16; PWMy y=712;n控制行为:ACTRx控制位决定PWM输出的电平的变化形式(高/低有效、强制高/低、高阻);复位信号和PDPINTx决定是否强制PWM输出为高阻态。n说明:复位信号和和有效的PDPINTx信号将复位ACTRx相对应的PWM输出状态控制位。(5)PWM波形nPWM发生的寄存器编程:设置并加载ACTRx;如果应用死区控制,设置并加载DBTCONx;初始化CMPRx;设置并加载COMCONx;设置并加载T1CON(EVA)或T3CON(EVB),启动定时器;刷新CMPRx;LDP#DP_PF2;指向7080h7100h区LACLMCRAOR#0FC0H;IOPA,B被配置为基本功能方式:PWM16SACLMCRALDP#DP_EVA;指向7400h7480h区SPLK#0FFFFH,EVAIFRA;清EVB 全部中断标志SPLK#0555H,ACTRA;PWM16 低有效SPLK#05F0H,DBTCONB; 使能死区控制 2USSPLK#10H,CMPR1;设置比较初值 PWM1,2SPLK#20H,CMPR2;设置PWM3,4的比较寄存器SPLK#30H,CMPR3;设置PWM5,6的比较寄存器SPLK#60H,T1PR ;设置定时器1周期寄存器,;即PWM周期为60个CPU时钟周期SPLK#0A600H,COMCONA;使能比较操作SPLK#0,T1CNTSPLK#41H,GPTCONA;TCOMPOE=1,T1PIN=01SPLK#080H,EVAIMRA;通用定时器1中断使能SPLK#0174EH,T1CON ;TMODE=10 连续增计数模式,TPS=111 预分频为128;TENABLE=1 定时器计数使能, TCLKS=00 ;内部时钟;TECMPR=1 定时器1比较使能, SELT1PR=0 CLRCINTM;开总中断4 捕获单元n特点:每个事件管理器模块(EVA和EVB)包含3个捕获单元;捕获单元可以锁存引脚变化事件的状态和时间;每个事件管理器模块的捕获单元中有:1个16位捕获控制寄存器CAPCONx、1个16位捕获FIFO状态寄存器CAPFIFOx、3个16位2级深度FIFO堆栈CAPxFIFO和CAPxFBOT、3个施密特触发捕获引脚(由器件时钟同步,状态变化需要保持2个周期);捕获单元的时基可以选择位T1/3或T2/4;捕获事件类型有:上升沿、下降沿、双边沿。中断触发条件:2次事件捕获或者捕获FIFO堆栈不空。运行原理n捕获单元操作被使能后,相应输入引脚上定义的电平变化事件发生时,GP定时器的计数值将被锁存到相应的FIFO堆栈中,如果堆栈内已经有1个以上的有效捕获事件(CAPFIFOx状态位不为0),相应的中断标志被置位。 CAPFIFOx状态位反映当前发生的捕获事件状态,引脚变化到计数值被锁存的延迟是2个时钟周期。堆栈操作n2级深度只读堆栈由CAPxFIFO(存放旧的计数值)和CAPxFBOT(存放新的计数值)组成,读取CAPxFIFO,CAPxFBOT被压栈到CAPxFIFO,同时状态位发生相应的变化。n第一次捕获:定时器计数值被写入CAPxFIFO,如果堆栈为空,对应的状态位为01,此时在下次捕获事件到来之前读取FIFO堆栈,状态位变成0。n第二次捕获:如果在前次捕获计数值被读取之前,新的捕获事件到来,则新的计数值被写入栈底CAPxFBOT,同时相应的状态位便位10,此时在下次捕获事件到来之前读取FIFO堆栈,旧的计数值被读走,新的计数值被压栈到CAPxFIFO,状态位变成01。如果中断没有被屏蔽,相应的捕获中断标志置位。n第三次捕获:如果在FIFO堆栈中已经捕获了两次计数值,当新的捕获事件到来时,FIFO栈顶CAPxFIFO的计数值被弹出堆栈丢掉,栈底计数值CAPxFBOT被压栈到栈顶CAPxFIFO,新的计数值被吸入栈底,相应的状态位变成11,表示有旧的数据被丢掉。在这种情形下,如果捕获中断没有被屏蔽,本次捕获叶将产生中断申请信号。n说明:为了让一次捕获时间也可以产生中断,可以修改状态寄存器的响应位为01,表示已经有一个“假”事件被捕获,当新的事件到来时,就会产生中断信号。控制和状态寄存器n功能:n行为:初始化:LDP#DP_PF2;指向7090h7100hLACLMCRCOR#0380H ;IOPE7, IOPF0, IOPF1 被配置为特殊功能方式:CAP46SACLMCRCSETC INTMLDP#DP_EVBSPLK #049H,GPTCONB;TCOMPOE=1,T4PIN=10,T3PIN=01 SPLK#0,T3CNTSPLK #01742H,T3CON ;TMODE=10 连续向上计数模式,TPS=111 ;预分频为128 TENABLE=1 定时器计数使能, TCLKS=00 内部时钟;TCLD=00, TECMPR=1 定时器3比较使能, SELT3PR=0SPLK #0FFFFH,T3PR;定时器周期比较寄存器设为最大SPLK #00H,EVBIMRASPLK #00H,EVBIMRBSPLK #0A240H,CAPCONB;CAP4 捕获允许,捕获上升沿SPLK #01H,EVBIMRC;CAP4 中断使能SPLK #0FFFFh,EVBIFRA ;清 EVB 全部中断标志SPLK #0FFFFh,EVBIFRBSPLK #0FFFFh,EVBIFRCCLRC INTM ;开总中断RET; 中断程序程序GISR4:;优先级INT4中断人口 ;保护现场LDP#0E0HLACCPIVR,1;读取外设中断向量寄存器(PIVR),并左移一位ADD#PVECTORS;加上外设中断人口地址BACC;跳到相应的中断服务子程序CAP4_ISR:;捕获单元4中断程序入口LDP #DP_EVBLACLCAP4FIFOLDP#5SACLCAP4TEMP;读出捕获的值LDP#DP_EVBSPLK#0,T3CNT;清 T3 计数值,使其重新计数GISR2_RET:;中断返回;恢复现场CLRCINTM;开总中断,因为一进中断就自动关闭总中断RET;假中断程序PHANTOM KICK_DOG;复位看门狗RETEND5 正交编码脉冲(QEP)电路n用于处理光电编码器的A、B相脉冲信号,以获得四倍频时钟和方向信号。n引脚和捕获单元共用,由CAPCONx控制寄存器管理;nQEP电路的输出为时钟脉冲信号和计数方向信号,作为定时器T2/4的时基(此时定时器2/4应工作在方向增减计数方式)。n寄存器编程处理:根据需要设置定时器2/4的计数值寄存器、周期寄存器和比较寄存器-构造定时器2/4为方向增减计数方式并以QEP回路作为时钟源构造CAPCONx使能QEP回路。n编程处理:(1)设置周期寄存器T2(4)的计数、周期、比较寄存器;(2)设置T2(4)CON控制寄存器为定向增/减方式,并以正交编码QEP电路的时钟作为时钟源;(3)设置CAPCONA(B)寄存器以使能正交编码QEP电路。第五章DSP指令系统和系统开发n5.1 寻址方式n5.2 TMS320X2407指令介绍 n5.3 常用伪指令 n5.4 头文件及命令文件n5.5 集成开发环境简介 5.1寻址方式1 立即寻址方式:短立即数寻址:8、9(LDP指令)、13位(MPY指令)的常数作为操作数;RPT #99长立即数寻址:16位的常数作为操作数;ADD#16384,2采用立即寻址的RPT指令8位常数1 0 1 1 1 0 1 10 1 1 0 0 0 1 1长立即数寻址的ADD指令左移2位1 0 1 1 1 1 1 1 10 0 10 0 1 0操作数(16384) 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 02 直接寻址方式n该方式下,数据存储器以128个字被分为若干块,每个块称作数据页,64K数据存储器 包含512个数据页,当前的数据页由状态寄存器ST0的9位页指针DP决定,CPU访问的特定单元地址由数据页和指令包含的7位偏移量产生。n指令格式:n所有访问,均需要考虑初始化DP;指令类型直接/间接指示7位偏移量8MSBs07LSBsLDP #4 ;设置数据页指针ADD 1h; 将当前数据页偏移量为1的单元内容加至累加器 单元地址:000000100(DP) 0000001(OFFSET) = 201hLDP #5;ADD 9 h,163 间接寻址方式n利用8个辅助寄存器(AR0AR7)提供间接寻址的16位地址,可以访问64K数据存储器的任意单元。n当前的辅助寄存器由状态寄存器ST0的3位指针ARP选定,它可以由MAR、LST指令或任何支持间接寻址的指令装载。n指令执行过程中,当前AR的内容用作被访问的数据存储器地址。间接寻址选项选项操作数例子不增不减*LT *;(AR)TREG, AR 不变加1*+LT *+;(AR)TREG, AR +1AR减1*-LT *-;(AR)TREG, AR 1AR加索引值*0+LT *0+;(AR)TREG, AR+AR0AR减索引值*0-LT *0-; (AR)TREG, AR AR0-AR加索引值,反向进位*BR0+LT *BR0+; (AR)TREG, AR -AR0AR, 反转进位加法减索引值,反向进位*BR0-LT *BR0-; (AR)TREG, AR -AR0AR, 反转进位减法n在指令中更新辅助寄存器;MAR *, AR1; 当前辅助寄存AR设为AR1LT *+, AR2; (AR1) 装入TREG; ;AR1+1AR1;当前辅助寄存AR改为AR2MPY *+ ;TREG*(AR2)-PREG,AR2+1AR2n指令格式n修改辅助寄存器内容:LAR MAR ADRK SBRK指令类型间接寻址AR更新选项 更新指示下一个辅助寄存器指针8MSBs1ARUNNAR5.2 TMS320X2407常用指令介绍n指令分类(86条):1 累加器、算术和逻辑指令2 辅助寄存器和数据页指针指令3 TREG、PREG和乘法指令4 转移指令5 控制指令6 I/O和存储器操作指令1 累加器、算术和逻辑指令(1) ABS 功能:累加器取绝对值;句法:ABS执行:PC+1; |(ACC)|-ACC;0-C (正数不变;负数取反加1)状态位:执行受OVM影响,结果影响C和OV说明:当ACC为80000000h时,若没有设置溢出模式(OVM=0),则结果为80000000h,若OVM=1;则结果为7FFFFFFFh,两种情况OV均置位。(2) ADD功能:加至累加器;句法:ADD dma, shift ;直接寻址,shift=016 ADD ind,shift,Arn;间接寻址 n=07 ind:间接寻址操作选项 ADD #k;短立即数寻址 k:8位短立即数 ADD #lk,shift;长立即数寻址 lk:16位长立即数执行:PC+1; (ACC)+(dma)*2shift-ACC; or (ACC)+k-ACC or PC+2; (ACC)+lk*2shift-ACC;状态位:执行受SXM(移位)和OVM(结果)影响,结果影响C和OV说明:若使用间接寻址并更新ARP,则必须声明一个移位操作(016);短立即数寻址不受SXM位影响,并且不可重复执行。举例:ADD dat1,1; ADD *+,0,AR0; ADD #1h;ADD 111h,1(3) ADDC功能:带进位加至累加器;句法:ADDC dma;直接寻址 ADDC ind,Arn;间接寻址 n=07 ind: 间接寻址操作选项执行:PC+1; (ACC)+(dma)+C-ACC; 状态位:执行受OVM(结果)影响,不受SXM影响,结果影响C和OV说明:符号扩展位被抑制;进位位按正常方式产生。举例:ADDC dat300; ADDC *-, AR;(4) AND功能:和累加器逻辑“与”;句法:AND dma ;直接寻址 AND ind,Arn ;间接寻址 n=07 ind:间接寻址操作选项 AND #lk,shift ;长立即数寻址 lk:16位长立即数shift=016 执行:PC+1; (ACC(15:0) AND (dma)-ACC(15:0) 0-ACC(31:16); (ACC(31:0) AND lk*2shift-ACC;状态位:无说明:若使用直接或间接寻址,累加器高字被清零;若使用长立即数寻址,移位时,32位结果未被填充的高/低位清零。举例:AND dat16; AND *+,AR0; AND #1h,4;(5)CMPL功能:累加器求反;句法:CMPL执行:PC+1; (ACC)逐位取反-ACC状态位:无说明:累加器内容被其逻辑反所代替;举例:CMPL(6)LACC功能:左移后装入累加器;句法:LACC dma, shift ;直接寻址,shift=016 LACC ind,shift,Arn;间接寻址 n=07 ind:间接寻址操作选项 LACC #lk,shift;长立即数寻址 lk:16位长立即数执行:PC+1; (dma)*2shift-ACC; or lk*2shift-ACC;状态位:执行受SXM(移位)影响说明:移位时,低位填0,高位由SXM位和符号位控制举例:LACC dat, 4; LACC *+, 4; LACC #F001h,1;(7)LACL功能:装载累加器低位并清除累加器高位;句法:LACL dma ;直接寻址 LACL ind,Arn;间接寻址 n=07 ind:间接寻址操作选项 LACL #k;短立即数寻址 k:8位短立即数执行:PC+1; (dma)-ACC(15:0) 0-ACC(31:16); or k-ACC(7:0) 0-ACC(31:8);状态位:执行不受SXM影响说明:数据被当作无符号数处理举例:LACL dat; LACL *+, 4; LACL #F0h;(8) NEG功能:累加器求负;句法:NEG执行:PC+1; ACC *(-1)-ACC; 状态位:执行受OVM影响,结果影响C和OV说明:当ACC为80000000h时,若没有设置溢出模式(OVM=0),则结果为80000000h,若OVM=1;则结果为7FFFFFFFh,两种情况OV均置1;如果执行结果ACC0, 则C=1;否则C=0。(9) OR功能:和累加器逻辑“或”;句法:OR dma ;直接寻址 OR ind,Arn ;间接寻址 n=07 ind:间接寻址操作选项 OR #lk,shift ;长立即数寻址 lk:16位长立即数shift=016 执行:PC+1; (ACC(31:0) OR (dma)-ACC(31:0); (ACC(31:0) OR lk*2shift-ACC;状态位:无说明:若使用长立即数寻址,移位时,32位结果未被填充的高/低位清零。举例:OR dat16; OR *+,AR0; OR #1h,4;(10) SACH功能:移位并存储累加器高字;句法:SACH dma ,shift2;直接寻址, shift2=07 SACH ind,shift2,Arn ;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (ACC*2shift)(高16位)-dma;状态位:不受SXM的影响说明:将整个32位累加器内容复制到输出定标器,无符号左移07位,再将高16位结果保存。举例:SACH dat16,1; SACH *+, 0, AR0;(11) SACL功能:移位并存储累加器低字;句法:SACL dma ,shift2;直接寻址, shift2=07 SACL ind,shift2,Arn ;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (ACC*2shift)(低16位)-dma;状态位:不受SXM的影响说明:将整个32位累加器内容复制到输出定标器,无符号左移07位,在将低16位结果保存。举例:SACL dat16,1; SACL *+, 0, AR0;(12) SFL功能:累加器算术左移;句法:SFL执行:PC+1; ACC(31)-C ACC(30:0)-ACC(31:1) 0-ACC(0) 状态位:执行不受OVM影响,结果影响C说明:无(13)SFR功能:累加器算术右移;句法:SFR执行:PC+1; ACC(31:1)-ACC(30:0) ACC(0)-C if SXM=0, 0-ACC(31) else SXM=1 ACC(31)-ACC(31) ; 状态位:执行受OVM影响,结果影响C说明:无(14) SUB功能:从累加器减;句法:SUB dma, shift ;直接寻址,shift=016 SUB ind,shift,Arn;间接寻址 n=07 ind:间接寻址操作选项 SUB #k;短立即数寻址 k:8位短立即数 SUB #lk,shift;长立即数寻址 lk:16位长立即数执行:PC+1; (ACC)-(dma)*2shift-ACC; or (ACC)-lk*2shift-ACC;or (ACC)-k-ACC状态位:执行受SXM(移位)和OVM(结果)影响,结果影响C和OV说明:若未产生借位,C1;若产生借位,C0;举例:SUB dat,1; SUB *+,1,AR0; SUB #1h;SUB 111h,1(15) SUBB功能:累加器带借位减;句法:SUBB dma;直接寻址 SUBB ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (ACC)-(dma)-C的逻辑反-ACC; 状态位:执行受OVM(结果)影响,不受SXM影响,结果影响C和OV说明:符号扩展位被抑制;借位位按正常方式产生。举例:SUBB DAT300; SUBB *-, AR;(16) SUBC功能:累加器条件减;句法:SUBC dma;直接寻址 SUBC ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:对于(ACC)大于等于0并且(dma)大于等于0 PC+1; (ACC)-(dma)215-ALU输出;若ALU输出大于等于0,则 ALU输出2+1-ACC,否则ACC*2-ACC 状态位:结果影响C和OV,但不受OVM位影响说明:实现条件减法,可用于16位正数除法:16位被除数位于累加器低字,累加器高字清0,16位正除数存于数据存储器,然后执行16次SUBC指令,商位于累加器低字,余数位于累加器高字。举例:RPT #15; LACC TMP, 15; SUBC *; (16位除法) RPT #15; SUBC TMP; (32位除法)(17) XOR功能:和累加器逻辑“异或”;句法:XOR dma ;直接寻址 XOR ind,Arn ;间接寻址 n=07 ind:间接寻址操作选项 XOR #lk,shift ;长立即数寻址 lk:16位长立即数shift=016 执行:PC+1; (ACC(15:0) XOR (dma)-ACC(15:0) ACC(31:16)-ACC(31:16); or (ACC(31:0) XOR lk*2shift-ACC(31:0);状态位:无说明:若使用长立即数寻址,移位时,32位结果未被填充的高低位清零。举例:XOR 16; XOR *+,AR0; XOR #1h,4;(17) ZALR功能:清累加器低字并舍入装载累加器高字;句法:ZALR dma ;直接寻址 ZALR ind,Arn ;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)-ACC(31:16); 8000h-ACC(15:0);状态位:无说明:无举例:ZALR 16; ZALR *+,AR0; 2 辅助寄存器和数据页指针指令(1) ADRK功能:当前辅助寄存器加1个短立即数;句法:ADRK #k ;直接寻址执行:PC+1; (当前AR)+k-AR;状态位:无说明:k为8位正整数。举例:ADRK #80(2) SBRK功能:当前辅助寄存器减1个短立即数;句法:SBRK #k ;直接寻址执行:PC+1; (当前AR)-k-AR;状态位:无说明:k为8位正整数,无符号减法。举例:SBRK #80h;若AR0; 则指令结束后AR=FF80h(3) BANZ功能:当前辅助寄存器不为0则跳转;句法:BANZ pma,ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:if (当前AR)0 Then pma-PC else (PC)+2-pc (当前AR1)-(AR)状态位:无说明:缺省的操作是当前的AR减1,初始化AR为N-1,可以执行N个循环。举例:mar *, ar0 lar ar1,#3 lar ar0, #60hPgm0 add *+,ar1banz pgm0,ar0; (4)CMPR功能:比较当前辅助寄存器和AR0;句法:CMPR CM ; CM 比较条件:00相等;01小于;10大于;11不等执行:比较结果-ST1.TC状态位:影响TC说明:结果为真则TC=1;否则TC=0。举例:CMPR 2;(5)LAR功能:加载辅助寄存器句法:LAR ARx, dma;直接寻址,x=07 LAR ARx,ind,Arn;间接寻址 n=07 ind:间接寻址操作选项 LAR ARx, #k;短立即数寻址 k:8位短立即数 LAR Arx, #lk;长立即数寻址 lk:16位长立即数执行:PC+1; (dma)-ARx; or k or lk-ARx状态位:无说明:无举例:LAR AR4,#1h;(6) SAR功能:保存辅助寄存器句法:SAR ARx, dma;直接寻址,x=07 SAR ARx,ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; ARx - (dma); 状态位:无说明:无举例:SAR AR4,1h;(7) MAR功能:修改辅助寄存器句法:MAR dma; 直接寻址,类似于执行一条空指令 MAR ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; 修改当前的AR和ARP指针状态位:无举例:MAR *, AR4;3 TREG、PREG和乘法指令(1)APAC功能:将乘积寄存器加至累加器;句法:APAC执行:PC+1; ACC+移位的PREG-ACC 状态位:执行受PM和OVM影响,结果影响C和OV说明:操作不受SXM影响,PREG总是符号扩展的,对应指令为SPAC(累加器减去乘积寄存器结果)(2)LT功能:装载TREG句法:LT dma;直接寻址 LT ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)-TREG; 举例:LT *, AR4;(3) LTA功能:装载TREG,累加前一次的乘积结果句法:LTA dma;直接寻址 LTA ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)-TREG; ACC+移位的PREG-ACC状态位:执行受PM和OVM影响,结果影响C和OV说明:对应的指令是LTS(装载TREG,减去前一次的乘积结果)举例:LTA *, AR4;LTS *, AR4;(4)LTD功能:装载TREG,累加前一次的乘积结果,同时移动数据句法:LTD dma;直接寻址 LTD ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)-TREG; (DMA)-(DMA+1); ACC+移位的PREG-ACC状态位:执行受PM和OVM影响,结果影响C和OV说明:只能用于片上的数据RAM操作,数据移动可以跨越数据页举例:LTD *, AR4;(5) LTP功能:装载TREG,前一次的乘积结果保存到累加器句法:LTP dma;直接寻址 LTP ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)-TREG; 移位的PREG-ACC状态位:执行受PM影响说明:无举例:LTP *, AR4;(6) MPY功能:有符号数乘法操作句法:MPY dma;直接寻址 MPY ind,Arn;间接寻址 n=07 ind:间接寻址操作选项MPY #k; 短立即数寻址,k:13位短立即数执行:PC+1; (dma)*TREG-PREG; k*TREG-PREG状态位:无说明:短立即数为13位有符号常数,直接符号扩展,不受SXM的影响举例:MPY 10; MPY *, AR4;MPY #31h;(7) MPYA功能:乘法操作并累加前一次的乘积结果句法:MPYA dma;直接寻址 MPYA ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; ACC+移位的PREG-ACC;(dma)*TREG-PREG; 状态位:执行受PM和OVM影响,结果影响C和OV说明:对应的指令是MPYS(乘法操作并减去前一次的乘积结果)举例:MPYA 10; MPYS *, AR4;(8)MPYU功能:无符号乘法操作句法:MPYU dma;直接寻址 MPYU ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; 无符号(dma)*无符号TREG-PREG; 状态位:无说明:适用多精度乘法举例:MPYU 10; MPY *, AR4;(9) MAC功能:乘加操作句法:MAC pma,dma;直接寻址 MAC pma, ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC-MSTACK; pma-PC; ACC+移位的PREG-ACC; (dma)-TREG; (pma)*TREG-PREG; 辅助寄存器操作; PC+1-PC;如果无重复操作,MSTACK-PC状态位:执行受PM和OVM影响,结果影响C和OV说明:比较适于多项式计算,类似指令MACD(只能用于片上的数据RAM操作,数据移动可以跨越数据页)。举例:MAC 0ff00h, *+; MACD FF00H,*,AR2;(10) SPH功能:保存PREG高字句法:SPH dma;直接寻址 SPH ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; 16位移位的PREG高字- (dma); 状态位:结果受PM影响说明:相关的指令SPL(保存PREG低字)举例:SPH *;SPL 10h;(11) SQRA功能:平方计算并累加前次乘积结果句法:SQRA dma;直接寻址 SQRA ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; ACC+移位的PREG-ACC; (dma)-TREG; (dma)*TREG-PREG; 状态位:执行受PM和OVM影响,结果影响C和OV说明:相对应的指令是SQRS(平方计算并减去前次乘积结果)。举例:SQRA 10h ; SQRS *+, AR3;4 转移指令(1)B功能:无条件跳转句法:B pma,ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:pma-PC; 间接寻址操作状态位:无说明:相关指令BACC(ACC(15:0)-PC)举例:B 191,*+, AR1;BACC;(2)BCND功能:有条件跳转句法:BCND pma,C1C2,C3 条件C1:EQ, NEQ,LT,LEQ,GT,GEQ,NC,C,NOV,OV,BIO,NTC,TC执行:if C1and C2 and C3 pma-PC; 状态位:无说明:无举例:BCND 191,LEQ, C;(3)CALL功能:无条件调用句法:CALL pma,ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+2-TOS, pma-PC; 间接寻址操作状态位:无说明:相关指令CALA (ACC(15:0)-PC)举例:CALL 191,*+, AR1; CALA(4) CC功能:有条件调用句法:CC pma,C1C2,C3 条件C1:EQ, NEQ,LT,LEQ,GT,GEQ,NC,C,NOV,OV,BIO,NTC,TC执行:if C1and C2 and C3 then PC+2-TOS, pma-PC else PC+1; 状态位:无说明:无举例:CC 191,LEQ, C(5) RET功能:子程序调用或中断调用返回句法:RET执行:TOS-PC;堆栈操作 状态位:无说明:条件返回指令RETC举例:RET RETC GEQ,NOV5 控制指令(1) BIT功能:位测试句法:BIT dma, bit code;直接寻址 bit code: 015BIT ind, bit code ,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma)的位(15-bit code)-TC; 状态位:结果影响TC说明:拷贝数据存储器的位值到TC举例:BIT *, 0, AR4(2) CLRC功能:清除控制位句法:CLRC bit;bit: C, CNF, INTM,OVM,SXM,TC,XF 执行:PC+1; 0-bit;状态位:无说明:相对应的指令SETC(置位控制位)举例:CLRC INTMSETC XF(3)IDLE功能:系统空闲等待中断句法:IDLE执行:PC不变;等待可屏蔽或不可屏蔽的硬件中断; 状态位:受INTM的影响说明:该指令使系统进入低功耗模式,若INTM0;中断到来时,程序跳转到相应的中断服务程序;若INTM1,中断到来时,程序继续执行。举例:IDLE(4) NOP功能:空操作句法:NOP;执行:PC+1; 状态位:无;说明:创造延时。举例:NOP(5) LDP功能:加载数据页指针句法:LDP dma ;直接寻址LDP ind,Arn ; 间接寻址 n=07 ind:间接寻址操作选项LDP #k; ;短立即数寻址 k:8位短立即数执行:PC+1; (dma)的低9位-DP; or k-DP状态位:影响DP说明:同样作用的指令有LST。举例:LDP 127; LDP #0h; LDP *, AR5(6) LST功能:加载状态寄存器句法:LST #m, dma ;直接寻址, m=0:ST0, m=1:ST1LST #m, ind,Arn ; 间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; (dma) -STm;状态位:影响ST0或ST1,但不影响INTM说明:1) LST #0操作不影响ST1中的ARB位;2)LST #1操作装载ARB的同时也加载ARP;3)间接寻址操作选项中指定下1个AR的操作被忽略;4)用于子程序或中断调用现场保护;5)直接寻址时,通常选择dma在数据页0。相对应的指令有SST。举例:MAR *, AR0 LST #0,*, AR1 127; SST #0,*, AR5(7) PUSH功能:将累加器低字压入堆栈句法:PUSH执行:PC+1; ACC(15:0)-TOS;堆栈完成1次压栈操作状态位:无说明:相关的指令有POP(弹栈)。PSHD(数据压栈)、POPD(数据弹栈)举例:PUSH; POP; PSHD *, AR2 ; POPD 127;(8) RPT功能:重复下一条指令句法:RPT dma ;直接寻址RPT ind,Arn ; 间接寻址 n=07 ind:间接寻址操作选项RPT #k; ;短立即数寻址 k:8位短立即数执行:PC+1; (dma)或k-RPTC;状态位:无说明:指令重复N+1次,重复操作不可被中断打断。举例:RPT 127; RPT #80; RPT *, AR5(9) SPM功能:设定乘积输出移位模式句法:SPM m ; m=03执行:PC+1; m-ST1.PM状态位:影响PM说明:无。举例:SPM 3;(6) I/O 和存储器指令(1) BLDD功能:数据存储器空间内数据块移动句法:BLDD #lk, dma ;直接寻址, lk:16位长立即数BLDD #lk, ind,Arn ; 间接寻址 n=07 ind:间接寻址操作选项BLDD dma, #lk; BLDD ind, #lk,Arn;执行:PC+2; PC-MSTACK; lk-PC; (源)-目的; 间接寻址操作; PC+1-PC; MSTACK-PC状态位:无说明:指令之后的第一个操作数为源地址,第二个操作数为目的地址;源地址在指令执行后自动加1;该指令不能应用于存储器映射的控制寄存器,对应指令BLPD #PMA, DMA。举例:BLDD #300, 20h; BLDD *+, #300h, AR5 BLPD #300H, 20H(2) IN功能:从I/O端口读取数据句法:IN dma, IOPORT ;直接寻址, IOPORT:16位I/O端口地址IN ind, IOPORT,Arn ; 间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; IOPORT-地址A(15:0); 数据D(15:0)-dma状态位:无说明:读取外部I/O端口的数据。相对应的指令是OUT(输出数据到I/O端口)。举例:IN *, 5h OUT *, 127h; (3) SPLK功能:存储长立即数到数据存储器句法:SPLK #lk, dma;直接寻址, lk:16位长立即数 SPLK #lk, ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+2; lk- (dma); 状态位:无说明:初始化控制寄存器或数据存储器举例:SPLK 7fffh, 300h;SPLK #10h,*+,AR4;(4) TBLR功能:表格读取句法:TBLR dma;直接寻址TBLR ind,Arn;间接寻址 n=07 ind:间接寻址操作选项执行:PC+1; 然后PC-MSTACK; ACC(15:0)-PC; (pma)-dma; 间接寻址操作; PC+1-PC; MSTACK-PC状态位:无说明:把累加器低字指定地址的PM单元的数据拷贝到指令指定的DM单元,相对应的指令是TBLW(表格写入)。举例:TBLR *+;TBLW 10h;5.3常用的伪指令1 定义段的伪指令.bss:未初始化变量段,用于为未初始化的变量在.bss段内保留空间.text:程序代码段,通常用于包含可执行程序代码。.data:初始化数据段,用于包含已初始化的数据,如表格数据等。.sect:定义一个已经初始化命名的段,将代码和数据放入该段中。.usect:自定义未初始化段,在未初始化命名段内保留空间。n数据存储器段定义:n程序存储器段定义:2 初始化常数的伪指令.byte:把1个或多个8位数值放入当前段连续的字中;.word和.int:把1个或多个16位数值存储在当前段连续的字中;.long:把1个或多个32位数值存储在当前段连续的2个字中;.string:将1个或多个字符串中的8位字符存放在当前段中,一次存储两个字符,为空时放0(NULL);主要应用于初始化存储器,而不需要指令赋值。3 引用其它文件的伪指令.copy和.include:告诉汇编器开始从其他文件中读取源说明,读完之后再恢复从当前文件读取源语句,.include包含的引用文件在LIST文件中不出现(不同于.copy);.def:指示在当前模块中定义且可以被其他模块使用的符号;.ref:识别在当前模块中使用但在其它模块定义的符号;.global:声明外部符号一边在链接时可以被其它模块使用;对于已定义的符号起.def的作用,对于未定义的符号起.ref作用。4条件汇编和符号伪指令.if/.elseif/.else/.endif:指示汇编器根据表达式结果的真或假来汇编代码的某些段;.set和.equ:把常量值赋给符号;.asg:把字符串赋给替代符号(在汇编时遇到该符号时,汇编器会把常量值或字符串嵌入到汇编结果中);.end:指示汇编器中止汇编;.mmregs:定义存储器映射寄存器(页0)的全局符号名,并将它们放在全局符号表中; nFP .set #20h; FP.equ #20h; ADD FP;n.asg ar0, FP; .asg *+, INC; Mar INC, FP 5.4 头文件及命令文件n一个完整的汇编语言文件一般包含3个部分:(1)用于定义外设控制寄存器的映射地址、用户定义的端口寄存器地址和相关常量的头文件,如F2407REGS.H,用.include引用;(2)实现要DSP完成的汇编语言工程文件,扩展名为.asm;(3)用于文件链接的头文件,扩展名为.cmd,该文件实现对程序存储空间和数据存储空间的分配。1 头文件;C2xx Core Registers;IMR.set0004h; Int MaskIFR.set0006h; Int FlagWSGR.set0FFFFh ; Wait State Control (IO space mapped);Digital I/O;PADATDIR.set07098h ; I/O port A Data & DirectionPBDATDIR.set0709Ah ; I/O port B Data & DirectionPCDATDIR.set0709Ch ; I/O port C Data & DirectionPDDATDIR.set0709Eh;I/O port D Data & Direction reg.PEDATDIR.set07095h ; I/O port D Data & DirectionPFDATDIR.set07096h ; I/O port D Data & Direction;-; Constant defines;-B0_SADDR.set00200h;Block B0 start addressB0_EADDR.set002FFh;Block B0 end addressB1_SADDR.set00300h;Block B1 start addressB1_EADDR.set003FFh;Block B1 end addressB2_SADDR.set00060h;Block B2 start addressB2_EADDR.set0007Fh;Block B2 end address;External Data Space Registers;EXTDATA.set8000h宏定义n类似于一个子程序,在编译时嵌入在引用的汇编行中。n基本格式:宏名字.macro 形参1,形参2,.宏内容定义.mexit.endm;-; M A C R O - Definitions;-SBIT0.macroDMA,MASK; Clear bit MacroLACCDMAAND#(0FFFFh-MASK)SACLDMA.endmSBIT1.macroDMA,MASK; Set bit MacroLACCDMAOR#MASKSACLDMA.endmKICK_DOG.macro;Watchdog reset macroLDP#WD_KEY7SPLK#05555h,WD_KEYSPLK#0AAAAh,WD_KEY.endm2 汇编代码的格式n由汇编语言编写的程序采用ASCII码文件存储,每一行代码都包括标号、指令、操作数和注释;标号:指令 操作数 ;注释n其中,标号用来定义一行代码或变量,它代表一条指令或数据的存储地址,标号后面的冒号是可选的。标号必须满足的条件:1 标号的第一个字母必须是字母或下划线后跟一个字母;2 标号的第一个字母必须写在文件的第一列;3 标号最多可包含32个字母。n指令包括伪指令和汇编语言指令,伪指令一般用来在汇编过程中定义数据结构或控制汇编的流程,伪指令以原点开头(.);汇编语言命令是有效的CPU指令。n操作数由常数、符号和表达式构成,操作数之间必须用逗号分开。n注释用于对代码进行说明,一般应遵循:1 使用分号(;)开始时,注释可在任一列开始;2使用星号(*)开始时,注释必须从文件的第一列开始;* *axis transformationconstants*SQRT3inv.set093Dh ;1/SQRT(3) 4.12 formatSQRT32.set0DDBh ;SQRT(3)/2 4.12 formatADR_start_stack.set079h.bssKi_isd,22ext_control:ldp#ctrl_nlarar1,#Kp_isq3 命令文件n由3部分组成:1 输入输出定义:设置链接命令的输入输出文件以及链接选项 .obj文件:链接器要链接的目标文件 .lib文件:链接器要链接的库文件 .map文件:链接器生成的交叉索引文件 .out文件:链接器生成的可执行代码 链接器选项2 MEMORY命令:描述系统实际的硬件资源3 SECTIONS命令:描述“段”如何定位/*-*/* Memory Specifications */*-*/MEMORYPAGE 0: VECS: o=0000h, l=0040h /* reset&int vectors */PROG:o=0040h, l=07fc0h /* 32K prog space*/B0: o=0FF00h, l=0100h /* when CNF=1 */PAGE 1: MMRS:o=0000h, l=005Fh/* MMRS */B2:o=0060h, l=0020h/* DARAM B2 */B0B1: o=0200h, l=0200h/* DARAM B0+B1 */SECTIONS/* Program sections */vectors: VECSPAGE 0 /* Res/int vectors */.text: PROGPAGE 0 /* Code */.data: PROGPAGE 0 /* Init tables */* Variable sections */.mmrs: MMRSPAGE 1 /* Memory Mapped Regs */.bss block(0x80) B0B1PAGE 1 /* .bss variables */rmp_cntl block(0x80) B0B1PAGE 1 /* rmp_cntl variables */rampgen block(0x80) B0B1PAGE 1 /* rampgen variables */clarke block(0x80) B0B1PAGE 1 /* clarke variables */park block(0x80) B0B1PAGE 1 /* park variables */I_park block(0x80) B0B1PAGE 1 /* I_park variables */svgen_dq block(0x80) B0B1PAGE 1 /* svgen_dq variables */pwm_drv block(0x80) B0B1PAGE 1 /* pwm_drv variables */qep_drv block(0x80) B0B1PAGE 1 /* qep_drv variables */pid block(0x80) B0B1PAGE 1 /* pid regulators */ /* linker commands */-o saw_wave.out /* output file */-m saw_wave.map /* map file */ /* files to be linked */saw_wave.objvectors.obj /* use included boot object instead boot2407.obj /* of runtime support object */ /* libraries to be linked */-l rts2xx.lib /* Run Time Support */ MEMORY /* specify memory map */ PAGE 0 : /* program memory */ VECS: origin = 00000h, length = 0007Fh CODE: origin = 0c000h, length = 03fC0h PAGE 1 : /* data memory */ Regs : origin = 00000h, length = 0005Fh InRam : origin = 00060h, length = 0001Fh Ext_Ram : origin = 0C000h, length = 03FFFh /* specify sections */SECTIONS vectors : VECS PAGE = 0 .cinit : CODE PAGE = 0 .text : CODE PAGE = 0 .switch : CODE PAGE = 0 data : Ext_Ram PAGE = 1 .bss : Ext_Ram PAGE = 1 .heap : Ext_Ram PAGE = 1 .stack : Ext_Ram PAGE = 15.5 集成开发环境简介nCode Composer Studio.功能强大、开放型实时开发工具nDSP领域第一个完整的、开放型集成开发环境(IDE),直观、易用,在无需停止DSP运行,即可观察DSP的信息,具有实时分析功能n开放的环境,具有编程、编译、链接、在线调试等功能第六章TMS320LF2407 在运动控制系统中的应用 6.1 TMS320LF2407 硬件系统设计6.2TMS320LF2407 软件系统分析6.3运动控制系统设计与实现 6.1 TMS320LF2407 硬件系统设计1 电源nTI DSP上有5类典型电源引脚:1. CPU核电源引脚2. I/O电源引脚3. PLL的电路电源引脚4. Flash编程电源引脚5. 模拟电路电源引脚n将DSP上的所有电源引脚连到各自的供电电源上电源器件选型:n线性稳压器:单路输出TPS7333: 5V 3.3V 500mA ENTPS76833: 5V 3.3V 1A EN PGnCPU内核先于I/O上电,后于I/O掉电;CPU内核与I/O的供电应尽可能同时,二者时间相差不能太长(一般不能1s,否则会影响器件的寿命或损坏器件)。2 2 器件的时钟选项器件的时钟选项n大多数器件片内均包含振荡电路,只需外加晶体和2个负载电容即可产生所需的时钟信号。也可禁止片内振荡电路,直接由外部提供时钟信号nTI DSP更提供多种灵活的时钟选项:1 片内片外振荡器2 片内PLL3 PLL分频倍频系数可由硬件软件配置n不同的DSP时钟可配置的能力可能不同,使用前应参考各自的数据手册3 DSP系统外部存储电路系统外部存储电路n目标 DSP如何正确地与各种类型的存储器芯片接口n常见问题1 DSP提供的接口信号与存储器芯片所需的信号不完全一致2 对多种数据宽度访问的支持3 数据、地址线在PCB布线时的等效交换nDSP异步存储器接口控制信号nCS(存储器):直接与DSP的片选信号连接,或由DSP的片选信号和地址线译码产生nOE(存储器):直接与DSP的RD,或由STRB or (not)R/W产生nWE(存储器):直接与DSP的WE连接n常用的SRAM:CY7C1021V33-12(64K16位3.3V、12ns)CY7C1041V33-12(256K16位、3.3V、12ns)片选读写控制数据就绪PS、DS、ISSTRB、R/W、RD、WERDY4 4 电平变换电平变换n为什么需要电平变换1 DSP系统中难免存在5V/3.3V混合供电现象2 I/O为3.3V供电的DSP,其输入信号电平不允许超过电源电压3.3V3 5V器件输出信号高电平可达4.4V4 长时间超常工作会损坏DSP器件(输出信号电平一般无需变换)n电平变换的方法:1 总线收发器(Bus Transceiver):常用器件:SN74LVTH245A(8位)、SN74LVTH16245A(16位)特点:3.3V供电,需进行方向控制,延迟:3.5ns,驱动:-32/64mA,输入容限:5V;应用:数据、地址和控制总线的驱动2 总线开关(Bus Switch)常用器件:SN74CBTD3384(10位)、SN74CBTD16210(20位)特点:5V供电,无需方向控制,延迟:0.25ns,应用:适用于信号方向灵活、且负载单一的应用,如外设信号的电平变换3 2选1切换器(1 of 2 Multiplexer)常用器件:SN74CBT3257(4位)、SN74CBT16292(12位)特点:实现2选1,5V供电,无需方向控制,延迟:0.25ns,应用:适用于多路切换信号、且要进行电平变换的应用;4 CPLD:3.3V供电,但输入容限为5V,并且延迟较大:7ns,适用于少量的对延迟要求不高的输入信号;5 电阻分压:10K和20K串联分压,5V20(1020)3.3V。5 5 未未用用引脚引脚的处理的处理n未用的输入引脚不能悬空不接,而应将它们上拉或下拉为固定的电平n关键的控制输入引脚,如Ready等,应固定接为适当的状态n未用的输出引脚可以悬空不接n未用的I/O引脚1 如果缺省状态为输入引脚,则作为非关键的输入引脚处理,上拉或下拉为固定的电平2 如果缺省状态为输出引脚,则可以悬空不接6.2TMS320LF2407 软件系统分析1 基础知识nSection( “段”)概念:一块连续的储存空间,用于存放代码块或数据块;n在编程时,“段”没有绝对定位,每个“段”都认为是从0地址开始的一块连续的储存空间,所以软件只需要将不同代码块和数据块放到不同的“段”中,而无需关心这些“段”究竟定位于系统何处;n优点:便于程序的模块化编程;便于工程化管理:可将软件开发和硬件开发基本上分离开;n重定位:由于所有的“段”都是从0地址开始,所以程序编译完成后无法直接运行的,要让程序正确运行,必须对“段”进行重新定位,这个工作由链接器完成;n.cmd文件:MEMORY命令描述系统硬件资源,SECTIONS命令描述程序中用到的“段”如何定位到恰当的硬件资源上。2 DSP汇编语言:SECTION伪指令n5个SECTION伪指令.bss symbol,size in word;.text;.data.sect “section name”symbol .usect “section name”,size in word其中symbol相当于变量名,size in word保留的存储单元长度(以字为单位) .bss和.usect为未初试化段,用于为变量、堆栈等保留一块存储空间 .text、.data和.sect为初试化段,用于存放代码块或有初值的数据块n系统定义的段和用户定义的段 .text、.data和.bss为系统已定义好的段名 用户根据需要用. sect和.usect伪指令来定义段名,创建相应的“段”n汇编程序中,程序员用“段”伪指令来组织程序的代码和数据3 DSP汇编语言:汇编器对汇编语言:汇编器对“段段”的处理的处理u 汇编器第一次遇到新“段”时,将该“段”的段程序计数器(SPC)置为0,并将随后的程序代码或数据顺序编译进该“段”中u 汇编器遇到同名“段”时,将它们合并,然后将随后的程序代码或数据顺序编译进该“段”中u 当汇编器遇到.text、.data和.sect伪指令时,汇编器停止将随后的程序、代码或数据顺序编译进当前“段”中,而是顺序编译进遇到的“段”中u 当汇编器遇到.bss和.usect伪指令时,汇编器并不结束当前“段”,而只是简单地暂时脱离当前“段”,随后的程序代码或数据仍将顺序编译进当前“段”中。n.bss和.usect伪指令,可以出现在.text、.data或.sect“段”中的任何位置,它们不会影响这些“段”的内容4 DSP汇编语言:链接器对汇编语言:链接器对“段段”的处理的处理u 链接器对“段”的处理有2个方面: 将输入“段”组合产生输出“段” v 将多个.obj文件中的同名“段”合并一个输出“段” v 也可将不同名的“段”合并产生一个输出“段” 将输出“段”定位到实际的存储空间中 v MEMORY命令:用于扫描系统实际的硬件资源 v SECTIONS命令:用于描述程序中定义了哪些“段”,这些“段”是否需要合并?如何合并?合并产生的输出“段”定位到实际硬件资源的何处?u 链接器通过.cmd文件来获得上述这些信息u 链接器还将检查各输出“段”是否重叠、是否超界,避免了人工检查边界带来的隐患n目标文件地址是浮动的,能被重定位nu 链接器用.cmd文件对链接目标,进行重定位 列出目标文件、库文件和链接器选项 用MEMORY命令描述目标系统存储空间配置 用SECTIONS命令描述“段”如何定位nHex转换程序也使用.cmd文件,配置转换选项5 用ASM或ASM和C混合编程u 编写硬件资源头文件 DSP片内寄存器资源头文件 v 描述片内寄存器地址 v 描述片内寄存器控制状态位域 板上资源头文件 v 描述片外外设寄存器地址 v 描述片外外设寄存器控制状态位域u 编写应用专用的外设驱动程序 片内片外外设初试化程序 片内片外外设操作程序u 编写应用专用的算法u 编写主控程序顺序、循环执行6.3运动控制系统设计与实现1 运动控制系统2 常规的PID控制算法3 永磁同步电机(PMSM)控制系统设计举例1 运动控制系统1.1 概述1 什么是运动控制?控制目标是:位置 速度 加速度 转矩2 运动控制系统的基本组成n运动控制器(motion controller)输入信息:存储的程序命令;通过串行接口或现场总线网络发送的命令;输出信息:+/-10V模拟指令或是5V TTL电平的脉冲指令;n驱动/放大器输入信息: +/-10V模拟指令或是5V TTL电平的脉冲指令。输出信息:激励电机绕组的可控换向电流信号。n电机输入信息:激励电机绕组的电流。输出信息:旋转或直线运动n机构输入信息:来自电机的旋转或直线运动;输出信息:特定的机械运动。n反馈输入信息:光电编码器的脉冲;旋转变压器的位置输出信号:差动信号或模拟位置信号n运动控制的理论基础 闭环反馈调节控制理论n运动控制的算法设计方法 经典控制理论:传递函数的时域和频域分析方法、根轨迹、波特图、极点配置等; 现代控制理论:状态观测器、状态变量控制器、模糊控制等2 常规PID控制算法实现n传递函数n离散形式(后向差分或双线性变换)n离散化算式n防积分饱和(Anti-Windup)PI控制算法n算法实现考虑(1)了解所有变量的变化范围,已确定参数和变量的先验知识;(2)确定参数和变量的定标范围和舍入误差分析;(3)选择控制算法的采样周期一般对于PI控制算法:Ts/Ti temp variablelttemp;load T register mpySQRT3inv ;multiply T reg. with sqrt(3)pac;store result in accumulatorsachibeta;store accumulator in ibetaPARK变换的数学表变换的数学表达(达(3/2变换)变换) 比例积分(PI)算法MAR*,AR3 ;Aux Reg InitLARAR3,#0300HLDP#speed_REF ;Data Page Pointer;Speed Error ComputationLACCspeed_REFSUBspeed ;ACC= Speed error;PI regulatorSACL*+ ;#0300h=EkSUB*+ ;ACC =Ek - Ek-1SACL* ;#0302h=Ek - Ek-1LT*- ;TREG =Ek - Ek-1MPY#Kp ;PREG =Kp(Ek - Ek-1) LTP*- ;ACC =Kp(Ek - Ek-1) ;TREG =Ek-1MPY#Ki ;PREG =KiT*Ek-1LTD* ;#0301h=Ek ;ACC= Kp(Ek - Ek-1)+ ADDCOMP,4 KiT*Ek-1SACLCOMPLACCCOMP,12SACHCOMP ;COMP=SkSpeedReference wrefNumerical PI algorithm:SpeedFeedback wEkSk增量式光电编码器光栅光栅光栅光栅按按按按1/41/4光栅距离分布的光传感器光栅距离分布的光传感器光栅距离分布的光传感器光栅距离分布的光传感器光源光源光源光源 ( (LED)LED)shaft rotationshaft rotationCh. ACh. ACh. BCh. Bq q q qq q q q/4/4Ch. ACh. ACh. BCh. BT2CNT.set7405h;set Timer2 register.bssposition, 1;init variable.text;register configurationldp#DP_EV;load event manager DPsplk#0000h,T2CNT;configure counter registersplk#fffh,T2PER;configure period registersplk#9870h,T2CON;conf. QEP, enable timer2splk#070f4h,CAPCON ;T2 is Time base for QEP;position reading from timer2LDP#T2CNT7 ;load timer2 data pageLACCT2CNT;ACC = Timer2 LDP#position;load varible data pageSACLposition;position = timer2电流检测T1T2T3T4T6T5ACRCcellFeedbackgainADCModulesampleresistorOver currentprotection;Conversion results handlingLDP#0E0hCLRCSXMLACCresault0,10SETC SXMLDP#CONV1SACHCONV1;ADC Unit setting ldp #DP_PF2splk #4000h,ADCCTRL1 ;clear ADCnopnopsplk #1610h,ADCCTRL1 ;cascaded;prescaler 14*clksplk #000fh,MAXCONVsplk #2222h,CHSELSEQ1splk #0000h,CHSELSEQ2splk #0302h,ADCCTRL2;EVA start ADC;Core Mask Settingldp#0hlacc#0FFhsaclIFRlacc#00011011bsaclIMRHall sensor空间矢量PWM调制ABCA_B_C_VaVbVcMotorVy = V.sin(a)Vx = V.sin(60-a)Vz = (000)Vz= (111)Zero VectorsV0 (100)V60 (110)V120 (010)V180 (011)V240 (001)V270 (101)S1S2S3S4S5S6VyVxarVCmp Value 1Cmp Value 2ABCV120V60V60V120(010)(011)(111)(011)(111)(010) 一种PWM调制方式 可以由F2407 硬件实现 逆变器最大输出电压利用率可以提高15 减小逆变器开关损耗系统特性和性能660700131001200MIPSRAMROMSensoredSensorless 50m ms采样周期内实现矢量变换控制和电流采样周期内实现矢量变换控制和电流调节调节 250m ms 周期内实现速度检测和调节周期内实现速度检测和调节良好的动态性能良好的动态性能 可以实现弱磁控制可以实现弱磁控制 用户人机接口用户人机接口系统和DSP的性能评价磁场定向控制很好的动态性能实现高效的瞬态控制弱磁控制扩展速度控制范围电流检测 高速的转矩调节位置反馈 / F240x 硬件可以和具有QEP 接口特点的编码器相连无速度传感器控制减少位置传感器实时控制增加可靠性实现电机和负载的故障在线监测空间矢量 PWM 发生器提高电磁兼容性减少系统成本参考文献:nSPRU018D TMS320C1x/C2x/C2xx/C5x Assembly Language Tools Users GuidenSPRU160C TMS320F/C24x DSP Controllers CPU and Instruction SetnSPRU357B TMS320LF/LC240xA DSP Controllers System and PeripheralsnSPRU424C TMS320 DSP Algorithm Standard Developers GuidenSPRA701 A Software Modularity Strategy for Digital Control Systems
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号