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

28377D调用一次can发送函数后,总线就关闭了,报错Last Error Code 111

$
0
0

上面是我debug时候看的寄存器状况,CAN_ES寄存器显示总线关闭并且报错111

这是我的main函数里的while

CANMessageSet(CANA_BASE, 1, &sTXCANMessage, MSG_OBJ_TYPE_TX); //data transmit function
GPIO_WritePin(151, 1);
delay_loop();
GPIO_WritePin(151, 0);
delay_loop();

初始化完之后查看各个寄存器都正确,第一次发送后,发送请求寄存器为1,意思就是有发送请求但是还未发送

过一会儿就累次错误次数达到255,总线就关闭了。

有人遇到过这种情况吗?   这是我用例程代码写的,会不会是我硬件错误?


电机软启动的问题

$
0
0
请教下电机软启动的问题   就是在图示几个位置启动电机的时候  会找不准Z脉冲的位置并发生震动  会是什么原因?用的是controlsuite里面的motorservo的程序
 

关于320F2812的flash读写的疑问咨询

$
0
0

您好!关于2812的在线读写flash有几个问题咨询:

1、使用TI官方的API函数,在调用如下三个函数的过程中。是否系统自动关闭了所有的中断?还是需要调用函数前,首先做关闭中断操作?

extern Uint16 Flash_Erase(Uint16 SectorMask, FLASH_ST *FEraseStat);
extern Uint16 Flash_Program(volatile Uint16 *FlashAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FProgStatus);
extern Uint16 Flash_Verify(volatile Uint16 *StartAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FVerifyStat);

2、官方的“回调函数,EALLOW;Flash_CallbackPtr”,是如何使用的?回调函数的调用频率是多少?应该如何看待回调函数与中断相应?

3、官方提供的extern Uint16 Flash_Verify(volatile Uint16 *StartAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FVerifyStat);是否已经完成了对于写入flash内容的自动校验过程?而不需要用户再自定义校验?

关于28377D的CPU2使用DMA将数据通过MCBSP发送出去的问题

$
0
0

我在CPU1中调试好DMA程序,既可以将数据通过DMA直接搬移到MCBSP寄存器发送出去,然后放到CPU2中,数据没有发送(MCBSP通过查询方式可以发送数据),请问是什么问题?

我查看了28377D的数据手册,里边只说明了在使用DMA时,只需将BUS的控制权交给DMA就可以了,DMA是不需要控制寄存器进行分配的。我怀疑是不是关于MCBSP模块的初始化和DMA模块的初始化先后顺序有关系?希望得到大神的指教,不胜感激!

关于广义二阶积分锁相环的问题

$
0
0

 如图所示,我采用Ti历程中的锁相环的SOGISPLL,最后输出相角波形有点弯曲,请问Ti员工、大神们这是什么原因引起的呢,有什么解决办法吗,麻烦讲清楚一点,非常感谢!

我的上一个程序上锁了 我想知道我的程序会不会再次锁住芯片 哪位大神能帮我看一下我的map文件告诉我芯片会不会再次上锁

$
0
0

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
PAGE 0:
  BEGIN                 00000000   00000002  00000002  00000000  RWIX
  BOOT_RSVD             00000002   0000004e  00000000  0000004e  RWIX
  RAMM0                 00000050   000003b0  00000000  000003b0  RWIX
  RAML                  00008000   00004000  00000592  00003a6e  RWIX
  ZONE7A                00200000   0000fc00  00000000  0000fc00  RWIX
  CSM_RSVD              0033ff80   00000076  00000000  00000076  RWIX
  CSM_PWL               0033fff8   00000008  00000000  00000008  RWIX
  ADC_CAL               00380080   00000009  00000007  00000002  RWIX
  IQTABLES              003fe000   00000b50  00000000  00000b50  RWIX
  IQTABLES2             003feb50   0000008c  00000000  0000008c  RWIX
  FPUTABLES             003febdc   000006a0  00000000  000006a0  RWIX
  BOOTROM               003ff27c   00000d44  00000000  00000d44  RWIX
  RESET                 003fffc0   00000002  00000000  00000002  RWIX

