PSIM (Power Simulation) 是一款电力电子和电机控制仿真软件,而DSP28335是德州仪器(TI)的一款数字信号处理器(DSP)。如果你想要在PSIM的SimCoder环境中为DSP28335生成LED闪烁的代码,遵循以下步骤:

  1. 打开PSIM并创建模型

    • 首先,在PSIM中创建一个电路模型,该模型应包括DSP28335模块和你想要控制的LED模块。
    • 连接DSP的输出引脚到LED的驱动电路,以便DSP可以控制LED的开关。

  1. 配置DSP模块

    • 在PSIM中双击DSP28335模块以打开其属性窗口。
    • 配置DSP的时钟、内存和其他相关设置。

    • 设置时钟:

    • 配置输出IO

    • 配置方波

    • 配置零阶保持器

    • 配置数字输出

    • 添加测量

    • 仿真查看结果

  2. 编写或生成代码

    • SimCoder通常允许你使用C语言编写代码,这些代码将在仿真期间运行在DSP模块上。
    • 对于LED闪烁,你可能需要设置一个定时器中断,并在中断服务程序中切换LED的状态。
  3. 实例代码

/*********************************************************************************
// This code is created by SimCoder Version 2022c0.16 for F2833x Hardware Target
//
// SimCoder is copyright by Powersim Inc., 2009-2021
//
// Date: April 20, 2024 10:11:57
**********************************************************************************/
#include	<math.h>
#include	"PS_bios.h"
typedef float DefaultType;
#define	GetCurTime() PS_GetSysTimer()
#define iif(a, b, c) ((a) ? (b) : (c))
#define	PWM_IN_CHECK	// To lower PWM value setting time, comment out this line if PWM duty cycle values are strictly limited in the range.






interrupt void Task();


const Uint16 PSD_CpuClock = 150;  // MHz
extern	DefaultType	fGblVin;






DefaultType	fGblVin = 0;
interrupt void Task()
{
	DefaultType	fZOH1, fVSQ1;

	PS_MaskIntr(M__INT13);

	{
		static DefaultType wt = 1.0 - ((-90) / 360.);
		static DefaultType dwt = 555 * 1.0 / 10000;
		fVSQ1 = (wt < 0.5) ? ((1) + (0)) : (0);
		wt += dwt;
		if (wt >= 1.0)
			wt -= 1.0;
	}
	fZOH1 = fVSQ1;
#ifdef	_DEBUG
	fGblVin = fZOH1;
#endif
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 0) : PS_SetDigitOutBitA((Uint32)1 << 0);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 1) : PS_SetDigitOutBitA((Uint32)1 << 1);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 2) : PS_SetDigitOutBitA((Uint32)1 << 2);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 6) : PS_SetDigitOutBitA((Uint32)1 << 6);
	(fZOH1 == 0) ? PS_ClearDigitOutBitA((Uint32)1 << 7) : PS_SetDigitOutBitA((Uint32)1 << 7);
	PS_ExitTimer1Intr();
}


void Initialize(void)
{
	PS_SysInit(30, 10);
	PS_InitTimer(0, 0);

	// Set initial states for those GPIO/AIO output ports.
	PS_ClearDigitOutBitA((Uint32)1 << 0);	// Reset GPIO0
	PS_ClearDigitOutBitA((Uint32)1 << 1);	// Reset GPIO1
	PS_ClearDigitOutBitA((Uint32)1 << 2);	// Reset GPIO2
	PS_ClearDigitOutBitA((Uint32)1 << 6);	// Reset GPIO6
	PS_ClearDigitOutBitA((Uint32)1 << 7);	// Reset GPIO7
	PS_InitDigitOut(0);
	PS_InitDigitOut(1);
	PS_InitDigitOut(2);
	PS_InitDigitOut(6);
	PS_InitDigitOut(7);

	PS_InitTimer(1,15000L);
	PS_SetTimerIntrVector(1, Task);
	PS_StartStopPwmClock(2);	// start Timer1
}


void main()
{
	Initialize();
	PS_EnableIntr();   // Enable Global interrupt INTM
	PS_EnableDbgm();
	for (;;) {
	}
}

5.开发板运行效果:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