TMS320LF2407 实现空间矢量PWM c代码

合集下载

基于TMS320LF2407的SVPWM变频调速控制

基于TMS320LF2407的SVPWM变频调速控制

嚣 3 9
I Keyw o r ¥: pace d S Vect r uI o P se W i h M odul i dt at on: D i t . gis I Si gnaI Pr ocesso ; equency r Fr C onver on si Speed M odul on ati

要 : 绍 了空 间 矢量 脉 宽调 制 ( 介 SVP WM)的 基 本 原 理 ,利 用 TI的 DSP电 机 控 制 芯 片
T S 20 F 4 7实 现 S P M,对 交 流 电 机 进 行 变 频 调 速 。 M3 L 2 0 M W
关 键 词 :空 间 矢 量 脉 宽 调 制 ;数 字 信 号 处 理 器 ; 频 调 速 变
☆ R H “ m ”
验 室 S 气 体 腐 蚀 24小 时 后 ,其 表 O 面 所 反 应 的微 孔 状 况 与 长 期 自然 暴
露 于 地 点 A为 期 3个 月 的 样 片 表 而 情 况 相 近 ,因 此 得 出 实 验 室 模 拟 环 境 实 验 与 地 点 A所 对 应 的 加 速 凶 子 约 为 90倍 。
m et hod of eal ng SV PW M by r i zi T Is ’ DS P m ot cont oIe r T M S320LF2407 f r or r l o r f equency
conMer on si speed m odul i cent eI aton r of aler t nat ng cur ent i r m achi i ne s al so i r nt oduced.
* 雄 | } 哗 碍
TMS320LF2407 实 现 了 空 间 矢 量

TMS320LF2407代码

