DSP28335中文资料 下载本文

DSP28335测试总结

Uint16 T=2343750/f-1.0;

EPwm1Regs.CMPA.half.CMPA= pw*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比 }

void UpdatePwm1B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm1Regs.CMPB= pw*T;// 设置EPWM1A比较值寄存器的比较值,即体现EPWM1A的占空比 }

void UpdatePwm2A(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm2Regs.CMPA.half.CMPA= pw*T; }

void UpdatePwm2B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0; EPwm2Regs.CMPB= pw*T; }

void UpdatePwm3A(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm3Regs.CMPA.half.CMPA= pw*T; }

void UpdatePwm3B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0; EPwm3Regs.CMPB= pw*T; }

void UpdatePwm4A(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm4Regs.CMPA.half.CMPA= pw*T; }

31

DSP28335测试总结

void UpdatePwm4B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0; EPwm4Regs.CMPB= pw*T; }

void UpdatePwm5A(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm5Regs.CMPA.half.CMPA= pw*T; }

void UpdatePwm5B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0; EPwm5Regs.CMPB= pw*T; }

void UpdatePwm6A(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0;

EPwm6Regs.CMPA.all= pw*T; }

void UpdatePwm6B(float32 pw,float32 f) {

Uint16 T=2343750/f-1.0; EPwm6Regs.CMPB= pw*T; }

//=========================================================================== // End of file.

//===========================================================================

32

DSP28335测试总结

8.2邮箱初始化函数

//###########################################################################

//CAN邮箱初始化函数

//入口参数分别为ID标识符(0xFFFFFFFF32位16进制格式如0xFFFFFFFF)、 //数据字节数(0到8)、发送与接收标志(0为发送1为接收)

//注意标识符的最高位即0x后面一位应至少为8,才符合CAN2.0B协议的扩展帧

//###########################################################################

#include \DSP2833x_Device.h\ // DSP28 Headerfile Include File #include \DSP2833x_Examples.h\ // DSP28 Examples Include File

void InitMboxA0(Uint32 MID,Uint16 DTL,Uint16 TR) { struct ECAN_REGS ECanaShadow; EALLOW;

ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; ECanaShadow.CANTIOC.bit.TXFUNC = 1;

ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all;

ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; ECanaShadow.CANRIOC.bit.RXFUNC = 1;

ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all; ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; ECanaShadow.CANMC.bit.SCB = 1; //选择eCAN模式,将32个邮箱寄存器全部使用起来 ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;

ECanaMboxes.MBOX0.MSGCTRL.all = 0x00000000; //此语句含邮箱号,可以修改 //以下状态或标志寄存器通过写1清零// ECanaRegs.CANTA.all= 0xFFFFFFFF;

33

DSP28335测试总结

ECanaRegs.CANRMP.all= 0xFFFFFFFF; ECanaRegs.CANGIF0.all= 0xFFFFFFFF; ECanaRegs.CANGIF1.all= 0xFFFFFFFF;

//配置邮箱收发方向//

ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;

ECanaShadow.CANMD.bit.MD0 = TR; //此语句含邮箱号,可以修改

ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;

//配置标识符ID,写标识符前必须关闭使能位// ECanaShadow.CANME.all = ECanaRegs.CANME.all;

ECanaRegs.CANME.bit.ME0= 0; //此语句含邮箱号,可以修改 ECanaRegs.CANME.all = ECanaShadow.CANME.all; ECanaMboxes.MBOX0.MSGID.all = MID; //此语句含邮箱号,可以修改

//标识符配置结束后使能相应的邮箱//

ECanaShadow.CANME.all = ECanaRegs.CANME.all;

ECanaShadow.CANME.bit.ME0 = 1; //此语句含邮箱号,可以修改

ECanaRegs.CANME.all = ECanaShadow.CANME.all;

//设置数据长度的字节数//

ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = DTL;//此语句含邮箱号,可以修改 EDIS; }

//###########################################################################

//CAN邮箱初始化函数

//入口参数分别为ID标识符(0xFFFFFFFF32位16进制格式如0xFFFFFFFF)、 //数据字节数(0到8)、发送与接收标志(0为发送1为接收)

//注意标识符的最高位即0x后面一位应至少为8,才符合CAN2.0B协议的扩展帧

//###########################################################################

#include \DSP2833x_Device.h\ // DSP28 Headerfile Include File

34