PAGE 1:
  RAMM                  00000400   00000400  000003e8  00000018  RWIX
  DEV_EMU               00000880   00000180  000000d0  000000b0  RWIX
  FLASH_REGS            00000a80   00000060  00000008  00000058  RWIX
  CSM                   00000ae0   00000010  00000010  00000000  RWIX
  ADC_MIRROR            00000b00   00000010  00000010  00000000  RWIX
  XINTF                 00000b20   00000020  0000001e  00000002  RWIX
  CPU_TIMER0            00000c00   00000008  00000008  00000000  RWIX
  CPU_TIMER1            00000c08   00000008  00000008  00000000  RWIX
  CPU_TIMER2            00000c10   00000008  00000008  00000000  RWIX
  PIE_CTRL              00000ce0   00000020  0000001a  00000006  RWIX
  PIE_VECT              00000d00   00000100  00000100  00000000  RWIX
  DMA                   00001000   00000200  000000e0  00000120  RWIX
  MCBSPA                00005000   00000040  00000025  0000001b  RWIX
  MCBSPB                00005040   00000040  00000025  0000001b  RWIX
  ECANA                 00006000   00000040  00000034  0000000c  RWIX
  ECANA_LAM             00006040   00000040  00000040  00000000  RWIX
  ECANA_MOTS            00006080   00000040  00000040  00000000  RWIX
  ECANA_MOTO            000060c0   00000040  00000040  00000000  RWIX
  ECANA_MBOX            00006100   00000100  00000100  00000000  RWIX
  ECANB                 00006200   00000040  00000034  0000000c  RWIX
  ECANB_LAM             00006240   00000040  00000040  00000000  RWIX
  ECANB_MOTS            00006280   00000040  00000040  00000000  RWIX
  ECANB_MOTO            000062c0   00000040  00000040  00000000  RWIX
  ECANB_MBOX            00006300   00000100  00000100  00000000  RWIX
  EPWM1                 00006800   00000022  00000022  00000000  RWIX
  EPWM2                 00006840   00000022  00000022  00000000  RWIX
  EPWM3                 00006880   00000022  00000022  00000000  RWIX
  EPWM4                 000068c0   00000022  00000022  00000000  RWIX
  EPWM5                 00006900   00000022  00000022  00000000  RWIX
  EPWM6                 00006940   00000022  00000022  00000000  RWIX
  ECAP1                 00006a00   00000020  00000020  00000000  RWIX
  ECAP2                 00006a20   00000020  00000020  00000000  RWIX
  ECAP3                 00006a40   00000020  00000020  00000000  RWIX
  ECAP4                 00006a60   00000020  00000020  00000000  RWIX
  ECAP5                 00006a80   00000020  00000020  00000000  RWIX
  ECAP6                 00006aa0   00000020  00000020  00000000  RWIX
  EQEP1                 00006b00   00000040  00000040  00000000  RWIX
  EQEP2                 00006b40   00000040  00000040  00000000  RWIX
  GPIOCTRL              00006f80   00000040  0000002e  00000012  RWIX
  GPIODAT               00006fc0   00000020  00000020  00000000  RWIX
  GPIOINT               00006fe0   00000020  0000000a  00000016  RWIX
  SYSTEM                00007010   00000020  00000020  00000000  RWIX
  SPIA                  00007040   00000010  00000010  00000000  RWIX
  SCIA                  00007050   00000010  00000010  00000000  RWIX
  XINTRUPT              00007070   00000010  00000010  00000000  RWIX
  ADC                   00007100   00000020  0000001e  00000002  RWIX
  SCIB                  00007750   00000010  00000010  00000000  RWIX
  SCIC                  00007770   00000010  00000010  00000000  RWIX
  I2CA                  00007900   00000040  00000022  0000001e  RWIX
  RAMH                  0000c000   00004000  00000120  00003ee0  RWIX
  ZONE7B                0020fc00   00000400  00000000  00000400  RWIX
  CSM_PWL               0033fff8   00000008  00000008  00000000  RWIX

CsmPwlFile
*          1    0033fff8    00000008     UNINITIALIZED
                  0033fff8    00000008     DSP2833x_GlobalVariableDefs.obj (CsmPwlFile)

C2000有没计算log的快速方法

$
0
0

C2000有没计算log的快速方法

ti 关于bldc 控制的文档哪里下载?

$
0
0

ti 关于bldc 控制的文档哪里下载?


可以在CLA程序种使用自定义库函数吗?

$
0
0

请问,建立一个float的库函数,在CLA中能调用吗?

谢谢

28035 pww移相问题

$
0
0

