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

引用时基计数器的问题

$
0
0
 if(0x1111>=EPwm1Regs.TBCTR && EPwm1Regs.TBCTR >= 0x0000) 这样写有没有问题? 

在controlsuit CLA flash

$
0
0

在controlsuit 没有关于28377D的CLA  加载到flash 的CPU1 ,CPU2, CPU2.CLA1 这三个核同时运行的例子吗。我找了一个都没CMD文件 且好像是在RAM(如下图) 且这不是我要的那种。

弱弱地问一下

$
0
0

在TI例程中看到的:

uint16fptr   这个是什么类型的数据?


typedef Uint16 (* uint16fptr)();    表示 (* uint16fptr)() 仅仅为 16位的无符号的整型吗?   

TMS320F28335PGFA 出厂自带闪存擦除

$
0
0

TMS320F28335PGFA     圈出来的部分,正常擦除一个部分是2s, 一共4次。所以应该是8s就可以擦除。但是现在要要用到18s, 帮忙咨询这种现象是否正常   ~

C2000Ware_1_00_06_00的can函数库中没有读取仲裁段(id域)的库函数

$
0
0

最近使用280049进行can驱动和应用开发,使用C2000Ware_1_00_06_00,发现can函数库中没有读取仲裁段(id域)的库函数。不知道是出于什么考虑?如果发送的时候可以使用CAN_setupMessageObject函数来设置仲裁段(id域),读取的时候只提供了通过邮箱号读取数据段的函数,没有提供读取仲裁段(id域)的函数

TMS320F28377D FLASH程序运行

$
0
0

同一个程序,用RAM编译后加载运行正常,用flash编译烧写进去后运行。程序直接进入非法操作中断。烧写程序的时候也没有任何错误,不知道是哪里的问题。

CCS 6.2 如何创建或导入C++的工程

$
0
0

有一个用C++开发的项目。开始导入这个工程的时候出现了大量class类和其他变量未定义的错误。然后我自己重新建了一个工程,添加原工程的.cpp和.h文件也出现了同样的问题。所有定义都是在头文件中,我已经把头文件的路径设置好了,但不知道为什么会出现这样的问题。请问与用C开发相比,用C++开发DSP需要额外设置什么吗?

28027怎么将程序烧到FLASH里

$
0
0

现在我用D:\ti\controlSUITE\device_support\f2802x\v230\f2802x_examples_drivers里的flash_f2802x例程,在调试模式下能正常运行,但一掉电再上电就不能运行。我也找了资料说是在工程属性--general--linker command file里填写F28027.cmd,我也按照这样操作了,结果编译有错,都不能编译了(不填F28027.cmd就能正常编译并在调试里正常运行,说明程序没问题)。注:原来linker command file里的内容是F2802x_Headers_nonBIOS.cmd,并不是网上说的28027_RAM_lnk.cmd。


从官网上下载的TMS320F380049C的例程tidm_1022, 编译报错error #10008-D : cannot find file" driverlib.lib"是什么原因?

$
0
0

从TI官网上下载的应用示例程序tidm_1022,编译报出如下错误,将这些文件从File search path中删除还是会报出下面错误,是什么原因?

DSP2812 除法运算问题

$
0
0

问题1:如上图测试程序所示,用的ccs3.3版本,其中PID_Cur_q[0].Fdb是long型数据,int16定义的是int型的,wx1数组应该算出来的值一样才对,但是通过不同的乘法和除法运算顺序的颠倒,导致最后一个结果异常既:(int16)((fdb*190)/(8192*150))算出的值是-115,实在不知道是怎么回事,不知道哪个大牛能不惜赐教,解答本人疑惑。

问题2:之前还遇到一个问题,代码部分搬移到ram里去运行,由于要在线升级程序,所以把flash的程序擦除重新下载新程序(这部分功能在ram里实现的),但是在擦除后,ram里一运算除法运算就异常退出,也不知道问题出在哪里,还请高人指点。

还请大家帮忙解答,可能是哪里出的问题呢?着急...

F28075 bootload 编写求指导

$
0
0

   项目需要远程升级程序,设计思路暂定如下:

    FLASH 分 bootload区和APP区,bootload区的功能主要是读外部W25Q32的内容写入到APP区;APP区功能就是应用程序。  

      具体做法是:  MCU通过网络接收到 目标程序文件(xx.hex),保存在外部W25Q32中(这部分功能已完成),然后MCU重启,

        重启后MCU先运行bootload程序判断是否需要升级:

           1:如果需要升级,则读出保存在外部W25Q32中的内容,复盖APP区的内容,修改判断标记,重新启动;

           2:如果不需要升级,则直接跳到APP区运行APP程序。

 

目前bootload程序需要指导(目前是学例程中的SCI_BOOT,方向不知是否正确?),求APP、bootload 的CMD文件设置,能提供提一个能运行的例子的话,

感激不尽。如果没有我只有继续努力了,对所有提供指导和帮忙的人先说声,谢谢!

马达历程13b 位置控制出错后如何解除错误 继续运行?

DRV8301-69M-KIT套件购买

$
0
0

想购买DRV8301-69M-KIT套件,该套件官网介绍页面说明,可以使用随附的的电机,请问:

1,这款套件购买的时候确定随附电机吗?

2,从官网购买和从代理处购买时间周期分别需要多长?价格是否含税?我在北京

,

DSP2812 SCI SLEEP后无法唤醒

$
0
0

空闲线模式, 接收使能, 接收中断已使能, 485芯片一直处于接收状态, 如下图

