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

关于TMS320F28034的SCI的FIFO发送进中断问题

$
0
0

Hi 

使用C2000遇到的SCI的FIFO问题,请帮忙解答

基础配置:2.5M波特率,8位数据,无奇偶校验,1位停止位

开启SCI的FIFO增加模式,SciaRegs.SCIFFTX.all = 0xE040;发送中断等级TXFFIL配置为0;

当发送4帧数据到SciaRegs.SCITXBUF时,通时开启SciaRegs.SCIFFTX.bit.TXFFIENA中断使能,发现数据还未发送完就会提前进中断,必须在中断里面增加while(!SciaRegs.SCICTL2.bit.TXEMPTY);语句判断才能把数据发送完毕。

因为这边采用半双工模式发送数据,若数据不发送完毕直接切换芯片收发脚就会导致最后一桢数据会丢失部分,目前在中断里面增加while(!SciaRegs.SCICTL2.bit.TXEMPTY)语句判断,这样就会在中断里面等待较长的时间,造成资源浪费。有没有其他方法或者例程参考可以解决上述问题?


上图通道1使用FIFO发送的4帧数据,通道2是485芯片片选脚,通道3是为了测试在中断里面等待的时间,送色箭头指示的是在中断里等待的时间。必须等待一桢发送完毕,不然最后一桢会丢失。

 

外设配置如下

void InitSetScia(void)

{

    // 应该放在前面

    SciStatus = SCI_READ_DATA_INIT;

 

    EALLOW;

    SciaRegs.SCICTL1.bit.SWRESET =0;              //复位SCI

    SciaRegs.SCICTL1.bit.RXENA=0;               //SCI接收器使能

    SciaRegs.SCICTL1.bit.TXENA=0;               //SCI发送器使能

 

    //设置FIFO寄存器

    SciaRegs.SCIFFTX.all = 0xE040;

    //SciaRegs.SCIFFTX.all = 0x0000;

    //SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;//清除发送中断标志

    //SciaRegs.SCIFFTX.bit.TXFIFOReset = 1;//重新使能FIFO发送操作

    //SciaRegs.SCIFFTX.bit.SCIFFENA = 1;  //增强FIFO使能

    //SciaRegs.SCIFFTX.bit.SCIRST = 1;    //恢复FIFO接收和发送

    SciaRegs.SCIFFTX.bit.TXFFIL=0;

    //SciaRegs.SCIFFTX.bit.TXFFIENA=1;     //发送缓冲中断开启

 

    SciaRegs.SCIFFRX.all = 0x405F;  // Receive FIFO reset

    //SciaRegs.SPIFFRX.bit.RXFFIL40 = 0b11111 //

    //SciaRegs.SPIFFRX.bit.RXFFINTCLR = 1;//清除接收中断标志

    //SciaRegs.SPIFFRX.bit.RXFFOVF CLR = 1;//接收溢出标志位清除

 

    SciaRegs.SCIFFRX.all = 0x205F;  // Re-enable transmit FIFO operation

    //SciaRegs.SPIFFRX.bit.RXFIFOReset = 1;//重新使能FIFO接收操作

 

    SciaRegs.SCIFFCT.all = 0x0000;  //字符之间零延迟传输 应当适当添加延时周期

 

    //SciaRegs.SCICTL2.bit.TXINTENA =1;           //Enable TXTDY中断

    //SciaRegs.SCICTL2.bit.RXBKINTENA =1;         //Enable RXTDY中断

    SciaRegs.SCICTL2.bit.TXEMPTY = 1;           //发送缓冲和移位寄存器都为空时 置空闲标志位

    SciaRegs.SCICTL2.bit.TXRDY = 1;             //置标志位准备好接收下一个需发送数据

 

    SciaRegs.SCICCR.all = 0x0007;                // 1 stop bit, No loopback, No parity,8 bits,async mode,idle-line

    //BIT5:有无校验位 BIT6:0奇校验 1偶校验  BIT7:0:1位停止位 1:2位停止位

 

    SciaRegs.SCIHBAUD = 0;//dspBaudRegData[tmp].high;

    SciaRegs.SCILBAUD = 2;//dspBaudRegData[tmp].low; 2.5M

 

    SciaRegs.SCIPRI.bit.FREE = 1;

    //SciaRegs.SCICTL1.all =0x0021;               // Relinquish SCI from Reset

    SciaRegs.SCICTL1.bit.RXENA = 1;               //SCI接收器使能

    SciaRegs.SCICTL1.bit.TXENA = 1;               //SCI发送器使能

    SciaRegs.SCICTL1.bit.SLEEP = 0;               //休眠模式关闭

    SciaRegs.SCICTL1.bit.SWRESET =1;              //复位SCI

 

    EDIS;

}

 