1、配置如下,以PWM1为基准,PMW2移相120,PWM3移相240

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
EDIS;

InitEPwm1Example();
InitEPwm2Example();
InitEPwm3Example();

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
EDIS;

//PWM1初始化

void InitEPwm1Example()
{

EPwm1Regs.TBPRD = 299; // 200K
EPwm1Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
EPwm1Regs.TBCTR = 0x0000; // Clear counter
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;// 3T
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; //4T 同步顺流TB_SYNC_IN
// Setup TBCLK
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //T Count up
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 1t主模式
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

// Setup compare
EPwm1Regs.CMPA.half.CMPA = 100;

// Set actions
EPwm1Regs.AQCTLA.bit.ZRO= AQ_SET;//180412
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero

// Active Low PWMs - Setup Deadband
/* EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_LO;
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;
EPwm1Regs.DBRED = EPWM1_MIN_DB;
EPwm1Regs.DBFED = EPWM1_MIN_DB;
EPwm1_DB_Direction = DB_UP;*/

// Interrupt where we will change the Deadband
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
EPwm1Regs.ETSEL.bit.INTEN = 1; // Enable INT
EPwm1Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event


}

//pwm2初始化

void InitEPwm2Example()
{

EPwm2Regs.TBPRD = 299; // Set timer period
EPwm2Regs.TBPHS.half.TBPHS = 300-100; //2T Phase is 120
EPwm2Regs.TBCTR = 0x0000; // Clear counter
EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;// 3T
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; //4T TB_CTR_ZERO TB_SYNC_IN
// Setup TBCLK
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //T Count up
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; //1T 从模式TB_DISABLE
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; // Slow just to observe on the scope

// Setup compare
EPwm2Regs.CMPA.half.CMPA = 100;

// Set actions
EPwm2Regs.AQCTLA.bit.ZRO= AQ_SET;//180412
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Set PWM2A on Zero

// Interrupt where we will modify the deadband
EPwm2Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
EPwm2Regs.ETSEL.bit.INTEN = 1; // Enable INT
EPwm2Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event

}

//pwm3初始化

void InitEPwm3Example()
{

EPwm3Regs.TBPRD = 299; // Set timer period
EPwm3Regs.TBPHS.half.TBPHS = 300-200; // Phase is 240
EPwm3Regs.TBCTR = 0x0000; // Clear counter

EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;// 3T
EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; //4T TB_CTR_ZERO TB_SYNC_IN
// Setup TBCLK
EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; //T Count up
EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Disable phase loading
EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1; // Slow so we can observe on the scope

// Setup compare
EPwm3Regs.CMPA.half.CMPA = 100;

// Set actions
EPwm3Regs.AQCTLA.bit.ZRO= AQ_SET;//180412
EPwm3Regs.AQCTLA.bit.CAU = AQ_CLEAR; // Set PWM3A on Zero

// EPwm3Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM3A on Zero
// EPwm3Regs.AQCTLB.bit.CAD = AQ_SET;


// Interrupt where we will change the deadband
EPwm3Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // Select INT on Zero event
EPwm3Regs.ETSEL.bit.INTEN = 1; // Enable INT
EPwm3Regs.ETPS.bit.INTPRD = ET_3RD; // Generate INT on 3rd event

}

以上初始化完毕后,在其它地方没有PWM做任何更改,然后主main程序for循环

正常情况1:pwm1/2/3能够正常发板,pwm2移相120,pwm3移相240

for(;;)
{
asm(" NOP");

}

异常情况2:在中断中,对TBPRD重新再次赋值一次,pwm1能够正常发板,pwm2不能发波,pwm3正常发波,移相240

interrupt void epwm1_isr(void)
{

EPwm1Regs.TBPRD = 299;
EPwm2Regs.TBPRD = 299; 不发波
 EPwm3Regs.TBPRD = 299;
EPwm1TimerIntCount++;


EPwm1Regs.ETCLR.bit.INT = 1;

// Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

}

请问各位大侠,为什么在中断更新TBPRD一次后,PWM2就不能发波了,更别提移相了。但是pwm3正常。移相需要额外配置啥嘛?

28335 代码全部在外部RAM运行

$
0
0

现在想把代码全部放在外部RAM中运行,思路如下:上电跑到flash,然后从flash把代码全部复制到外部RAM中运行,复制代码不使用#pragma CODE_SECTION方式,还有其他比较好的方法吗?

typedef char int8; typedef char uint8_t;