TMS320LF2407代码
//禁止接收错误中断,TXWAKE=0即没有选定的发送特征
SCICTL2=0X3;//使能接收和发送中断
SCIHBAUD=0X2;
SCILBAUD=0X70;//波特率=4800 b/s
SCICTL1=0X33;//使SCI脱离复位状态
SCIPRI=0X6O;//SCI中断(接收和发送中断)为低优先级中断
MCRA=0X3;
PADATDIR=0X100;
IMR=0X10;//使能UART中断INT5
enable();
SCITXBUFห้องสมุดไป่ตู้?
while(1);
}
void UartSent() //发送服务中断
{
const char *var="F2407 UART is fine!";
} //等待中断的发生
T4CON=T4CON&0x0FFBF;//停止定时器4,即间接停止A/D转换
while(1)
{
;
}
}
5.PWM模块
#include<register.h>
void inline disable()
{
asm("setc INTM");
}
void interrupt uarttr()//中断服务程序
{
switch(*PVIR)//根据中断向量寄存器PVIR的值区别是接收还是发送中断
{
case 6: UartRec();//如果PIVR=6,则发生接收中断,执行接收服务中断
case 7: UartSent();//如果PIVR=7,则发生发送中断,执行发送服务中断

基于TMS320LF2407A的直流电机调速系统的设计

基于TMS320LF2407A的直流电机调速系统的设计

引言现代化建设离不开机械,而机械运转的动力很多是由电机提供的,这主要包括了直流电机和交流电机两种,虽然交流电机的发展将最终取代直流电机,但直流电机还将在很长一段时间里一直占据重要地位。

直流电动机具有良好的启动、制动性能,宜于在大范围内平滑调速,在许多需要调速和快速正反向的电力拖动领域中得到了广泛地应用。

特别是如轧钢机、龙门刨床和高精度机床等传动中,直流电机都占主要地位。

1、直流电机概述1.1直流电机调速方法定子励磁绕组通过直流电流I时产生励磁磁势F和主磁通。

电枢绕组通过电枢电流I,则产生电枢反应磁势F。

由于直流屯机的电刷在几何中线AB上,因此励磁磁势F 与电枢反应磁势F。

正交。

通常直流电机在其主磁极上加有补偿绕组,电枢反应磁势对主磁通没有影响。

直流电机电枢绕组中的电流I。

与定子主磁通相互作用,产生电磁力和电磁转矩,电枢因而转动。

这种机理使直流电动机具有良好的转矩控制特性,从而有优良的转速调节性能。

因此,调速方法三种:(1)调节电枢供电电压u改变电枢电压主要是从额定电压往下降低电枢电压,从电动机额定转速向下变速,属恒转矩调速方法.对于要求在一定范围内无级平滑调速的系统来说,这种方法最好。

I变化遇到的时间常数较小,能快速响应,但是需要大容量可调直流电源。

(2)改变电动机主磁通西改变磁通可以实现无级平滑调速,但只能减弱磁通,从电动机额定转速向上调速,属恒功率调速方法。

I变化时遇到的时问常数同I变化遇到的相比要大得多,响应速度较慢,但所需电源容量小。

(3)改变电枢回路电阻R在电动机电枢回路外串电阻进行调速的方法,设备简单,操作方便.但是只能有级调速,调速平滑性差,机械特性较软:空载时几乎没什么调速作用;在调速电阻上消耗大量电能。

改变电阻调速缺点很多,目前很少采用,仅在有些起重机、卷扬机及电车等调速性能要求不高或低速运转时间不长的传动系统中采用。

弱磁调速范围不大,往往是和调压调速配合使用,在额定转速以上作小范围的升速。

基于TMS320LF2407的智能断路器的CAN通信设计

基于TMS320LF2407的智能断路器的CAN通信设计

1.引言短路器是一种量大面广的重要的低压配电电器,其作用是分配电能和保护电器配电网络和工业设备免受短路、过载、欠电压和接地故障电流的破坏。

随着计算机技术、微电子技术、数字处理技术的发展,断路器逐渐趋向自动化、智能化、模块化、小型化。

为了使供电系统中的多台智能型断路器实现联网通信、集中监控,开发适应多种现场总线的科通信低压电器已经成为一个重要的发展趋势。

目前,我国也正致力于开发国产第四代断路器——智能化、可通信断路器,其主要特征是在智能化的基础上具备现场总线的可通信特点。

DSP(Digital Signal Processors)是一种独特的微处理器,是以数字信号来处理大量信息的器件。

其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。

它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。

它的强大数据处理能力和高运行速度,是最值得称道的两大特色。

本文介绍基于TMS320LF2407DSP的智能断路器的CAN通信设计,可实现远距离遥控、遥调、遥测、遥讯等“四遥”功能,并能显示、记忆、监控。

TMS320C2XX是继TMS320C2X和TMS320C5X之后出现的一种低价格、高性能定点DSP芯片,主要包括TMS320C20X、TMS320C24X两个子系列。

而DSPTMS320LF240x是TMS320C2000家族中相对较新的,功能强大的芯片。

2.硬件的总体结构、工作原理及CAN总线的作用2.1 智能断路器的结构与原理智能断路器的原理如下:电流传感器采集三相电流和地线电流,送入信号调理电路进行滤波、放大,输出两路信号。

一路送往DSP的A/D接口,微处理器对信号进行数字转换、计算和判断;另一路送往模拟脱扣检测电路,当发生严重短路情况时,将直接驱动脱扣电路跳闸。

(完整word版)数字信号控制器TMS320LF2407中文详细资料(纯手打)

(完整word版)数字信号控制器TMS320LF2407中文详细资料(纯手打)

(完整word版)数字信号控制器TMS320LF2407中⽂详细资料(纯⼿打)数字信号控制器TMS320LF2407DSP芯⽚,也称数字信号控制器,是⼀种具有特殊结构的微处理器。

DSP芯⽚内部采⽤程序和数据分开的哈佛结构,具有专门的硬件乘法器,⼴泛采⽤流⽔线操作,提供特殊的DSP指令,可以快速实现各种数字信号处理算法。

TMS320LF2407芯⽚是TI公司 TMS320系列中的⼀种 16 位定点DSP芯⽚, 是⽬前应⽤最为⼴泛的芯⽚。

基于TMS320C2xxDSP的CPU核结构设计提供了低成本、低功耗、⾼性能的处理能⼒,对电机的数字化控制⾮常有⽤。

同时,⼏种先进的外设被集成到该芯⽚内,形成了真正意义上的数字控制器。

⼀、2407的基本特点和资源配置LF2407 DSP具有TMS320系列DSP的基本功能之外,还有其⾃⾝特点:采⽤⾼性能静态CMOS技术,使得供电电压降为3.3V,减⼩了控制器的功率损耗;30MIPS的执⾏速度是的指令周期缩短到33ns(30MHZ),从⽽提⾼控制器的实时控制能⼒;基于TMS320C2XX DSP的CPU内核保证了TMS320LF2407DSP代码和TMS320系列DSP代码兼容;⽚内有⾼达32K字×16位的Flash程序存储器;⾼达2.5K×16位的数据/程序RAM;2K 字的单⼝RAM;SPI/SCI引导ROM;两个事件管理模块EVA和EVB,每个均包括如下资源:两个16位通⽤定时器;8个16位的脉宽调制通道(PWM),可以实现三相反相器控制、PWM的中⼼或边缘校正、当外部引脚\PDPINTX出现低电平时快速关闭PWM通道;防⽌击穿故障的可编程的PWM死去控制;对外部事件进⾏定时捕获的3个捕获单元;⽚内光电编码器接⼝电路;16通道的同步ADC转换器。

可扩展的外部存储器具有192K×16位空间,分别为64K字程序存储空间,64K字的数据存储空间和64K字的I/O存储空间;看门狗(WD)定时器模块;10位的ADC转换器,其特性为:最⼩转换时间为500ns,16个多路复⽤的输⼊通道、可选择两个事件管理器来触发两个8通道输⼊ADC转换器或⼀个16通道输⼊的A/D转换器;基于锁相环(PLL)的时钟发⽣器;⾼达41个可单独编程或复⽤的通⽤输⼊输出引脚(GPIO);5个外部中断(两个驱动保护、复位和两个可屏蔽中断);电源管理,具有3种低功耗模式,能够独⽴的将外围器件转⼊低功耗⼯作模式;⼆、数字和混合信号的外设●事件管理器;●CAN(Controller Area Network),即控制器区域⽹;●串⾏通信接⼝(SCI)和16位串⾏外部设备接⼝(SPI);●模数转换器(ADC);●系统保护,例如低电压保护和看门狗定时器。

TMS320LF2407中断系统分析及C语言编程

TMS320LF2407中断系统分析及C语言编程

图2 ’ LF2407 的中断机制
1. 3 ’ LF2407 的中断处理过程 NMI ,TRAP 这三条指令引起 。由 RS ( 复位) 引脚引起的
’ LF2407 对中断处理分三个阶段 。 第一阶段 : 接受中断请求 。 当发生硬件和软件指令请求中断时 , CPU 的 IFR 中相应标志位置成 1 。 软件 中 断 都 是 由 程 序 是 中 的 指 令 — — — TNTR K,
断包括 : 通用定时器的周期事件中断 、 通用定时器的比 较事件中断 、 通用定时器的溢出事件中断 、 单比较中 断、 全比较中断 、 捕获中断和电源驱动保护中断 。系统
收稿日期 :2005 - 02 - 03
量地址 ,当某个外设中断发出了请求信号 , 会自动地将 该中断的偏移地址写入到外设中断向量寄存器 ( PIVR) 中 。这样一来 ,当进入到了 CPU 内核中的通用服务程
参考文献 :
[1 ] TMS320LF/ LC240xA DSP Controllers System and Peripherals Reference Guide[J ] . Texas Instruments , April 20011 [2 ] 刘和平 ,王维俊 ,江渝 , 等 . TMS320LF240x DSP C 语言开发
是立即响应的 。而对于可屏蔽中断 , 只有满足以下条 件才能响应 : ( 1) 优先级别最高 ( 当同时出现一个以上 中断时) ; ( 2) STl 中的 INTM 位为 0 ; ( 3) IMR 中的相应位 为 1。
CPU 响应中断时 , 让 PC 转到适当的地址取出向
程时 ,首先要用汇编语言建立中断向量表 , 用它来提供 给程序的入口地址和各中断源的入口地址 。当中断发 生后 ,CPU 将停止当前执行的程序 , 而转到中断服务向 量表以执行相应的中断服务程序 。其中断向量表程序 的示例如下 。

数字信号控制器TMS320LF2407中文详细资料(纯手打)

数字信号控制器TMS320LF2407中文详细资料(纯手打)

数字信号控制器TMS320LF2407DSP芯片,也称数字信号控制器,是一种具有特殊结构的微处理器。

DSP芯片内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以快速实现各种数字信号处理算法。

TMS320LF2407芯片是TI公司 TMS320系列中的一种 16 位定点DSP芯片, 是目前应用最为广泛的芯片。

基于TMS320C2xxDSP的CPU核结构设计提供了低成本、低功耗、高性能的处理能力,对电机的数字化控制非常有用。

同时,几种先进的外设被集成到该芯片内,形成了真正意义上的数字控制器。

一、2407的基本特点和资源配置LF2407 DSP具有TMS320系列DSP的基本功能之外,还有其自身特点:➢采用高性能静态CMOS技术,使得供电电压降为3.3V,减小了控制器的功率损耗;30MIPS的执行速度是的指令周期缩短到33ns(30MHZ),从而提高控制器的实时控制能力;➢基于TMS320C2XX DSP的CPU内核保证了TMS320LF2407DSP代码和TMS320系列DSP代码兼容;➢片内有高达32K字×16位的Flash程序存储器;高达2.5K×16位的数据/程序RAM;2K 字的单口RAM;➢SPI/SCI引导ROM;➢两个事件管理模块EVA和EVB,每个均包括如下资源:两个16位通用定时器;8个16位的脉宽调制通道(PWM),可以实现三相反相器控制、PWM的中心或边缘校正、当外部引脚\PDPINTX出现低电平时快速关闭PWM通道;防止击穿故障的可编程的PWM死去控制;对外部事件进行定时捕获的3个捕获单元;片内光电编码器接口电路;16通道的同步ADC转换器。

➢可扩展的外部存储器具有192K×16位空间,分别为64K字程序存储空间,64K字的数据存储空间和64K字的I/O存储空间;➢看门狗(WD)定时器模块;➢10位的ADC转换器,其特性为:最小转换时间为500ns,16个多路复用的输入通道、可选择两个事件管理器来触发两个8通道输入ADC转换器或一个16通道输入的A/D转换器;➢基于锁相环(PLL)的时钟发生器;➢高达41个可单独编程或复用的通用输入输出引脚(GPIO);➢5个外部中断(两个驱动保护、复位和两个可屏蔽中断);➢电源管理,具有3种低功耗模式,能够独立的将外围器件转入低功耗工作模式;二、数字和混合信号的外设●事件管理器;●CAN(Controller Area Network),即控制器区域网;●串行通信接口(SCI)和16位串行外部设备接口(SPI);●模数转换器(ADC);●系统保护,例如低电压保护和看门狗定时器。

TMS320LF2407配置代码

TMS320LF2407配置代码
{
case 0x0001:
motor();
break;
case 0x0002:
change_up();
break;
case 0x0003:
change_dn();
break;
case 0x0004:
break;
default:
break;
}
*EVAIFRA|=0x0080;
*EVBIFRA = 0xFFFF; /* clear all EVB group A interrupts */
*EVBIFRB = 0xFFFF; /* clear all EVB group B interrupts */
*EVBIFRC = 0xFFFF; /* clear all EVB group C interrupts */
*CMPR3=0x03e8; /*决定 PWM5,PWM6 占空比*/
*ACTRA=0x0300; /*决定 PWM5 和 PWM6 的极性,都为强制高*/
*T1CON|=0x0040; /*允许 T1 操作*/
break;
}
case 0x0070:
{
/*按下 IOPA3,K2 闭合*/
s=0x0002; /*“正转”标志位*/
*T1CON|=0x0040; /*允许 T1 操作*/
break;
}
case 0x0058:
*IFR=0x0ffff; /*清除所有中断标志*/
WSGR=0x0ffff; /*不使能所有的等待状态*/
*EVAIMRA = 0x0000; /* enable desired EVA group A interrupts */
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用TMS320LF2407实现空间矢量PWM(SVPWM)
利用TMS320LF240x实现SVPWM算法的程序
下面给出了利用TMS320LF2407实现SVPWM算法的一个应用程序。

在该程序中,我
平均分布在电角度为2π的范围内,通过改变SVPWM的调们假设有200个电压矢量U
out
制周期T可以改变输出的3相正弦波的频率。

源程序代码:
(1)所需的复位和中断矢量定义文件“vectors.asm”请读者参考本书相关章节。

(2)主程序
// 该程序用于简单的SVPWM演示,产生3相互差120度电角度的正弦交流电压,此程序实
// 时计算cmp1和cmp2的值
#include "register.h"
#include "float.h"
#include "math.h"
float ualfa[200],ubeta[200];// 存储电压矢量Uout的(α,β)轴分量ualfa、ubeta的数组int sector[200];// 定义存储扇区数的数组
#define PI2 2*3.1415926 // 定义2π的值
#define DETA PI2/200 // 定义相临两个Uout之间的电角度的差值
#define INIA 3.1415926/180 // 定义Uout的初始电角度
#define TP 1200 // t1的周期寄存器的值,其值等于SVPWM调制周期T的一半,
// 因为在该程序中2π电角度内Uout的点数一定,故改变此值
// 可以改变输出的3相正弦交流电压的频率
#define KP 0.7 // 定义Uout的标幺值,KP的值在0和1之间,改变此值可以
// 改变逆变桥输出电压的幅值
// 屏蔽中断子程序
void inline disable()
{
asm(" setc INTM");
}
// 系统初始化子程序
viod initial()
{
*IFR=0xFFFF;// 清除所有的中断标志
*IMR=0X0;// 屏蔽所有中断
*SCSR1=0x81FE;// CLKIN=6M,CLKOUT=24M
*WDCR=0xE8;// 不使能看门狗
325
*T3PER=TP;// 通用定时器1的周期=PWM的周期/指令周期/2
*T3CON=0X0802;// 设置通用定时器1为连续增减模式,以产生对称的PWM,
// 且为了便于调试,使仿真一挂起时时钟就停止运行*ACTRB=0X666;// PWM7、9、11高有效,PWM8、10、12低有效
*COMCONB=0X9200;// 使能PWM输出和比较动作
*EVBIMRA=0X00;// 禁止EVB和时钟及比较有关的中断
*T3CNT=0X00;// T1的计数器清0
*EVBIFRA=0x0FFFF;// 清除EVB相应的中断标志
*MCRC=*MCRC|0X7E;// PWM7-PWM12输出使能,使能IOPE1-IOPE6第二功能
WSGR=0x0000;// 不使能所有的等待状态
}
// 根据Uout的标幺值KP计算ualfa,ubeta子程序
void calu()
{
int i;
for(i=0;i<200;i++)
{
ualfa[i]=KP*cos(INIA+i*DETA);
ubeta[i]=KP*sin(INIA+i*DETA);
}
}
// 各点的扇区确定子程序
void SECTOR()
{
int i,a,b,c;
float vref1,vref2,vref3;
for(i=0;i<200;i++)
{
vref1=ubeta[i];
vref2=(-ubeta[i]+ualfa[i]*1.732051)/2;
vref3=(-ubeta[i]-ualfa[i]*1.732051)/2;// 计算确定扇区数需要的3个参考量
// vref1、vref2、vref3
if(vref1>0) a=1;
else a=0;
if(vref2>0) b=1;
else b=0;
if(vref3>0) c=1;
326
else c=0;
a=4*c+2*b+a;
switch(a){
case 1:sector[i]=1;break;
case 2:sector[i]=5;break;
case 3:sector[i]=0;break;
case 4:sector[i]=3;break;
case 5:sector[i]=2;break;
case 6:sector[i]=4;break;
default:break;
} // 根据相应的关系确定各个Uout所在的扇区}
}
// 主程序
main()
{
int anticlk[6]={0x1666,0x3666,0x2666,0x6666,0x4666,0x5666};
// 逆时针旋转的6个基本矢量
int i,k=0,cmp1,cmp2;
float x,y,z;
disable();// 屏蔽所有中断
initial();// 系统初始化
calu();// 计算ualfa,ubeta的值
SECTOR();// 确定各点的扇区,在实际应用时应该由即时
// 的ualfa和ubeta即时算出
while(1) {
for(i=0;i<200;i++) {
*ACTRB=anticlk[sector[i]];// 重新装配ACTRA
x=ubeta[i];
y=(1.732051*ualfa[i]+ubeta[i])/2;
z=(-1.732051*ualfa[i]+ubeta[i])/2;// 以上3句计算3个相应的参考量
switch(sector[i]) {
case 0 :cmp1=(int)(-z*TP),cmp2=(int)(x*TP);break;
case 1 :cmp1=(int)(y*TP),cmp2=(int)(z*TP);break;
case 2 :cmp1=(int)(x*TP),cmp2=(int)(-y*TP);break;
case 3 :cmp1=(int)(z*TP),cmp2=(int)(-x*TP);break;
case 4 :cmp1=(int)(-y*TP),cmp2=(int)(-z*TP);break;
case 5 :cmp1=(int)(-x*TP),cmp2=(int)(y*TP);break;
327
default :break;
} // 以上根据uout所处的扇区计算相应的cmp1和cmp2的值
*CMPR4=cmp1;// 比较寄存器4赋值
*CMPR5=cmp1+cmp2;// 比较寄存器5赋值
if((i+k)==0) *T3CON=*T3CON|0X040; // 启动定时器,只启动一次
while(1) {
k=*EVBIFRA&0X0200;
if(k==0x0200) break;// 如果T3的中断标志建立,则停止等待
}
}
}
}
// 如果由于干扰引起中断,则执行此直接返回程序
void interrupt nothing()
{
return;
}
328。

相关文档
最新文档