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

tms320f28377d进入非法中断

$
0
0
   问题:我们之前用的28377s单核的CPU,已经有成熟的工程,现在想把工程移植到双核CPU,根据程序量的大小,我们相应的更改了cmd文件,然后在移植工程的过程中,发现当打开AD中断时,程序就会跑到非法中断的死循环里。

如果去除AD中断,一切别的中断都正常;还有,我们的AD中断都是下载在FLAH,在RAM里面运行。



 



 



 


求教用DAC观察载波与调制波

$
0
0

我是在epwm的中断里面读取EPwm1Regs.CMPA.half.CMPA和EPwm1Regs.TBCTR的值,然后输出DA用示波器观察,代码如下(中断里面):

comp=EPwm1Regs.CMPA.half.CMPA;
counter11=EPwm1Regs.TBCTR;
DA0= comp/15000;

if(DA0>=0.9999)
DA0=0.9999;
if(DA0<=-0.9999)
DA0=-0.9999;
*DA_ADD0 = DA0 * 2048+2048;
DA1= counter11/15000;

if(DA1>=0.9999)
DA1=0.9999;
if(DA1<=-0.9999)
DA1=-0.9999;
*DA_ADD1 = DA1 * 2048+2048;

但是示波器显示的都是一条直线,教问各位前辈是怎么回事呢

DSP 28335用了大容量的数组,还有打印printf 调用了MALLOC,出现错误提示

$
0
0

 #10247-D creating output section ".sysmem" without a SECTIONS specification recoder    C/C++ Problem

DSP数组定义如下

#define  MSG_MAX_SIZE   256

