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

CLAmathTable的问题

$
0
0

使用例程2837x_sinPU是正确的,设置为FLASH模式,CLA_MATH_TABLES_IN_ROM定义,在CLA中计算sin正确的;把程序、CMD的CLA1mathTables都注释掉也是正确,因为存储空间有限,所以使用CLA_MATH_TABLES_IN_ROM;

但是在自己的程序中就不对了,仿真sin步数是对的,但是得到的数据一直为0,编译的时候出现两个警告:

1、Description Resource Path Location Type
#10247-D null: creating output section "CLA1mathTables" without a SECTIONS specification TESTPRJ    C/C++ Problem;

2、Cla1Regs.MVECT1 = (uint16_t)(&Cla1Task1);这段话也会有警告:Description Resource Path Location Type
#770-D conversion from pointer to smaller integer ClaDriver.c /TESTPRJ/one line 110 C/C++ Problem;

比较例程和自己的程序,没有太大差别,请教高手解惑!


F2407如何扩展片外存储器

$
0
0

新手想请问一下如何使用片外存储器。例如F2407中DS、PS为片选信号,连接了外部ram的片选。A0-A15连接了外部ram的A0-A15地址线,D0-D15也连接了外部ram的D0-D15数据线。(64K的外部存储器)。这时候我应该如何编程使用外部存储器呢,就是编写DS、PS这种片选信号,也没有寄存器可以控制这些信号啊。还有就是如果片选信号接通了是不是在cmd文件中给外部存储区分配了空间就可以使用了呢。因为手册里写的8000-FFFF是外部存储,如果是连接了16位的地址线,也就是64K的外部存储会发生什么...0-7FFF的区域使用的是片内存储还是片外存储。新手没用过,可能有些表述有常识性错误,希望有人帮忙解答一下,急急急,万分感谢!!!

用ccs整定电机参数,修改头文件保存后,实验调试的gMotorVars.Flag_enableSys值无法置1

$
0
0

我用ccs整定电机参数,用lab2c整定完,改好头文件之后,如果保存了user.h的更改,在调试的时候gMotorVars.Flag_enableSys值就无法置一,由于我的电机只有在lab2c这个实验里能被整定,做lab3a实验时,因为头文件共用,所以会出现以上同样问题,如果不点保存头文件更改,在做lab3a实验时,gMotorVars.Flag_enableUserParams置1,自动读取的电机参数不是我设定在头文件里的参数,而是程序头文件未被更改时电机带的参数,这个问题该如何解决

[XINTF]总线问题,读不了外置ram

$
0
0

本人最近设计了一块DSP+FPGA的核心电路板,DSP与FPGA通过EMIF连接,RAM挂在总线ZONE6上,用DSP读0x100000的值,总是会出现lowpower情况;单独用DSP单片机外接RAM时,可以正常读取,想请教这种情况怎么办?

28335 CAN通信 TX引脚无信号

$
0
0

使用官方例程V133版本的ecan_a_to_b_xmit

无法实现can通信,发送一直卡在红色区域

for(i=0; i < TXCOUNT; i++)
   {
       ECanaShadow.CANTRS.all = 0;
       ECanaShadow.CANTRS.bit.TRS25 = 1;             // Set TRS for mailbox under test
       ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;

       do
     {
       ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    
  } while(ECanaShadow.CANTA.bit.TA25 == 0 );   // Wait for TA25 bit to be set..


       ECanaShadow.CANTA.all = 0;
       ECanaShadow.CANTA.bit.TA25 = 1;               // Clear TA25
       ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;

       loopcount ++;
    }

针对这个问题已经做过以下的检测:

1、利用GPIO已验证CAN收发器能正常工作,另外一端连接的CAN测试仪也能正常工作

2、通过示波器发现CANTX引脚输出电平似乎没有变换过,因此怀疑是CANTX不能正常工作,导致CAN收发器不能给DSP发送成功的确认

3、检查过寄存器、GPIO(GPIO19,功能脚3)的设置应该没问题

采用的CCS5.2,仿真器XDS510PLUS,win10系统

搜索过这个问题,发现8年前就有人遇到过,但似乎不能解决我这个问题,希望遇到这个问题的前辈能给一些思路,谢谢

28033,28035 CLA

$
0
0

28033中,CLA能够直接控制GPIO吗,比如某一个GPIO翻转,变高,拉低等。如果可以的话用哪些汇编指令?

2803x 如何测量CLA时间

$
0
0

2803x  如何测量CLA时间,想测试下cLA使用率,不知道如何测试?

F28069 TZ故障问题

$
0
0

你们好,

