//#########################################################
//
// FILE: pfc100a_main.c
//
// TITLE: DSP280x pfc100a main Functions.
//
//#########################################################
// Running on TMS320LF280xA PFC part h741Au1(1.00)
// External clock is 20MHz, PLL * 10/2 , CPU-Clock 100 MHz
// Date: from May 23, 2005 to Oct 30, 2006 , (C) www & mhp & lsy & lyg
// Version:1.00 Change Date: May 24, 2005 , (C) www & mhp & lsy & lyg
// Version:1.00.01 Change Date: Aug 24, 2006 , (C) czk
// Version:1.00.02 Change Date: Dec 31, 2007 , (C) czk
//#########################################################
#include "DSP280x_Device.h" // DSP280x Headerfile Include File
#include "pfc100a_main.h"
#define cPfcFirmwareVer 0x0304 //hsr/20120726 add , PFC固件版本号 1.01
//hsr/20120628 add begin
unsigned int uiFanRatio;
float fFanRatio_Temp;
float fFanRatio_Curr;
//Uint16 LxkBoostState = 1;
//hsr/20120628 add end
Uint32 uFant = 0;
Uint16 uiVoltAcPhase = 0; //hsr/20120814
Uint32 udwTemp = 0; //hsr/20120814
Uint16 ucFanFaultCount=0;
Uint16 ucFanFaultBackCount=0;
extern signed int uiACYYa;
extern signed int uiACYYb;
extern signed int uiACYYc;
unsigned char uiFlagLostAC=0;
unsigned char uiNeedFanFlag=0;
Uint32 FanCnt=2400;
unsigned char uiVoltUpOverCount=0;
unsigned char uiVoltDnOverCount=0;
unsigned char uiVoltBlaneOverCount=0;
void (*p_SoftStart)(void) = 0;
void (*p_AdcTrement)(void) = 0;
void (*p_IoPortCtrl)(void) = 0;
//用于 模式识别的数据结构
struct IptModeIdentify_Stru
{
//过零次数ZeroCrossingCounter
unsigned int a_ZCC;
unsigned int b_ZCC;
unsigned int c_ZCC;
unsigned int a_state;
unsigned int b_state;
unsigned int c_state;
unsigned int b_OVT;
unsigned int c_OVT;
//系统输入模式 1=交流模式 2=直流模式
unsigned int SysInputMode;
}IptModeIdentifyData;
//数据初始化
void Identification_Init();
//模式识别
void ModeIdentification();
void pfcDataInit(void);
void boostDataInit(void);
void pfcStartCtrl(void);
void boostStartCtrl(void);
void pfcIoPortCtrl(void);
void boostIoPortCtrl(void);
void pfcAdcTreatment(void);
void boostAdcTerment(void);
unsigned int VsetMin = 50;
unsigned long InputCurMax = 0;
unsigned int FanPwm = 0;
static const Uint16 aucCRCHi[] =
{
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40
};
static const unsigned char aucCRCLo[] =
{
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,
0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,
0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9,
0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC,
0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32,
0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D,
0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38,
0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF,
0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1,
0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4,
0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB,
0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA,
0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0,
0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97,
0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E,
0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89,
0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83,
0x41, 0x81, 0x80, 0x40
};
Uint16 usMBCRC16( unsigned char * pucFrame, Uint16 usLen )
{
Uint16 ucCRCHi = 0xFF;
unsigned char ucCRCLo = 0xFF;
Uint16 iIndex;
while( usLen-- )
{
iIndex = ucCRCLo ^ *( pucFrame++ );
ucCRCLo = ( unsigned char )( ucCRCHi ^ aucCRCHi[iIndex] );
ucCRCHi = aucCRCLo[iIndex];
KickDog();
}
return ( Uint16 )( ucCRCHi << 8 | ucCRCLo );
}
void main(void)
{
InitSysCtrl();
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); //czk061020 Flash->RAM
InitFlash();
InitGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.SEQ1INT = &Identification_Isr; //ADC 中断
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx1= 1;
InitPeripherals();
EPwm1Regs.AQCSFRC.all = 0x05; //PWM1A,PWM1B force low
EPwm2Regs.AQCSFRC.all = 0x05; //PWM2A,PWM2B force low
GpioDataRegs.GPACLEAR.bit.GPIO6 = 1;
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
IER |= M_INT1;
EINT;
ERTM;
//模式识别部分数据初始化
entry: Identification_Init();
ModeIdentification();
DINT;
IER = 0x0000;
if(0x4F75 == IptModeIdentifyData.SysInputMode)
{
GpioDataRegs.GPATOGGLE.bit.GPIO11 = 1;//直流指示灯
boostDataInit();
EALLOW;
PieVectTable.SEQ1INT = &boostMode_Isr;
EDIS;
PieCtrlRegs.PIEIER3.bit.INTx3 = 0; //czk060906
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
IER |= M_INT1;
}
else if(0x7D5C == IptModeIdentifyData.SysInputMode) //交流模式
// else
{
GpioDataRegs.GPASET.bit.GPIO6 = 1; //交流指示灯
pfcDataInit();
vLimitInit();
EALLOW;
PieVectTable.EPWM3_INT = &pfc_isr;
EDIS;
PieCtrlRegs.PIEIER3.bit.INTx3 = 1; //czk060906
没有合适的资源?快使用搜索试试~ 我知道了~
基于DSP的三相维也纳PFC控制代码
共100个文件
h:24个
obj:20个
d:15个
需积分: 49 179 下载量 50 浏览量
2019-03-21
20:38:24
上传
评论 18
收藏 300KB RAR 举报
温馨提示
该代码是基于DSP TMS320F2806控制的维也纳PFC控制代码,可以实际使用的
资源推荐
资源详情
资源评论
收起资源包目录
基于DSP的三相维也纳PFC控制代码 (100个子文件)
DSP280x_CodeStartBranch.asm 3KB
DSP280x_usDelay.asm 3KB
DSP280x_CSMPasswords.asm 3KB
DSP280x_DisInt.asm 2KB
DSP280x_DBGIER.asm 959B
pfc100a_main.c 112KB
pfc100a_isr.c 41KB
DSP280x_EPwm.c 18KB
DSP280x_GlobalVariableDefs.c 11KB
DSP280x_SysCtrl.c 10KB
DSP280x_PieVect.c 8KB
DSP280x_Sci.c 5KB
DSP280x_CpuTimers.c 4KB
DSP280x_Gpio.c 4KB
DSP280x_I2C.c 4KB
DSP280x_DefaultIsr.c 3KB
DSP280x_Adc.c 3KB
DSP280x_PieCtrl.c 2KB
DSP280x_MemCopy.c 2KB
DSP280x_InitPeripherals.c 1KB
.ccsproject 565B
NewTargetConfiguration.ccxml 969B
DSP280x_Headers_nonBIOS.cmd 8KB
F2801.cmd 6KB
.cproject 22KB
DSP280x_GlobalVariableDefs.d 3KB
DSP280x_InitPeripherals.d 3KB
pfc100a_main.d 3KB
DSP280x_DefaultIsr.d 3KB
DSP280x_CpuTimers.d 3KB
pfc100a_isr.d 3KB
DSP280x_PieVect.d 3KB
DSP280x_MemCopy.d 3KB
DSP280x_SysCtrl.d 3KB
DSP280x_PieCtrl.d 3KB
DSP280x_EPwm.d 3KB
DSP280x_Gpio.d 3KB
DSP280x_Sci.d 3KB
DSP280x_Adc.d 3KB
DSP280x_I2C.d 3KB
DSP280x_SWPrioritizedIsrLevels.h 141KB
IQmathLib.h 123KB
DSP280x_ECan.h 45KB
DSP280x_EPwm.h 17KB
DSP280x_SysCtrl.h 13KB
pfc100a_isr.h 12KB
pfc100a_main.h 11KB
DSP280x_Adc.h 10KB
DSP280x_EQep.h 10KB
DSP280x_Gpio.h 10KB
DSP280x_Sci.h 8KB
DSP280x_I2c.h 7KB
DSP280x_PieVect.h 6KB
DSP280x_Spi.h 6KB
DSP280x_ECap.h 6KB
DSP280x_PieCtrl.h 6KB
DSP280x_CpuTimers.h 6KB
DSP280x_DefaultIsr.h 5KB
DSP280x_Device.h 5KB
DSP280x_I2c_defines.h 4KB
DSP280x_EPwm_defines.h 4KB
DSP280x_GlobalPrototypes.h 4KB
DSP280x_DevEmu.h 3KB
DSP280x_XIntrupt.h 2KB
MR75020H_PFC.launch 9KB
makefile 6KB
MR75020H_PFC.map 72KB
subdir_vars.mk 4KB
sources.mk 2KB
subdir_rules.mk 2KB
subdir_vars.mk 383B
subdir_rules.mk 308B
objects.mk 248B
pfc100a_main.obj 149KB
DSP280x_GlobalVariableDefs.obj 102KB
pfc100a_isr.obj 54KB
DSP280x_EPwm.obj 25KB
DSP280x_DefaultIsr.obj 14KB
DSP280x_Sci.obj 13KB
DSP280x_PieVect.obj 13KB
DSP280x_SysCtrl.obj 12KB
DSP280x_I2C.obj 11KB
DSP280x_Adc.obj 8KB
DSP280x_Gpio.obj 8KB
DSP280x_PieCtrl.obj 6KB
DSP280x_CpuTimers.obj 5KB
DSP280x_InitPeripherals.obj 3KB
DSP280x_MemCopy.obj 3KB
DSP280x_CodeStartBranch.obj 2KB
DSP280x_usDelay.obj 2KB
DSP280x_DisInt.obj 1KB
DSP280x_DBGIER.obj 1KB
DSP280x_CSMPasswords.obj 860B
ccsObjs.opt 695B
MR75020H_PFC.out 197KB
org.eclipse.core.resources.prefs 307B
org.eclipse.cdt.debug.core.prefs 123B
org.eclipse.cdt.codan.core.prefs 62B
.project 842B
MR75020H_PFC_linkInfo.xml 205KB
共 100 条
- 1
资源评论
xiaopengpengyaofei
- 粉丝: 6
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功