typedef struct MT_MSG1 {   Uint16 buffer[37];   Uint16 Packet_num;   Uint16 Message_len;   Uint16 Year;   Uint16 MonthDay;   Uint32 Time;   Uint16 Counter1;   Uint16 block_status_word;   // The Block Status Word of the Message   Uint16 time_tag;   Uint16 data_poiner;         // The Pointer to the data bulk   Uint16 command_word;        // Command Word

  Uint16 status_word;   Uint16 rec_rt_status_word; // For Rt to RT   Uint16 tran_command_word;  // For RT to RT   Uint16 pdata_bulk[72];        // Data bulk   Uint16  data_size;          // The Size of the data words   Uint16  msg_format;         // The Message F }*BU61580_MT_MSG[MSG_MAX_SIZE];

 

  pBU61580_MT_MSG[CurrentMsgCnt]=(struct MT_MSG1*)malloc(sizeof(struct MT_MSG1));

在DSP28335程序编写中,频率怎么转化成角度

$
0
0

各位大神:

在DSP28335程序编写中,频率怎么转化成阿发,贝塔的变化角度啊?

关于28035中 TZ保护功能

$
0
0

我做了一个AC-DC模块,移相全桥拓扑,频率10KHZ,输入电压AC-380V,输出DC 300 - 750V,变压器10:10:10,一个初级两路次级,两路次级串联;

当输出电压超过730V时,总会触发TZ1中断; (我将TZ1(GPIO12)作为过流保护输入脚,当电流超过一定值时TZ1会被拉低,锁定PWM输出为低电平,

功能可以实现),  我将TZ1的输入信号断开(将电流环开路,电压闭环),仍然会有TZ1中断;

请教:

1.    TZ1的触发源都已经断开了,为什么还会触发中断呢?

2.    TZ1是否还有其它的触发源?

配置如下:

/*TZ1 GPIO12 config*/

EALLOW;

GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up on GPIO12 (TZ1)

GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // Asynch input GPIO12 (TZ1)

GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1; // Configure GPIO12 as TZ1

EDIS;

/*TZ1 function config*/

EALLOW;
PieVectTable.EPWM1_TZINT = &epwm1_tzint_isr;
EDIS;
EALLOW;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;
EPwm1Regs.TZCTL.bit.TZA = 2;
EPwm1Regs.TZCTL.bit.TZB = 2;

EPwm2Regs.TZSEL.bit.OSHT1 = 1;
EPwm2Regs.TZCTL.bit.TZA = 2;
EPwm2Regs.TZCTL.bit.TZB = 2;

EPwm1Regs.TZEINT.bit.OST = 1;
EDIS;
IER |= M_INT2;
PieCtrlRegs.PIEIER2.bit.INTx1 = 1;
PieCtrlRegs.PIEIER2.bit.INTx2 = 1;

__interrupt void epwm1_tzint_isr(void)
{

// Acknowledge this interrupt to receive more interrupts from group 2
if(State == _DC_DC_run_)
{
GpioDataRegs.GPADAT.bit.GPIO13 = 0;
EPwm2Regs.TBPHS.half.TBPHS = 0;
Err.bit.Current_hardware_err = 1;
}
PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
}

28034加密之后仿真器无法连接,(将芯片复位的时候可以连接上)

$
0
0

28034加密之后仿真器无法连接,短接RS到地的时候去连是可以连接上的。有人遇到过么,怎样才能正常连接!!

导入28035的程序之后,一直报错,还有一大堆的警告

$
0
0

有一个别人给的程序,我的版本是CCS6的,之前的版本未知,导入后,出现错误,错误如图所示。还有一大堆的警告。

在看主程序中,一些结构体的声明看不到,像第三张图里边的那个结构体是黑色的,之前看的程序应该是绿色的,这是为什么呢?我是小白,对DSP知之甚少,还望大神能够指点一二。

关于F28035的定点运算问题。

$
0
0

    首先请问F28035是不是只能支持16位的乘法运算?否则超过后会强制为16位?


28035Flash扇区擦除问题疑问

$
0
0

最近在开发bootloader,需要调用API库函数。发现如果在cmd文件中将flashA扇区设定为

 FLASHA      : origin = 0x3F6000, length = 0x001F80     /* on-chip FLASH */

 CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */   

 BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */   

CSM_PWL_P0  : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */

 

个人理解按照以上定义,flashA扇区长度应该从 0x3F6000开始,到0x3F7F80结束。0x3F7FF6处放置程序的初始跳转向量。

问题是:当我在程序中运行指令FLASH_Erase(SECTORA)后,查看程序内存,发现之前flashA内部的数据和0x3F7FF6处的跳转向量都被擦除了,全部变成0xFFFF。也就是说指令FLASH_Erase(SECTORA)擦除的地址范围是从0x3F6000开始,到0x3F8000.  明显与CMD中分配的FLASHA地址不一致啊。到底flashA范围是多大?如果我将FLASHA 修改为     : origin = 0x3F6000, length = 0x000010    /* on-chip FLASH */ 是不是没有作用? flash的各个扇区大小范围能否被修改?如果可以,那以上擦除的时候出现问的问题如何解释?

 

望TI给出解答

在lab05b中增加绝对编码器信息

$
0
0

现在需要利用TI的无传感器FOC控制算法,实现伺服控制功能。

对电机的电流、转速和位置进行精确控制,特别是低速性能。

TI的FAST无传感器控制策略显然是无法实现的。这里希望在Instaspin算法的基础上,增加绝对位置编码器信息。

FOC控制的电角度由绝对位置编码器提供。

现在我在28069上通过SPI已经可以读到准确的绝对位置数据,

但我不知道如何将编码器数据,转换为FOC的电角度信息,融合到lab05b的例程中。

实现对电机的平稳控制。

你们是否有过类似应用,该如何实现,是否有一些参考帖子。谢谢

希望得到TI工程师的回复,谢谢~

28035串口升级

$
0
0

想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!

我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。

请问28035程序中,将程序烧写到Flash,其中使用的语句MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart), InitFlash(),能够使Ramfuns段里的函数从Flash调到RAM里运行,请问Ramfuns段里都包含什么函数呢?

$
0
0

28035程序中,将程序烧写到Flash,其中使用的语句MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart), InitFlash(),能够使Ramfuns段里的函数从Flash调到RAM里运行,请问Ramfuns段里都包含什么函数呢?谢谢

28346外扩flash启动

$
0
0

28346通过XINTF6外扩flash,发现XINTF地址线引脚与XINTF16启动配置引脚复用,如何解决?

28346外扩flash烧写的是文件格式问题

$
0
0

28346外扩flash烧写的是文件是二进制文件,是如何转换的?

串口烧写算法CKFA优化

$
0
0

    做了接近两个月,终于把这个该死的28335 CKFA串口烧写项目写完了,PC软件使用VC2010!
    
    总结:感觉CKFA的烧写思路效率不高,因为需要把这个28335 (256k * 16)的flash空间填充,也就是串口需要发送 256 * 2  * 1024 = 524288 8位数据。对比第三方 C-prog软件,不需要填充数据,速度比CKFA快很多,本人写的软件烧写28335需要70秒左右。

    问题:
    1.回调函数的使用,涉及到双缓冲区,他的工作原理如何提高速度?
    2.CKFA能否进行优化,减小发送数据(不需要填充0xFFFF)?