$
0
0

在写TMS320F28335 CCS工程时引用官方定义typedef char uint8_t,但在实际应用过程中还引用了其他非TI官方函数库,但是该函数库又进行了如下定义typedef char int8。因此在调用此库函数时由于类型定义不一致,编译器报错,该如何解决?

同步启动ePWM模块的方法

$
0
0

使用ePWM模块的控制寄存器TBCTL中的CTRmode位可以控制模块的启动和停止,对于采用映射方式同步更新的方式,ePWM模块可以一直处于运行模式,不会有问题。但是如果需要直接映射的方式更新占空比数据,必须首先停止ePWM模块,更新数据后重新启动ePWM模块。在此过程中每个ePWM模块的起停可能存在延迟,如果同步启动所有的模块,有没有办法?

Compact Flash Card驱动

求一份XDS560的驱动

$
0
0

操作系统是WIN10,买了个二手的seed-XDS560USB,没有驱动,跑来这里问问,哪位大神有的话,给一份咯,不然就考虑退货了,闲鱼上面买的,顺便问问seed-XDS560USB这个调试器支持AM5728


28035 PWM

$
0
0

我在main初始化时,增计数,PWM1为基准,PWM2相移120,PWM3相移240能够实现,但是我在中断中只更新周期值时,出现如下情况。请问还有哪个地方处理不对吗?

在中断中只更新周期值时,pwm2计数器,为何计数到周期值时不清零,而是继续向上计数。我仿真时,pwm2计数器大部分是竟然大于周期值。不明白?
异常情况:在中断中,对TBPRD重新再次赋值一次,pwm1能够正常发板,pwm2不能发波,pwm3正常发波,移相240


interrupt void epwm1_isr(void)
{

EPwm1Regs.TBPRD = 299; 
EPwm2Regs.TBPRD = 299; 不发波
EPwm3Regs.TBPRD = 299; 
EPwm1TimerIntCount++;


EPwm1Regs.ETCLR.bit.INT = 1;

// Acknowledge this interrupt to receive more interrupts from group 3
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

}

matlab 生成代码时 用的28035的dsp adc采样的结果应该怎样处理。

$
0
0

最近用matlab 自动生成代码,遇到了以下问题:

给adc一个0.5V的电压, 通过PWM生成一个占空比为0.5的PWM波

gain1是因为ePWM模块接受占空比输入的时候是需要百分比,所以乘了100.

现在就是想问 前面这个gain 应该是多少? 才能将实际电压0.5V得到。   

或者能不能指导一下应该怎么样更改。

Ps:

之前猜测 AD是12位的,然后接收电压范围是0-3.3v  所以用了3.3/4096这样的数。  

ADC模块里面数据类型设置的是double。

28379D例程改为Flash模式问题

$
0
0

 28379D最简单的例程 Blinky_dc_cpu01/cpu02, 想要将程序烧写到Flash中,cpu01的例程是可以完美烧写的。单是CPU02烧写的时候,就报错,工程Build没有问题。 宏定义中Symbol 已经定义了CPU2和_FLASH,不知问题出在哪里?如何解决

28335,默认150MHz时钟设置(30MHz外部晶振,10倍频、2分频),是否可(25MHz外部晶振,6倍频)获得150MHz?谢谢

$
0
0

比如TMS320F23885最大工作时钟为150MHz,通常外部晶振频率为30MHz,先将30MHz进行10倍频变成300MHz,再对300MHz进行2分频得到150MHz的时钟。(官方例程里产生150MHz的方式)

RT

TMDSHVMTRINSPIN调试的问题,无法连接到设备

$
0
0

硬件配置:TMDSHVMTRINSPIN + 28069

软件环境:使用的是TMDSHVMTRINSPIN自带的板上仿真器 + CCS6.1,驱动都安装了。

硬件配置步骤也是参考了TI提供的文档。

没有上高电压,只用了15V电源。

现在的问题:无法连接到target:

Error connecting to the target:
(Error -151 @ 0x0)
One of the FTDI driver functions used during
the connect returned bad status or an error.
The cause may be one or more of: invalid XDS100 serial number,
blank XDS100 EEPROM, missing FTDI drivers, faulty USB cable.
Use the xds100serial command-line utility in the 'common/uscif'
folder to verify the XDS100 can be located.
(Emulation package 6.0.14.5)

Viewing all 12277 articles
Browse latest View live


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