interrupt void SCI_TXD_isr(void)

{

    EINT; 

    GpioDataRegs.GPADAT.bit.GPIO26 = 1;   // 测试

    SciaRegs.SCIFFTX.bit.TXFFIENA=0;//发送中断关闭

    while(!SciaRegs.SCICTL2.bit.TXEMPTY);

    SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;//清除发送中断标志

    RTS = RS485_R;

    SciStatus=SCI_SEND_OK;//数据发送完毕

    GpioDataRegs.GPADAT.bit.GPIO26 = 0;   // 测试

    PieCtrlRegs.PIEACK.bit.ACK9 = 1;            // Issue PIE ACK

}


TMS320F28379D最为spi的从机,从机向主机发送数据?使用哪个函数?

instaspin-motion可以跟踪正弦波吗

$
0
0

您好!

我们现在想让电机在-12°—+12°之间摆动

每秒摆动10个点

请问可以跟踪正弦波进行电机摆动吗

如果我们想改变频率变成20个点应该怎么做呢

用“Ultra Librarian”打开tms320f28335的封装ZJZ_176出现“The following error was encountered while checking for updates:12029:Unkonwn”

$
0
0

出现上面提醒后,不能生成封装;但,一个月前可正确生成符合allegro的dra,pad,psm格式的文件;

希望Ti的工程师看到及时回复,谢谢。

求组C2000-GANG烧录软件中的Memory Option问题

$
0
0

各位好,本人现在使用28M35H52C双核芯片,使用C2000-GANG Programmer进行烧写。考虑到程序加密后的安全性,需要对OTP中地址为0x680800的PasswordLock寄存器进行烧写以将其密码设置为不可见,但是C2000-GANG软件中的Memory Option里对28M35H52C的OTP烧写地址范围只支持0x681000 - 0x68101F。因此,当我选择含有0x680800地址的code file时会报错,提示超出地址范围。请问该如何解决呢?谢谢!

在CCS6.0里,我在更新EPWM配置时需要些eallow edis吗

$
0
0

 像这样,我每次进中断计算PI,重新赋值PWM1,2,3的比较值,而且隔一段时间还要改SET,CLEAR,这样写可以吗,

TMS320F28335自动进入CAN中断

$
0
0

现象:程序平时运行正常,在运行半个小时后,自动进入CAN中断。

           未连接CAN总线,没有数据传输,一进入CAN中断,一直在等待接收数据的do while中死循环。

想请教一下可能是出现了什么问题,应该怎么入手检查这个问题?

28377s CAN发送的数据回传

$
0
0

在 28377s 平台使用 CAN 通讯发送数据,配置的时候没有使能 CanaRegs.CAN_CTL.bit.Test 和 CanaRegs.CAN_TEST.bit.EXL 寄存器,然后接收邮箱和发送邮箱使用不同编号的邮箱。

使用 "src = CANStatusGet(CANAASEADDR, CAN_STS_NEWDAT);" 进行接收判断,但是检测到发送邮箱的置位和接收到自身发送的数据,也就是说发送的数据回传了。

使用 280049 平台在相同情况进行测试,也出现了这个数据回传问题。

请问一下可能是什么问题导致出现这种错误?


280049c can通信问题?

$
0
0