28035驱动PMSM的问题

$
0
0

我对28035的PMSM程序中的RC_MACRO(v)不理解,

typedefstruct { _iq  Freq;     // Input: Ramp frequency (pu)  

                 _iq  StepAngleMax;  // Parameter: Maximum step angle (pu)      

                 _iq  Angle;     // Variable: Step angle (pu)                     

                 _iq  Gain;          // Input: Ramp gain (pu)

                 _iq  Out;      // Output: Ramp signal (pu)

                 _iq  Offset;        // Input: Ramp offset (pu)               

               } RAMPGEN;              

 

每执行一次MainISR中断就执行一次RC_MACRO(rc1)宏,

RC_MACRO(rc1)宏的初值如下

typedefstruct { _iq    TargetValue;     // Input: Target input (pu)

                 Uint32 RampDelayMax;   // Parameter: Maximum delay rate (Q0) - independently with global Q           

                 _iq    RampLowLimit;    // Parameter: Minimum limit (pu)                 

                 _iq    RampHighLimit;   // Parameter: Maximum limit (pu)

                 Uint32 RampDelayCount; // Variable: Incremental delay (Q0) - independently with global Q   

                 _iq    SetpointValue;   // Output: Target output (pu)              

                 Uint32 EqualFlag;      // Output: Flag output (Q0) - independently with global Q

               } RMPCNTL;              

 

#define RMPCNTL_DEFAULTS { 0,        \

                           5,       \

                            _IQ(-1), \

                            _IQ(1),  \

                            0,       \

                            0,       \

                            0,       \

                             }

 

RC_MACRO(rc1)宏的定义如下

#define RC_MACRO(v)                                     \

    rc_tmp = v.TargetValue - v.SetpointValue;           \

/*  0.0000305 is resolution of Q15 */                   \

if (_IQabs(rc_tmp) > _IQ(0.0000305))                    \

{                                                       \

    v.RampDelayCount += 1;                              \

        if (v.RampDelayCount >= v.RampDelayMax)         \

        {                                               \

            if (v.TargetValue >= v.SetpointValue)       \

            {                                           \

                v.SetpointValue += _IQ(0.0000305);      \

                if (v.SetpointValue > v.RampHighLimit)  \

                    v.SetpointValue = v.RampHighLimit;  \

                v.RampDelayCount = 0;                   \

            }                                           \

            else                                        \

            {                                           \

            v.SetpointValue -= _IQ(0.0000305);          \

            if (v.SetpointValue < v.RampLowLimit)       \

                v.SetpointValue = v.RampLowLimit;       \

            v.RampDelayCount = 0;                       \

            }                                           \

        }                                               \

}                                                       \

else v.EqualFlag = 0x7FFFFFFF;

 

buildlevel中,rc1.TargetValue = SpeedRef; SpeedRef=IQ(0);

我理解的是SetpointValue和EqualFlag作为RC_MACRO(rc1)宏的输出,而SetpointValue又作为RG_MACRO(rg1)的输入,有谁可以解释一下RC_MACRO(v)的执行过程和对电机产生的效果吗,谢谢

有关TMS320C28346地址的问题

$
0
0

TMS320C28346的boot rom需要占用XA12——XA15(GPIO84——GPIO87),而如果我要外扩Flash的话,需要占用XA0——XA15,这样会不会有冲突,如何解决这个问题?

CCS6.0 编译成功 无法生成.out文件

$
0
0

**** Build of configuration Debug for project PMSM_Inverter ****

"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k all

**** Build Finished ****

建议便签下是一下内容

Description Resource Path Location
Current optimization/debug settings: --opt_level=off --opt_for_speed=2 -g PMSM_Inverter properties
<a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/27007.html">#27007-D</a> Detecting compilation without optimization. Recommend setting --opt_level=3. NOTE: debug ability will decrease. PMSM_Inverter properties

这是什么问题才会出现这样的错误,,  谢谢

F28335 新建工程 出现 #10010 errors encountered during linking; "my_test_pro.out" not built 不知道是什么原因,查过论坛上的类似贴子还是没有解决 附上我设置的截图

CCS中280049M.ccxml的flash烧写配置问题

$
0
0

all:

      我想保留flash blank0中0x80000-0x83FFF 的flash做eeprom和在线升级代码,那么我们在ccs中的.ccxml这样配置是否可以, 那个Erase Seting中的这部分0x80000-0x83FFF 地址需要勾掉吗?的具体配置见下图:

Viewing all 12343 articles
Browse latest View live
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>