SVG的DSP程序、FPGA程序与主板原理图及PCB设计,含辅助板PCB无原理图

张开发
2026/4/10 2:47:11 15 分钟阅读

分享文章

SVG的DSP程序、FPGA程序与主板原理图及PCB设计,含辅助板PCB无原理图
svg的dsp程序 FPGA程序 和主板原理图和pcb其他辅助板的pcb辅助板没有原理图一、概述本文档基于SVG静止无功发生器的DSP程序代码对其核心功能、模块架构、关键流程及技术细节进行全面解析。该代码基于TI C28335 DSP芯片开发涵盖了FPU快速运算、PWM生成、ADC采集、DMA数据传输、中断控制等核心功能模块是SVG设备实现无功补偿、谐波治理的核心控制软件基础。svg的dsp程序 FPGA程序 和主板原理图和pcb其他辅助板的pcb辅助板没有原理图代码包包含119个文件核心代码集中在SVG_DSP0109目录下其中INCLUDE文件夹中的头文件定义了底层硬件抽象、寄存器映射、函数原型等关键接口为上层控制算法提供了稳定、高效的硬件操作支撑。本文将重点围绕核心头文件展开解析各模块的功能定位、接口设计及协同工作机制。二、核心模块功能解析2.1 基础数据类型与FPU快速运算模块C28x_FPU_FastRTS.h2.1.1 数据类型定义该文件定义了C28x DSP的标准数据类型确保跨文件数据类型一致性适配FPU浮点运算单元的运算需求typedef int int16; // 16位有符号整数 typedef long int32; // 32位有符号整数 typedef long long int64; // 64位有符号整数 typedef unsigned int Uint16; // 16位无符号整数 typedef unsigned long Uint32; // 32位无符号整数 typedef unsigned long long Uint64; // 64位无符号整数 typedef float float32; // 32位浮点数FPU核心运算类型 typedef long double float64; // 64位浮点数2.1.2 快速运算函数提供了FPU优化的核心数学函数相比标准RTS库运算速度提升30%以上适用于SVG实时控制场景float32 isqrt(float32 X)快速平方根运算用于电压、电流幅值计算等场景。void sincos(float32 radian, float32PtrSin, float32PtrCos)同步计算正弦和余弦值核心用于ABC-DQ坐标变换、SVPWM空间矢量脉宽调制算法实现。2.2 PWM模块DSP28335_PWM.h DSP2833x_EPwm.h DSP2833x_EPwm_defines.hPWM模块是SVG的核心输出单元负责生成驱动功率器件如IGBT的PWM波形实现无功电流的精确控制。2.2.1 核心配置参数#define CON_PWM_PERIOD 0x927 // PWM周期配置十进制2343对应SVG典型开关频率需求2.2.2 核心函数接口函数名功能描述应用场景InitePWM(void)初始化PWM模块包括周期、死区、触发方式配置系统启动时初始化EPwm_Start(void)启动PWM输出系统就绪后启动功率输出EPwm_Stop(void)停止PWM输出故障保护或停机时EPwm_Sync(void)多通道PWM同步三相桥臂PWM相位同步2.2.3 关键寄存器与配置DSP2833x_EPwm.h定义了PWM模块的完整寄存器映射核心配置包括时基控制TBCTL配置计数器模式增计数/增减计数、分频系数、同步方式。比较控制CMPCTL配置比较值加载模式立即加载/影子加载。动作限定AQCTL定义计数器在零值、周期值、比较值时的输出动作置1/清0/翻转。死区控制DBCTL配置上下桥臂死区时间防止功率器件直通。DSP2833xEPwmdefines.h提供了配置宏定义简化开发#define TB_COUNT_UPDOWN 0x2 // 增减计数模式适用于对称PWM波形 #define AQ_SET 0x2 // 输出置1 #define AQ_CLEAR 0x1 // 输出清0 #define DB_FULL_ENABLE 0x3 // 使能完整死区控制2.3 ADC模块DSP2833x_Adc.hADC模块负责采集SVG系统的关键模拟信号包括电网电压、负载电流、直流母线电压等为控制算法提供反馈数据。2.3.1 寄存器结构设计采用“结构体联合体”设计支持位操作和整体操作// ADC控制寄存器1位定义 struct ADCTRL1_BITS { Uint16 rsvd1:4; // 保留 Uint16 SEQ_CASC:1; // 级联序列器模式SEQ1和SEQ2级联为16通道 Uint16 SEQ_OVRD:1; // 序列器覆盖模式 Uint16 CONT_RUN:1; // 连续运行模式 Uint16 CPS:1; // ADC核心时钟分频 Uint16 ACQ_PS:4; // 采样窗口大小1-16个ADC时钟周期 Uint16 SUSMOD:2; // 仿真挂起模式 Uint16 RESET:1; // ADC复位 Uint16 rsvd2:1; // 保留 }; union ADCTRL1_REG { Uint16 all; // 整体操作 struct ADCTRL1_BITS bit; // 位操作 };2.3.2 核心功能配置序列器配置支持SEQ1和SEQ2两个独立序列器可配置为级联模式最大16通道采集或独立模式。采样触发支持EPWM触发、外部触发、软件触发SVG中常用EPWM同步触发确保采样与PWM开关同步。结果存储16个结果寄存器ADCRESULT0~ADCRESULT15对应16个采集通道。2.4 DMA模块DSP2833x_DMA.h DSP2833x_Dma_defines.hDMA直接内存访问模块用于ADC采集数据的高速传输避免CPU干预提升系统实时性。2.4.1 核心功能特点支持6个独立通道可配置为不同数据源和目的地址。支持 burst 传输和连续传输模式适配ADC批量数据采集。支持多种触发源ADC序列完成、EPWM事件、外部中断等。2.4.2 关键配置宏定义DSP2833x_Dma_defines.h#define DMA_SEQ1INT 1 // ADC序列1完成触发DMA #define CONT_ENABLE 0x1 // 连续传输模式 #define THIRTYTWO_BIT 0x1 // 32位数据传输 #define CHINT_END 0x1 // 传输结束触发中断2.4.3 核心函数接口DSP2833x_GlobalPrototypes.h以通道1为例// 配置DMA通道1地址源ADC结果寄存器目的数据缓冲区 void DMACH1AddrConfig(volatile Uint16 *DMA_Dest,volatile Uint16 *DMA_Source); // 配置burst传输参数burst大小、源/目的步长 void DMACH1BurstConfig(Uint16 bsize, int16 srcbstep, int16 desbstep); // 配置传输模式触发源、中断使能等 void DMACH1ModeConfig(Uint16 persel, Uint16 perinte, Uint16 oneshot, Uint16 cont, Uint16 synce, Uint16 syncsel, Uint16 ovrinte, Uint16 datasize, Uint16 chintmode, Uint16 chinte); // 启动DMA通道1 void StartDMACH1(void);2.5 中断控制模块DSP2833x_PieCtrl.h DSP2833x_PieVect.h DSP2833x_DefaultIsr.h中断模块负责处理系统各类中断事件确保实时响应包括ADC采集完成、PWM周期中断、故障保护中断等。2.5.1 PIE控制器可编程中断控制器支持12个中断组每组8个中断通道共96个中断源。支持中断优先级配置核心中断如PWM周期中断可配置为高优先级。2.5.2 核心中断服务函数DSP2833x_DefaultIsr.h中断函数触发源功能描述SEQ1INT_ISR(void)ADC序列1采集完成处理ADC采集数据如滤波、标幺化EPWM1INTISR(void)EPWM1周期结束执行控制算法更新PWM比较值TINT0_ISR(void)定时器0溢出系统定时任务如状态监测、通信周期XINT1_ISR(void)外部中断1故障输入中断如过流、过压2.5.3 中断初始化流程初始化PIE控制器InitPieCtrl(void)。清除中断标志位使能对应中断通道。配置中断向量表InitPieVectTable(void)。使能CPU全局中断EINT和PIE全局中断EnableInterrupts(void)。2.6 系统控制模块DSP2833x_Device.h DSP2833x_SysCtrl.h系统控制模块负责DSP的核心配置包括时钟、电源管理、外设使能等。2.6.1 目标设备配置#define DSP28_28335 TARGET // 目标芯片为TMS320F28335 #define DSP28_28334 0 #define DSP28_28332 02.6.2 核心控制宏定义#define EINT asm( clrc INTM) // 使能CPU全局中断 #define DINT asm( setc INTM) // 禁止CPU全局中断 #define EALLOW asm( EALLOW) // 允许修改受保护寄存器 #define EDIS asm( EDIS) // 禁止修改受保护寄存器 #define ESTOP0 asm( ESTOP0) // 仿真停止2.6.3 时钟配置通过InitSysCtrl(void)初始化系统时钟C28335支持最高150MHz核心时钟SVG系统中通常配置为150MHz确保控制算法实时性。三、系统整体工作流程3.1 启动初始化流程graph TD A[系统上电] -- B[初始化系统控制InitSysCtrl] B -- C[初始化GPIOInitGpio] C -- D[初始化PWM模块InitePWM] D -- E[初始化ADC模块InitAdc] E -- F[初始化DMA模块DMAInitialize] F -- G[初始化中断控制器InitPieCtrlInitPieVectTable] G -- H[使能中断EnableInterrupts] H -- I[启动PWMEPwm_Start] I -- J[系统进入运行状态]3.2 实时控制流程graph TD A[PWM周期中断触发] -- B[读取DMA传输的ADC数据] B -- C[数据预处理滤波、标幺化、坐标变换] C -- D[执行控制算法无功电流计算、PI调节] D -- E[更新PWM比较值] E -- F[故障检测过流、过压、过温] F --|无故障| A F --|有故障| G[执行保护逻辑EPwm_Stop]3.3 数据传输流程ADC采集数据通过DMA直接传输至数据缓冲区无需CPU干预流程如下ADC序列采集完成触发DMA中断。DMA控制器将ADC结果寄存器数据传输至指定RAM缓冲区。PWM周期中断中CPU直接读取RAM缓冲区数据进行处理。处理完成后更新PWM比较值实现闭环控制。四、关键技术特点4.1 高实时性设计硬件加速FPU优化的数学函数提升坐标变换、PI调节等算法运算速度。DMA数据传输ADC数据采集与CPU运算并行执行减少CPU等待时间。中断优先级管理核心控制中断PWM周期中断配置为高优先级确保控制周期稳定性。4.2 高可靠性设计故障保护通过外部中断和定时器中断实现过流、过压、过温等故障的快速响应。PWM死区控制避免功率器件上下桥臂直通保护IGBT等核心器件。寄存器保护通过EALLOW/EDIS宏控制受保护寄存器访问防止误操作。4.3 可扩展性设计模块化架构各功能模块独立封装便于维护和升级。配置化宏定义核心参数如PWM周期、ADC采样窗口通过宏定义配置适配不同SVG功率等级需求。标准化接口遵循TI C28x系列芯片编程规范便于移植到其他C28x芯片如C28377D。五、应用场景与适配说明该代码适用于中低压SVG静止无功发生器核心适配场景电网无功补偿、谐波治理。新能源发电光伏、风电并网无功调节。工业负载如电机、电弧炉无功补偿。适配功率等级100kVA~10MVA通过调整PWM周期、电流采样范围可灵活配置。六、总结本SVG DSP程序代码基于TI TMS320F28335芯片通过模块化设计实现了PWM波形生成、ADC数据采集、DMA高速传输、中断实时控制等核心功能具备高实时性、高可靠性和良好的可扩展性。代码严格遵循工业级嵌入式开发规范通过硬件加速和并行处理确保SVG系统的动态响应性能可作为中低压SVG设备的核心控制软件基础也可根据具体应用场景进行二次开发和优化。

更多文章