Quantcast
Channel: C2000™︎ 微控制器论坛 - 最近的话题
Viewing all 12114 articles
Browse latest View live

请问提供TMS320F28032 关于PWM波输出的源程序

$
0
0

我是一名初学者,请问哪位大咖能提供基于TMS320F28032芯片的PWM波输出的源程序参考,谢谢!


关于28335 ADC采样波动问题

$
0
0

大家好!

我目前想用28335的ADC采集电流,DSP之前的电路如图1所示。问题在于,在JTAG仿真模式下,DSP工作之后,电路输出会产生波动如图2以及图3所示(DSP不工作没有波动),从而导致较大的误差。请问下各位有没有遇到过这样的问题,或者知道如何解决呢?谢谢!(示波器识别不了U盘,请将就看下)

图1

图2

图3

CF卡

$
0
0

C2000中有支持CF卡的device吗?

关于DSP28335的ePWM模块的输出问题

$
0
0

我的问题是想要产生一个频率固定,两边不对称的三角波(也就是三角波两边斜率不一样),

一般是在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之间切换时候报错

$
0
0

软件版本:7.0.0.00042

编译器版本:ti-cgt-c2000_17.9.0.STS

ccs edit和ccs debug之间切换时候报这样的错误,请指导

InstaSPIN的FAST估算器接口参数问题

$
0
0

请问,TI的instaspin foc的FAST算法中,需要使用的三相电压电流参数,具体是逆变器的相电压还是电机的相电压,相电流的正方向又是怎么定义的?

       看DRV8305套件的硬件原理电路和例程,采样的是逆变器输出相电压和三分流的下桥臂电流(电流流出电机为正方向);采样后硬件偏移计算,直接clarke变换(并没有减去共模电压换算成电机相电压,电流也没有取反),就送入FAST估算器模块了。这与用户手册介绍的EST_run()函数的形参定义不对应,那FAST估算器接口到底应该用什么量呢?

谢谢

28004x如何复位

$
0
0

想让芯片复位,调用接口 SysCtl_resetDevice() 每次都出现异常,不能正常复位。请问是什么情况?


2803x 移相 pwm的第二路的PWM的计数器值大于周期值?

$
0
0
在中断中只更新周期值时,增计数模式,pwm2计数器,为何计数到周期值时不清零?而是继续向上计数。我仿真时,pwm2计数器大部分是竟然大于周期值。pwm2的计数器从移相值开始计数,计数到周期值+移相值后,掉到移相值,然后再从移相值计数到周期值+移相值,循环。不知道为何会出现这样的情况。
异常情况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

$
0
0

各位前輩大家好
小弟目前使用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调试变量一直为零,直接赋值也为零?????急问!!!

$
0
0

1、2837X芯片,使用例程调试是没有问题的,变量更新正常;

2、但把例程的CLA放到自己的程序中:task进入正确,单步运行也正确,但是就是变量一直为零,不知道为什么???

TI的工程师们,帮助一下,谢谢

28377D ADC采样问题求助

$
0
0

刚开始学习28377,想把ADC采样配置成PWM11触发,但触发不了,结果寄存器的值一直为0。用软件触发是没问题的。

如何加快A[i] = AdcRegs.ADCRESULT0;这句程序的运行速度

$
0
0

现在在用DSP2812做一个采样程序

其中有一句程序是A[i] = AdcRegs.ADCRESULT0;

其中A是我定义的一个数组,AdcRegs.ADCRESULT0是存放采样结果的寄存器

我用CCS5.5中的clock功能观察到运行这句语句需要耗费6到7个时钟周期

初步猜想是寄存器寻址需要耗费一些时间

我想知道如何才能提高这句程序的运行速度

数十片28235芯片中有一片出现 ,连接仿真器正常运行,下载到FLASH脱机无法运行的情况

$
0
0

数十块板卡中的28235芯片只有一片有此异常,且这片之前也是正常运行的,挂上仿真器看Flash中有数据,是芯片坏了吗?有没有检测方法?


F2407A程序运行问题

$
0
0

芯片为F2407A,CCS3.3下运行。同样的程序在一块板子上运行没问题,在另一块板子上虽然下载进去了,但是程序无法正常运行。一直复位。怀疑是看门狗没有禁止,想要查看寄存器的值,如图所示发现寄存器的地址都有问题,请问这个情况是芯片坏了吗,还是有其他的问题。例程同样程序会跑飞。有什么能判断一块芯片好坏的办法吗。

I2C.c移入motorware

$
0
0

在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永磁电机推荐使用什么负载呢

$
0
0

在做ESMO实验,这个小功率电机是用什么座位负载提供负载转矩

TMP116 数据校验问题

$
0
0

Dear TI:

关于TMP116的疑问: 

1.当TMP116温度传感器出现故障时,用哪种机制来判断它(比如其它传感器用CRC,或状态字来判断传感器出现故障)。

2.例如传感器电源线没有接好,传感器采集出来的AD值为0,这时候怎么判断这个AD值是正常的还是异常的值。

谢谢。

28377S AD 采样理解

$
0
0

例程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;

Viewing all 12114 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>