CAN我现在用tms280049c调试CAN通信,想实现一个邮箱接收两个地址,目前可以通过CAN_readMessage(base,objid,*msgdata)读取接收到的数据,但接收数据帧ID却无法获取,请问我怎样得到一个邮箱接收的不同ID标识符的值?

电流环参数转换为IQ格式问题

$
0
0

请教一下工程师,假如计算出来的电流环比例系数P=7.96,电流环积分时间2ms,

pi_id.Kp=_IQ(7.96);
pi_id.Ki=_IQ(T*20);// T=1/10000

这样转换是否正确?

C2000 GANG Programmer error 灯常亮

$
0
0

新买的C2000 GANG Programmer 用了没几次,今天开机发现error 灯常亮,无法工作,也没有任何报错信息,请问是什么问题呢?

RE: 关于delay us

$
0
0

那这个CPU clock speed是什么意思?

有没有eqep操作软件的代码例子,

$
0
0

想要测量编码器的A相和B相,如何用eqep测量编码器电机的位置和速度,应该设置哪些参数。

触发ADC中断为什么AdcaRegs.ADCINTFLGCLR.bit.ADCINT2不能清零

$
0
0

我用两路epwm分别触发一组ADC中断,中断程序如下:

interrupt void adca1_isr(void)
{
caiyangshuzhi = AdcaResultRegs.ADCRESULT0;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1; 
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
interrupt void adca2_isr(void)
{
vout= AdcaResultRegs.ADCRESULT1;
AdcaRegs.ADCINTFLGCLR.bit.ADCINT2=1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;}

发现程序在运行时只能响应adca1_isr中断; adca2_isr中断只有第一次可以进入,进去后AdcaRegs.ADCINTFLGCLR.bit.ADCINT2这个中断标志位不能清零导致以后adca2_isr中断不能响应。

请问怎么解决?

关于TMS320F280049 trip信号

$
0
0

据查手册,trip信号中trip6没有说明,按照手册框图,trip6和trip1~3是一样的,不用经过EPWM X-BAR的


28377D核间通信问题,程序运行一段时间就停止在 IPCReqMemAccess函数这里,怎么回事啊?

$
0
0

 IPCReqMemAccess(&g_sIpcController2, GS0_ACCESS, IPC_GSX_CPU2_MASTER,ENABLE_BLOCKING);

通过改不同的优化等级,程序正常时间也不一样,这个问题改怎么解决了?另外优化等级都代表什么意思啊?有详细的技术文档啊?另外核间通信这块有没有详细的案例以及使用文档啊?谢谢了

F280049的IO口复用

$
0
0

专家您好 :

请教一个问题:

查看F280049的JTAG口,是可以作为IO口来用的。

那么,烧写程序与IO口控制不会冲突吧?

28377D 16位AD如何使用

$
0
0

已知输入为0-5V的电压,目前通过运算方法器将输入控制在0-3.3V的范围内,想请问如何使用28377D芯片的AD的16位差分模式?

1)因为我只有一个输入信号,如果使用12位AD应该是一路直接输入到芯片中(使用一个ADCIN引脚),差分后是不是有两路信号输入到28377D的芯片中呢(使用两个ADCIN引脚)?

2)如果16位AD是可以将一个输入信号差分为两路输入到芯片中,那么该部分的电路应该如何设计?是否有相关的例子能够提供呢?

谢谢!

Trapezoidal Control of BLDC Motors Using Hall Effect Sensors调测

CCS V5 license manage

$
0
0

请教各位,以前CCS V5.2时,可以通过 www.ti.com/myregisteredsoftware网页,Click on MANAGE去更改绑定的电脑.

但现在没有找到这个页面,上述链接被重定位到另一个CCS的介绍页面去了,找不到MANAGE的选项。

搜索到另一个帖子,说目前不再需要License,从官网重新下载安装即可。

现在官网上的CCS V5.2和很早以前下载的CCS V5.2安装文件有差异?

我使用很早以前下载的CCS V5.2安装文件,有些功能不能使用。

谢谢!

Viewing all 12178 articles
Browse latest View live


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