我现在用F28069的TZ故障。当正常时,TZ信号为高电平,有PWM输出;当TZ信号为低电平时PWM一直关闭。我想做成发生TZ触发后PWM关闭10S后,如果TZ信号正常了,PWM可以有输出。也即怎么让TZ出发后,然后TZ故障消除了,停上10S再启动。

EALLOW;
// CPU Halt Trip
EPwm1Regs.TZSEL.bit.CBC6=0x1;
EPwm2Regs.TZSEL.bit.CBC6=0x1;
EPwm3Regs.TZSEL.bit.CBC6=0x1;


EPwm1Regs.TZSEL.bit.OSHT1 = 1; //enable TZ1 for OSHT
EPwm2Regs.TZSEL.bit.OSHT1 = 1; //enable TZ1 for OSHT
EPwm3Regs.TZSEL.bit.OSHT1 = 1; //enable TZ1 for OSHT

// What do we want the OST/CBC events to do?
// TZA events can force EPWMxA
// TZB events can force EPWMxB

EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // EPWMxA will go low
EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // EPWMxB will go low

EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // EPWMxA will go low
EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // EPWMxB will go low

EPwm3Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // EPWMxA will go low
EPwm3Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // EPWMxB will go low

EDIS;

// Clear any spurious OV trip
EPwm1Regs.TZCLR.bit.OST = 1;
EPwm2Regs.TZCLR.bit.OST = 1;
EPwm3Regs.TZCLR.bit.OST = 1;

if(EPwm1Regs.TZFLG.bit.OST==0x1) // TripZ for PWMs is low (fault trip)
{ TripFlagDMC=1;
GpioDataRegs.GPBTOGGLE.bit.GPIO42 = 1;
}


F28377S的upp数据大小

$
0
0

我看datasheet上写的,upp中DMA大小最低可以选择64byte,但是我只需要发射2byte的数据,请问我需要攒够64byte或者再发送62byte空数据吗?

在CLA看C语言的汇编程序,怎么有这么多MNOP?!

$
0
0

有的一条语句就有几个MNOP!

关于C2000串口ScibRegs.SCIRXST.bit.RX ERROR疑问

$
0
0

本人没有使用FIFO功能。配置如下

ScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.bit.TXINTENA =1;
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
ScibRegs.SCIHBAUD = 0x00;//0x0000; LSPCLK=90M/4=22.5M
ScibRegs.SCILBAUD = 0x92;//SCI_PRD; Baud = LSPCLK/(baud*8) = 22.5M/(0x0493 * 8) = 2400

ScibRegs.SCIPRI.all = 0x10;
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset

手册有提到

the SCIRXST register has two interrupt flag bits
(RXRDY and BRKDT), plus the RX ERROR interrupt flag which is a logical OR of the FE, OE, BRKDT,
and PE conditions.

RX ERROR interrupt不被使能,但是由于就收中断和BRKDT中断使能公用一个使能位ScibRegs.SCICTL2.bit.RXBKINTENA =1;所以

我在接收中断中有特殊处理 BRKDT位,如下

if(ScibRegs.SCIRXST.bit.BRKDT)
{
ScibRegs.SCICTL1.bit.SWRESET=0;

}

ScibRegs.SCICTL1.bit.SWRESET=1;

我的疑问是如果是其他的错误产生了,比如FE, OE, BRKDT,
and PE conditions.那么我上述的只是处理了BRKDT的条件软件复位,那么串口还能正常工作吗?会不会死在中断?

求TI专家权威正解

封装lib库函数运行速度慢

$
0
0

就是小弟,遇到了一个问题,我用CCS封装成的.lib库函数,放到DSP里跑,速度比原来直接编译到工程里,慢了将近8倍,这是为什么啊?有没有大佬给解决一下.lib库函数运行速度慢的问题啊!

关于BLDC电机驱动电路中的吸收电容选取的问题

关于数组的疑问

$
0
0

芯片:TMS320F28335

定义全局数组如下

float Array[12] = {0};

...

main

{

.......

}

代码烧录到Flash中运行

main函数中有对数组的赋值操作

调试过程中,在CCS中复位或restart时,已经赋值的元素数值还是会存在

但是在调试过程中发现,复位或者restart后只有数组的第一个元素会被清0,这是什么原因呢

关于永磁同步电机初始定位电气零位的疑问

$
0
0

4对极永磁电机有4个电气零位

24对极永磁电机有24个电气零位

请问初始定位时有办法控制转子定位到哪个电气零位吗?

还是只能控制转子运动到最近的一个电气零位


关于28335中ePWM的时钟分频问题

$
0
0

