DSP28335测试总结
EPwm4Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm4Regs.CMPA.half.CMPA= 0.0001*T; EPwm4Regs.CMPB= 0.0001*T;
EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm4Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR; EPwm4Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm4Regs.AQCTLB.bit.CBU = AQ_CLEAR; EDIS; }
void InitPwm5AB(float32 f) {
Uint16 T= 2343750/f-1.0; EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1; GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0;
GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6; EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; EPwm1Regs.TBPRD = T;
EPwm5Regs.TBPHS.half.TBPHS = 0;
EPwm5Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm5Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm5Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm5Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm5Regs.CMPA.half.CMPA= 0.0001*T; EPwm5Regs.CMPB= 0.0001*T;
EPwm5Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm5Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm5Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm5Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm5Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm5Regs.AQCTLA.bit.CAU = AQ_CLEAR;
29
DSP28335测试总结
EPwm5Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm5Regs.AQCTLB.bit.CBU = AQ_CLEAR; EDIS; }
void InitPwm6AB(float32 f) {
Uint16 T= 2343750/f-1.0; EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; EPwm1Regs.TBCTL.bit.CLKDIV = 6; EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0; EPwm1Regs.TBPRD = T;
EPwm6Regs.TBPHS.half.TBPHS = 0;
EPwm6Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; EPwm6Regs.TBCTL.bit.PHSEN = TB_DISABLE; EPwm6Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm6Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; EPwm6Regs.CMPA.half.CMPA= 0.0001*T; EPwm6Regs.CMPB= 0.0001*T;
EPwm6Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; EPwm6Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; EPwm6Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; EPwm6Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; EPwm6Regs.AQCTLA.bit.ZRO = AQ_SET; EPwm6Regs.AQCTLA.bit.CAU = AQ_CLEAR; EPwm6Regs.AQCTLB.bit.ZRO = AQ_SET; EPwm6Regs.AQCTLB.bit.CBU = AQ_CLEAR; EDIS; }
//PWM信号生成子函数//
void UpdatePwm1A(float32 pw,float32 f) {
30
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