我是一名初学者,请问哪位大咖能提供基于TMS320F28032芯片的PWM波输出的源程序参考,谢谢!
请问提供TMS320F28032 关于PWM波输出的源程序
关于28335 ADC采样波动问题
CF卡
C2000中有支持CF卡的device吗?
关于DSP28335的ePWM模块的输出问题
我的问题是想要产生一个频率固定,两边不对称的三角波(也就是三角波两边斜率不一样),
一般是在epwm初始化里面进行 (*ePWM[ch1]).TBPRD
TIMER_CNT_UPDN
HSPCLKDIV_PRESCALE_X_1
CLKDIV_PRESCALE_X_1
这样的话就会产生固定且对称的三角波,那我能把 HSPCLKDIV_PRESCALE_X_1 ,CLKDIV_PRESCALE_X_1 ,两句放到中断中,并且在时钟基准计数器等于时间基准周期寄存器TBPRD的时候,改变基准时钟TBCLK,从而产生不对称三角波吗?
用TMS320F28377S ADC模块的ADCA中断触发DMA,DMA被触发,ADC中断仍然产生。请教可能会是什么原因?如何排查?
如题,请高手指点下
ccs edit和ccs debug之间切换时候报错
InstaSPIN的FAST估算器接口参数问题
请问,TI的instaspin foc的FAST算法中,需要使用的三相电压电流参数,具体是逆变器的相电压还是电机的相电压,相电流的正方向又是怎么定义的?
看DRV8305套件的硬件原理电路和例程,采样的是逆变器输出相电压和三分流的下桥臂电流(电流流出电机为正方向);采样后硬件偏移计算,直接clarke变换(并没有减去共模电压换算成电机相电压,电流也没有取反),就送入FAST估算器模块了。这与用户手册介绍的EST_run()函数的形参定义不对应,那FAST估算器接口到底应该用什么量呢?
谢谢
28004x如何复位
想让芯片复位,调用接口 SysCtl_resetDevice() 每次都出现异常,不能正常复位。请问是什么情况?
2803x 移相 pwm的第二路的PWM的计数器值大于周期值?
异常情况2:在中断中,对TBPRD重新再次赋值一次,pwm1能够正常发板,pwm2不能发波,pwm3正常发波,移相240
interrupt void epwm1_isr(void)
{
EPwm1Regs.TBPRD = 299;
EPwm2Regs.TBPRD = 299;
EPwm3Regs.TBPRD = 299;
EPwm2Regs.TBPHS.half.TBPHS = 299-100;
EPwm3Regs.TBPHS.half.TBPHS = 299-200;
EPwm1TimerIntCount++;
EPwm1Regs.ETCLR.bit.INT = 1;
// Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}
28034如果烧录程序,csm不加密的话,容易被破解吗?
如题
F28069_ADC初始化設定詢問_使用EPWM1中斷MAINISR
各位前輩大家好
小弟目前使用F28069,SVPWM驅動三相馬達
為了要讀取電流會授做閉迴路控制,使用ADC
主程式架構 參考了PM_Sensorless
使用EPWM1當做MAINISR,內容與 PM_Sensorless LEVEL2 相同
而ADC初始化設定 使用 F2806XILEG_VDC_PM.H 的 ADC_MACRO()
但當我ENABLEFLAG =1 時 中斷無法進行 CCS DEBUG 跳到 F2806x_DefaultIsr.c 的 ILLEGAL_ISR(void)
下列為我相關的設定,想請問我 哪裡設定錯誤 或者 遺漏了甚麼
非常感謝
void main(void)
{.......
InitSysCtrl();
InitPieCtrl();
InitPieVectTable();
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;
.....
ADC_MACRO()
.....
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.EPWM1_INT = &MainISR;
EDIS; // This is needed to disable write to EALLOW protected registers
PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable EPWM1INT generation
EPwm1Regs.ETSEL.bit.INTSEL = 1; // Enable interrupt CNT_zero event
EPwm1Regs.ETPS.bit.INTPRD = 1; // Generate interrupt on the 1st event
EPwm1Regs.ETCLR.bit.INT = 1; // Enable more interrupts //20180517!!
IER |= M_INT3;
:
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
....
} //end main
上為主程式
interrupt void MainISR(void)
{
if(EnableFlag == 1)
{
........
EPwm1Regs.ETCLR.bit.INT = 1;
// Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;
}//end enableflag =1
}//end main_isr
上為中斷
下為ADC設定
#define ADC_MACRO()\
\
DELAY_US(ADC_usDELAY);\
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG;\
asm(" NOP ");\
asm(" NOP "); \
\
EALLOW;\
AdcRegs.ADCCTL1.bit.ADCBGPWD= 1;/* Power up band gap */\
\
DELAY_US(ADC_usDELAY);/* Delay before powering up rest of ADC */\
\
AdcRegs.ADCCTL1.bit.ADCREFSEL= 0;\
AdcRegs.ADCCTL1.bit.ADCREFPWD= 1;/* Power up reference */\
AdcRegs.ADCCTL1.bit.ADCPWDN = 1;/* Power up rest of ADC */\
AdcRegs.ADCCTL1.bit.ADCENABLE= 1;/* Enable ADC */\
\
asm(" RPT#100 || NOP");\
\
AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;\
AdcRegs.ADCCTL1.bit.TEMPCONV=0;\
\
DELAY_US(ADC_usDELAY);\
\
/******* CHANNEL SELECT *******/\
\
\
AdcRegs.ADCSOC0CTL.bit.CHSEL = 1; /* ChSelect: ADC A1-> Phase U Churrent*/\
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5;/* Set SOC0 start trigger on EPWM1A, due to round-robin SOC0 converts first then SOC1*/\
AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;/* Set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)*/\
\
AdcRegs.ADCSOC1CTL.bit.CHSEL = 9;/* ChSelect: ADC B1-> Phase V Current*/\
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;\
\
AdcRegs.ADCSOC2CTL.bit.CHSEL = 10;/* ChSelect: ADC B2-> DC Bus Voltage*/ \
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;\
\
AdcRegs.ADCSOC3CTL.bit.CHSEL = 15;/* ChSelect: ADC B7-> V Phase A */\
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;\
\
AdcRegs.ADCSOC4CTL.bit.CHSEL = 7;/* ChSelect: ADC A7-> V Phase B */\
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;\
\
AdcRegs.ADCSOC5CTL.bit.CHSEL = 12;/* ChSelect: ADC B4-> V Phase C */\
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;\
\
AdcRegs.ADCSOC6CTL.bit.CHSEL = 2; /* ChSelect: ADC A2-> Low Side DC Bus Return Cur.*/\
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 5;\
AdcRegs.ADCSOC6CTL.bit.ACQPS = 6;\
\
EDIS;\
\
\
/* Set up Event Trigger with CNT_zero enable for Time-base of EPWM1 */\
EPwm1Regs.ETSEL.bit.SOCAEN = 1; /* Enable SOCA */\
EPwm1Regs.ETSEL.bit.SOCASEL = 1; /* Enable CNT_zero event for SOCA */\
EPwm1Regs.ETPS.bit.SOCAPRD = 1; /* Generate SOCA on the 1st event */\
EPwm1Regs.ETCLR.bit.SOCA = 1; /* Clear SOCA flag */
#endif // __F2806XILEG_VDC_H__
#define ADC_MACRO()\\ DELAY_US(ADC_usDELAY);\ AdcRegs.ADCCTL1.all=ADC_RESET_FLAG;\asm(" NOP ");\asm(" NOP "); \\EALLOW;\ AdcRegs.ADCCTL1.bit.ADCBGPWD= 1;/* Power up band gap */\\DELAY_US(ADC_usDELAY);/* Delay before powering up rest of ADC */\\AdcRegs.ADCCTL1.bit.ADCREFSEL= 0;\ AdcRegs.ADCCTL1.bit.ADCREFPWD= 1;/* Power up reference */\ AdcRegs.ADCCTL1.bit.ADCPWDN = 1;/* Power up rest of ADC */\AdcRegs.ADCCTL1.bit.ADCENABLE= 1;/* Enable ADC */\\asm(" RPT#100 || NOP");\\AdcRegs.ADCCTL1.bit.INTPULSEPOS=1;\AdcRegs.ADCCTL1.bit.TEMPCONV=0;\\DELAY_US(ADC_usDELAY);\\/******* CHANNEL SELECT *******/\\\AdcRegs.ADCSOC0CTL.bit.CHSEL = 1; /* ChSelect: ADC A1-> Phase U Churrent*/\AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 5;/* Set SOC0 start trigger on EPWM1A, due to round-robin SOC0 converts first then SOC1*/\AdcRegs.ADCSOC0CTL.bit.ACQPS = 6;/* Set SOC0 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)*/\\AdcRegs.ADCSOC1CTL.bit.CHSEL = 9;/* ChSelect: ADC B1-> Phase V Current*/\AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;\\AdcRegs.ADCSOC2CTL.bit.CHSEL = 10;/* ChSelect: ADC B2-> DC Bus Voltage*/ \AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC2CTL.bit.ACQPS = 6;\\AdcRegs.ADCSOC3CTL.bit.CHSEL = 15;/* ChSelect: ADC B7-> V Phase A */\AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC3CTL.bit.ACQPS = 6;\\AdcRegs.ADCSOC4CTL.bit.CHSEL = 7;/* ChSelect: ADC A7-> V Phase B */\AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC4CTL.bit.ACQPS = 6;\\AdcRegs.ADCSOC5CTL.bit.CHSEL = 12;/* ChSelect: ADC B4-> V Phase C */\AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC5CTL.bit.ACQPS = 6;\\AdcRegs.ADCSOC6CTL.bit.CHSEL = 2; /* ChSelect: ADC A2-> Low Side DC Bus Return Cur.*/\AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 5;\AdcRegs.ADCSOC6CTL.bit.ACQPS = 6;\ \EDIS;\\\ /* Set up Event Trigger with CNT_zero enable for Time-base of EPWM1 */\ EPwm1Regs.ETSEL.bit.SOCAEN = 1; /* Enable SOCA */\ EPwm1Regs.ETSEL.bit.SOCASEL = 1; /* Enable CNT_zero event for SOCA */\ EPwm1Regs.ETPS.bit.SOCAPRD = 1; /* Generate SOCA on the 1st event */\EPwm1Regs.ETCLR.bit.SOCA = 1; /* Clear SOCA flag */
#endif // __F2806XILEG_VDC_H__
CLA调试变量一直为零,直接赋值也为零?????急问!!!
1、2837X芯片,使用例程调试是没有问题的,变量更新正常;
2、但把例程的CLA放到自己的程序中:task进入正确,单步运行也正确,但是就是变量一直为零,不知道为什么???
TI的工程师们,帮助一下,谢谢
28377D ADC采样问题求助
如何加快A[i] = AdcRegs.ADCRESULT0;这句程序的运行速度
现在在用DSP2812做一个采样程序
其中有一句程序是A[i] = AdcRegs.ADCRESULT0;
其中A是我定义的一个数组,AdcRegs.ADCRESULT0是存放采样结果的寄存器
我用CCS5.5中的clock功能观察到运行这句语句需要耗费6到7个时钟周期
初步猜想是寄存器寻址需要耗费一些时间
我想知道如何才能提高这句程序的运行速度
数十片28235芯片中有一片出现 ,连接仿真器正常运行,下载到FLASH脱机无法运行的情况
数十块板卡中的28235芯片只有一片有此异常,且这片之前也是正常运行的,挂上仿真器看Flash中有数据,是芯片坏了吗?有没有检测方法?
F2407A程序运行问题
I2C.c移入motorware
在i2c.c文件中,void I2C_MasterControl(I2C_Handle i2cHandle, I2C_Control_e action, uint16_t bitCount, uint16_t bytes)函数中,bitCount是用于什么,代表什么?该如何操作这个变量(赋什么值合适)?
void I2C_MasterControl(I2C_Handle i2cHandle, I2C_Control_e action, uint16_t bitCount, uint16_t bytes)
{
// Check the arguments.
assert(I2C_isHandleValid(i2cHandle));
assert(bitCount <= 7);
I2C_Obj *i2c = (I2C_Obj *)i2cHandle;
// Write the number of bytes to send or receive
i2c->I2CCNT = bytes;
// Send the command.
i2c->I2CMDR = action | bitCount;
}
TI高压套件电机控制器使用的ESTUN永磁电机推荐使用什么负载呢
在做ESMO实验,这个小功率电机是用什么座位负载提供负载转矩
TMP116 数据校验问题
28377S AD 采样理解
例程adc_soc_continuous_dma中主要对A3,B3同时采集, SetupADCContinuous(&AdcaRegs, 3)此函数中把16个ADCSOCCTL的通道都选择为3,不是很理解,麻烦解答下?
adcRegs->ADCSOC0CTL.bit.CHSEL = channel;
adcRegs->ADCSOC1CTL.bit.CHSEL = channel;
adcRegs->ADCSOC2CTL.bit.CHSEL = channel;
adcRegs->ADCSOC3CTL.bit.CHSEL = channel;
adcRegs->ADCSOC4CTL.bit.CHSEL = channel;
adcRegs->ADCSOC5CTL.bit.CHSEL = channel;
adcRegs->ADCSOC6CTL.bit.CHSEL = channel;
adcRegs->ADCSOC7CTL.bit.CHSEL = channel;
adcRegs->ADCSOC8CTL.bit.CHSEL = channel;
adcRegs->ADCSOC9CTL.bit.CHSEL = channel;
adcRegs->ADCSOC10CTL.bit.CHSEL = channel;
adcRegs->ADCSOC11CTL.bit.CHSEL = channel;
adcRegs->ADCSOC12CTL.bit.CHSEL = channel;
adcRegs->ADCSOC13CTL.bit.CHSEL = channel;
adcRegs->ADCSOC14CTL.bit.CHSEL = channel;
adcRegs->ADCSOC15CTL.bit.CHSEL = channel;