用PC串口助手每一秒发几个数字, 示波器看过两次发送间隔总线空闲时间很长, 足以满足SLEEP后10位或更长空闲时间, 两次接收到的数据间隔如下图

只要SLEEP位手动置0, 接收中断程序里的计数器就会增长,如下图

如果SLEEP置1, 则计数器停止增长,如下图

接收计数器位置在中断程序中,如下图

非常困惑, 所有状态都是正常的, 且两次发送数据时间时间也满足空闲线的要求, 为什么就不能唤醒SCI??  示波器表笔是夹在SCI 接收引脚上测的, 请各位大神指点

28335两路ADC采集的问题

$
0
0

#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File

// Prototype statements for functions found within this file.
interrupt void adc_isr(void);

// Global variables used in this example:
Uint16 LoopCount;
Uint16 ConversionCount;
Uint16 Voltage1[10];


main()
{

// Step 1. Initialize System Control:
// PLL, WatchDog, enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
InitSysCtrl();


#if (CPU_FRQ_150MHZ) // Default - 150 MHz SYSCLKOUT
#define ADC_MODCLK 0x3 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 150/(2*3) = 25.0 MHz
#endif
#if (CPU_FRQ_100MHZ)
#define ADC_MODCLK 0x2 // HSPCLK = SYSCLKOUT/2*ADC_MODCLK2 = 100/(2*2) = 25.0 MHz
#endif
EDIS;
EALLOW;
SysCtrlRegs.HISPCP.all = ADC_MODCLK; // HSPCLK = SYSCLKOUT/ADC_MODCLK
EDIS;
EALLOW;
// Step 2. Initialize GPIO:
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it's default state.
// InitGpio(); // Skipped for this example

// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
DINT;

// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP2833x_PieCtrl.c file.
InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
// This will populate the entire table, even if the interrupt
// is not used in this example. This is useful for debug purposes.
// The shell ISR routines are found in DSP2833x_DefaultIsr.c.
// This function is found in DSP2833x_PieVect.c.
InitPieVectTable();

// Interrupts that are used in this example are re-mapped to
// ISR functions found within this file.
EALLOW; // This is needed to write to EALLOW protected register
PieVectTable.ADCINT = &adc_isr;
EDIS; // This is needed to disable write to EALLOW protected registers

// Step 4. Initialize all the Device Peripherals:
// This function is found in DSP2833x_InitPeripherals.c
// InitPeripherals(); // Not required for this example
InitAdc(); // For this example, init the ADC

// Step 5. User specific code, enable interrupts:

// Enable ADCINT in PIE
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1; // Enable CPU Interrupt 1
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM

LoopCount = 0;
ConversionCount = 0;

// Configure ADC
AdcRegs.ADCMAXCONV.all = 0x0000; // Setup 1 conv's on SEQ1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0; // Setup ADCINA0 as 1st SEQ1 conv.
AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1;// Enable SOCA from ePWM to start SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1; // Enable SEQ1 interrupt (every EOS)
// Assumes ePWM1 clock is already enabled in InitSysCtrl();
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
EPwm1Regs.ETSEL.bit.SOCASEL = 4; // Select SOC from from CPMA on upcount
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
EPwm1Regs.CMPA.half.CMPA = 0x0080; // Set compare A value
EPwm1Regs.TBPRD = 0xFFFF; // Set period for ePWM1
EPwm1Regs.TBCTL.bit.CTRMODE = 0; // count up and start

// Wait for ADC interrupt
for(;;)
{
LoopCount++;
}

}


interrupt void adc_isr(void)
{

Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;


// If 40 conversions have been logged, start over
if(ConversionCount == 9)
{
ConversionCount = 0;
}
else ConversionCount++;

// Reinitialize for next ADC sequence
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; // Clear INT SEQ1 bit
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // Acknowledge interrupt to PIE

return;
}

请问怎么改动这个程序才能实现两个通道的数据采集?


TIDA-00961中Si的驱动电阻问题?

$
0
0

看到运行在交流频率的Si的驱动电阻,原理图中是不是画错了啊,怎么可能用4.99k的电阻啊,还有为什么在GS间不加电阻啊?

马达历程13b 位置控制出错后只能复位解除吗?

$
0
0

马达历程13b  位置控制出错后只能复位解除吗?

假如 我要马达转10转 , 结果转了5转位置控制出错了(PosCtlErrorID=2002);这时候位置控制就死了,只有从新复位。 我要求 如果位置出错了,发现马达少走了5圈,我要解除错误 再次发命令让马达走5圈。       是否可以?

关于28377D的SYSBIOS CPU时钟频率配置问题

$
0
0

请问如何将SYSBIOS中默认的2.5MHz修改为28377D最大频率200MHz?

关于F28335的GPIO使用

$
0
0

当F28335的GPIO设置mux = 0,dir为输入状态时,是否可以通过GpioDataRegs.GPxDAT.bit.GPIOx = 0
GpioDataRegs.GPxSET.bit.GPIOx = 0两个方法设置寄存器的状态?

280049c接收到can数据后只有数据段,没有仲裁域

$
0
0

使用280049c开发can部分驱动,使用开发板的canA。

发送寄存器中,CAN_IF1DATA和CAN_IF1DATB和需要发送的数据一致,CAN_IF1ARB和要发送的仲裁域一致。

但是,从对端发送到开发板的can上后,观察can的接收寄存器,CAN_IF2DATA和CAN_IF2DATB寄存器和对端发送的数据一致,但是CAN_IF2ARB为0,读取不到仲裁域。

Viewing all 11553 articles
Browse latest View live