我的想法是想产生不对称的三角波(三角波两边斜率不一样),于是想到将ePWM的时钟分频位CLKDIV和HSPCLKDIV的设置放在中断中,每进一次主中断就改变一次分频系数,不知道我的这种想法可行否?

下面代码是放在主中断中的,但是改变其值的大小,好像对三角波没有影响,寄存器TBCTL的值并没有改变。

 (*ePWM[1]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
 (*ePWM[2]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[3]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;

 (*ePWM[1]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[2]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
 (*ePWM[3]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;

1.想问不对称三角波应该怎么实现?

2.上述操作存在什么问题?

不胜感谢!!!

f28335 i2c 状态位

$
0
0

请问下,i2c 主发送产生一个停止位后,这个停止位是如何被清除掉的。下一次的主发送 产生一个起始位,将当前的停止位清除掉吗

CLA调试中经常一会就连接不上,一般是什么原因?

$
0
0

每次烧写后只能调试1~2分钟,然后就出现下面警告,再然后就不能仿真了,28X CPU也不能运行了。不调试CLA只调试28X是没有问题的;

CPU1_CLA1: Can't Single Step Target Program: (Error -1091 @ 0x0) Unable to control device execution state. Reset the device, and retry the operation. If error persists, confirm configuration, power-cycle the board, and/or try more reliable JTAG settings (e.g. lower TCLK). (Emulation package 7.0.100.0)
C28xx_CPU1: Error: (Error -1135 @ 0xACE0B) The debug probe reported an error. Confirm debug probe configuration and connections, reset the debug probe, and retry the operation. (Emulation package 7.0.100.0)
CPU1_CLA1: Trouble Reading Memory Block at 0xbad on Page 0 of Length 0x38: (Error -4 @ 0x175A) Internal error: Invalid error code. Restart the application. If error persists, please report the error. (Emulation package 7.0.100.0)
CPU1_CLA1: Error: (Error -4 @ 0x0) Internal error: Invalid error code. Restart the application. If error persists, please report the error. (Emulation package 7.0.100.0)
CPU1_CLA1: Unable to determine target status after 20 attempts
CPU1_CLA1: Failed to remove the debug state from the target before disconnecting.  There may still be breakpoint op-codes embedded in program memory.  It is recommended that you reset the emulator before you connect and reload your program before you continue debugging
C28xx_CPU1: Unable to determine target status after 20 attempts
C28xx_CPU1: Failed to remove the debug state from the target before disconnecting.  There may still be breakpoint op-codes embedded in program memory.  It is recommended that you reset the emulator before you connect and reload your program before you continue debugging

关于28335的ePWM的TBCTL的设置问题

$
0
0

/* Init Timer-Base Control Register for EPWM1-EPWM3*/ \
(*ePWM[ch1]).TBCTL.all = PWM_INIT_STATE; \
(*ePWM[ch2]).TBCTL.all = PWM_INIT_STATE; \
(*ePWM[ch3]).TBCTL.all = PWM_INIT_STATE; \

上面代码是对TBCTL的设置,其中PWM_INIT_STATE是下面代码,

#define PWM_INIT_STATE ( FREE_RUN_FLAG + \
PRDLD_IMMEDIATE + \
TIMER_CNT_UPDN + \
HSPCLKDIV_PRESCALE_X_8 + \
CLKDIV_PRESCALE_X_8 + \
PHSDIR_CNT_UP + \
CNTLD_DISABLE )

我想单独设置HSPCLKDIV和CLKDIV两个时钟的分频系数,但是编写如下代码后,TBCTL寄存器的值仍然和PWM_INIT_STATE的设置一致,然后我将

HSPCLKDIV_PRESCALE_X_8 + \  CLKDIV_PRESCALE_X_8 + \这两句删除以后,寄存器的值还是和我配置的不一样。

(*ePWM[ch1]).TBCTL.bit.HSPCLKDIV = 0x0100; \
(*ePWM[ch2]).TBCTL.bit.HSPCLKDIV = 0x0100; \
(*ePWM[ch3]).TBCTL.bit.HSPCLKDIV = 0x0100; \
\
(*ePWM[ch1]).TBCTL.bit.CLKDIV = 0x0400; \
(*ePWM[ch2]).TBCTL.bit.CLKDIV = 0x0400; \
(*ePWM[ch3]).TBCTL.bit.CLKDIV =0x0400; \

请问:怎样才能单独改变两个分频系数?

          比如说我在中断中改变分频系数的值(进一次中断改变一次两个分频系数的值)应该怎么做?

TI有没有用于开关磁阻电机开发的套件?第三方的也可以

$
0
0

如果有的话,请推荐一下,谢谢了

Viewing all 12242 articles
Browse latest View live


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