TI中文支持网
TI专业的中文技术问题搜集分享网站

LAUNCHXL-F2800157: 为什么从串口接收数据无法触发中断

John Pan阅读(38)

Part Number:LAUNCHXL-F2800157

电脑通过串口给板子的串口发送数据,板子的串口接收数据,但是无法触发接收到数据的中断

但是在电脑发送多个数据之后,芯片串口的FIFO溢出了,此时触发FIFO满的中断

请问该如何让串口一接收到数据就出发中断

串口初始化代码如下:

#define UART_BASE                                                       SCIB_BASE
#define UART_INT_RX                                                    INT_SCIB_RX
#define UART_INT_RX_INTERRUPT_ACK_GROUP     INTERRUPT_ACK_GROUP9

SCI_clearInterruptStatus(UART_BASE, SCI_INT_RXFF | SCI_INT_TXFF | SCI_INT_FE | SCI_INT_OE | SCI_INT_PE | SCI_INT_RXERR | SCI_INT_RXRDY_BRKDT | SCI_INT_TXRDY);
SCI_clearOverflowStatus(UART_BASE);
SCI_resetTxFIFO(UART_BASE);
SCI_resetRxFIFO(UART_BASE);
SCI_resetChannels(UART_BASE);
SCI_setConfig(UART_BASE, DEVICE_LSPCLK_FREQ, UART_BAUD_RATE, (SCI_CONFIG_WLEN_8|SCI_CONFIG_STOP_ONE|SCI_CONFIG_PAR_NONE));
SCI_disableLoopback(UART_BASE);
SCI_disableSleepMode(UART_BASE);
SCI_performSoftwareReset(UART_BASE);
SCI_enableInterrupt(UART_BASE, SCI_INT_RXFF);
SCI_setFIFOInterruptLevel(UART_BASE, SCI_FIFO_TX0, SCI_FIFO_RX5);
SCI_enableFIFO(UART_BASE);
SCI_enableRxModule(UART_BASE);
SCI_enableModule(UART_BASE);
Interrupt_register(UART_INT_RX, &UartRxIsr);
//SCI_enableInterrupt(UART_BASE, SCI_INT_RXFF);
SCI_enableInterrupt(UART_BASE, SCI_INT_RXRDY_BRKDT);          // 试图通过这个使能RXRDY的中断,但是没有成功
SCI_clearInterruptStatus(UART_BASE, SCI_INT_RXRDY_BRKDT);
Interrupt_enable(UART_INT_RX);

John Pan:

用轮询的方式也无法从串口读到数据

轮询的代码如下:

while(1) {    if((SCI_getRxStatus(UART_BASE) & SCI_RXSTATUS_READY ) != 0)    {        tmpc = SCI_readCharBlockingNonFIFO(UART_BASE);        uartRecvFlag = true;    }

}

TMS320F280039C-Q1: Global load

Chris阅读(24)

Part Number:TMS320F280039C-Q1

EALLOW;
EPwm4Regs.GLDCFG.bit.AQCSFRC = 1; // 寄存器:AQCSFRC使用Global load 功能
EPwm4Regs.GLDCTL.bit.GLDMODE = 2; // Load on Counter = Period (PRD_EQ)
EPwm4Regs.GLDCTL.bit.OSHTMODE = 1;
EPwm4Regs.GLDCTL.bit.GLD = 1; // Enable AQCSFRC load
EDIS;
EPwm4Regs.GLDCTL2.bit.OSHTLD = 1;

EALLOW;
EPwm5Regs.GLDCFG.bit.AQCSFRC = 1; // 寄存器:AQCSFRC使用Global load 功能
EPwm5Regs.GLDCTL.bit.GLDMODE = 2; // Load on Counter = Period (PRD_EQ)
EPwm5Regs.GLDCTL.bit.OSHTMODE = 1;
EPwm5Regs.GLDCTL.bit.GLD = 1; // Enable AQCSFRC load
EDIS;
EPwm5Regs.GLDCTL2.bit.OSHTLD = 1;

EPwm5Regs.EPWMXLINK.bit.GLDCTL2LINK = EPWM4_LINK;

// 执行下面这段代码, EPwm4A  与  EPwm4B  不会同时关闭  (小概率出现)

EPwm4Regs.AQCSFRC.bit.CSFA = 1;
EPwm4Regs.AQCSFRC.bit.CSFB = 1;

EPwm5Regs.AQCSFRC.bit.CSFA = 1;
EPwm5Regs.AQCSFRC.bit.CSFB = 1;

EPwm4Regs.GLDCTL2.bit.OSHTLD = 1; // global load

Yale Li:

Chris 说:// 执行下面这段代码, EPwm4A  与  EPwm4B  不会同时关闭  (小概率出现)

出现的概率是多大?多少芯片上有出现这个问题?

,

Chris:

1.出现概率也不低,打嗝情况下,五次左右就会出现一次

2.目前只基于一块芯片测试了,后面可以安排其他芯片测试,但感觉不是芯片个例问题,应该是普遍情况

TMS320F28035: 在CCS的代码中循环产生一个0~0.5或0~1之间的随机数

zhou harry阅读(29)

Part Number:TMS320F28035

在网找到的例子

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main(void)

{

……………………..

srand((unsigned)time(NULL));
fRandValue = rand();

}

仿真后,点运行报错

Break at address "0x3ff599" with no debug information available, or outside of program code.

这是什么原因,有什么办法处理?

Jun Zhang:

srand形参调用time()有问题吧,在dsp上如何获取时间?

尝试用AD采样数据作为随机数种子看看?

,

Yale Li:

楼上的回复正解。除了AD采样值,还可以使用ePWM、timer计数器的值作为随机数种子。

Compiler/TMS320F28379D: random number generator does not work in Standalone – C2000 microcontrollers forum – C2000Tm︎ microcontrollers – TI E2E support forums

TMS320F28034: 交流电机FOC控制中,电流环PI调节问题

阅读(26)

Part Number:TMS320F28034

你好!

我正在做一个感应电机控制的项目,使用的DSP是TMS320F28034,PCB是我们自己设计的,并不是使用的TI官方开发套件。

我先导入了HVACI_Sensorless工程进行学习,在Level 2的实验中得出了VdTesting和VqTesting与SpeedRef的对应关系。

比如在Speed=_IQ(0.7);时VdTesting 和VqTesting取_IQ(0.088);可以使电机工作到指定速度,且系统电流最小。

在进行Level 3的实验时,IdRef和IqRef的配置有点疑惑,不知道该如何配置。

在电流环的PI调节中,输入的feedback是Park变换的输出Ds和Qs(两个电流),参考值是IdRef和IqRef(两个电流),输出D_Out和Q_Out(两个电压)作为反Park变换的输入。

PI调节的目标是反馈值与参考值尽量接近,我能不能将Level2中Park变换的两个输出作为IdRef和IqRef的取值呢?还是这两个值可以通过什么公式算出来?这两个值与什么有关?

还有个疑惑就是,如何配置kp和ki才能满足所有目标速度呢?

请帮忙解答!

祝好!

Yale Li:

?? ? 说:我先导入了HVACI_Sensorless工程进行学习,

方便提供下工程在SDK中的具体路径吗?

TMS320F28379D: 程序烧写进flash中不正确问题

lu shiguang阅读(37)

Part Number:TMS320F28379D

我们dsp伺服控制程序,通过仿真器debug模式全部功能可以正常工作,但是release模式烧写进flash,上电启动后,传感器数据都能采集正确,发送控制命令伺服没有响应,请问可能是什么原因,需要什么办法才能解决。

有部分代码是在cla中编写的,是否可能有部分代码功能有没正常运行。

lu shiguang:

从flash加载到ram中的代码是有的

MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);

InitFlash();

并且我们在程序里也增加了把cla程序加载到flash里的代码,cla里有部分数据采集代码,这部分代码采集的数据也是正常的。

extern uint32_t Cla1funcsRunStart, Cla1funcsLoadStart, Cla1funcsLoadSize;extern uint32_t CLA1mathTablesRunStart, CLA1mathTablesLoadStart, CLA1mathTablesLoadSize;

EALLOW;

#ifdef _FLASH// Copy over code from FLASH to RAMmemcpy((uint32_t *)&Cla1funcsRunStart, (uint32_t *)&Cla1funcsLoadStart,(uint32_t)&Cla1funcsLoadSize);#ifndef CLA_MATH_TABLES_IN_ROMmemcpy((uint32_t *)&CLA1mathTablesRunStart, (uint32_t *)&CLA1mathTablesLoadStart,(uint32_t)&CLA1mathTablesLoadSize);#endif //CLA_MATH_TABLES_IN_ROM

#endif //_FLASH

,

Yale Li:

lu shiguang 说:传感器数据都能采集正确,

这个是怎么看出来的?

建议在代码中加入翻转IO的操作,以检查相应代码是否正常执行

,

lu shiguang:

您好,谢谢解答。

我们板卡控制电机,电机上有个编码器,电机旋转位置能通过外部设备测量,和编码器返回值是能够对应上的。

现象就是在线加载,能控制电机运动,但是烧写完flash,就只能读取编码器数据了,控制不了电机。

TMS320F28P650DK: EtherCAT EEPROM如何配置访问

jihong zhang阅读(27)

Part Number:TMS320F28P650DKOther Parts Discussed in Thread:C2000WARE

你好,我正在试用lauchxl-f28p65dx开发板,在使用“f28p65x_cpu1_pdi_hal_test_app”例程中,我没有看到他是在哪里配置了eeprom的配置,为什么Ethercat知道他的eeprom address自动去访问呢?

Ben Qin:

你好,我查看下相关资料后回复您。

,

Ben Qin:

你好,你这里的eeprom是指的内部的flash吗?

,

jihong zhang:

对,我没找到相关说明Ethercat是如何去访问eeprom的,并且我在提供的sdk里面也只看到配置了eeprom的大小,没有其他操作,他究竟是如何访问的

,

jihong zhang:

外部的eeprom

,

Ben Qin:

参考下该路径下的文件:

C2000Ware_5_01_00_00\libraries\communications\Ethercat\f28p65x\docs

,

jihong zhang:

路径下面的只有写了运行程序后烧写eeprom,我不能理解的是f28p65它都没有配置eeprom信息,是如何自己去访问到eeprom的

TMS320F280025C: 关于DATA_SECTION的问题

jun zhang阅读(21)

Part Number:TMS320F280025C

遇到跟下面帖子类似的问题,请问这个问题解决了吗?

项目中想在Flash的某个区域存放一些常数,在cmd文件中定义了段,使用DATA_SECTION关联到一个常量数组,CCS V12编译出的map文件根本没有保留这个常数数组,相关区域显示unused。

编译器优化等级设置为OFF,Speed vs Size 设置为3.

之前在CCS V3.x,V8.x都没有遇到这个问题,类似codestartbranch.asm写一段汇编代码(仅仅用来占位)倒是可以初步解决。这个问题请帮忙查一下,链接帖子说的DATA_SECTION的用法,

都是这么用的没有什么差别,只是map文件里好像就把这个段给优化了一样。

MS320F280025C: Data_section不生效问题 – C2000Tm︎ 微控制器论坛 – C2000 微控制器 – E2ETm 设计支持

Ben Qin:

你好,参考下图:

,

Jun Zhang:

想在flash的最后16个字地址存放常量数组,编译后显示这个区域仍是unused,map文件没有这个数组。

#pragma DATA_SECTION(meConstArray,"me_RSVD16");const INT16U meConstArray[16] = { 0x0000,0x1111,0x2222,0x3333, 0x4444,0x5555,0x6666,0x7777, 0x8888,0x9999,0xAAAA,0xBBBB, 0xCCCC,0xDDDD,0xEEEE,0xFFFF };

meRsvd16         : > FLASH_BANK0_RSVD,  ALIGN(8)

,

Ben Qin:

编译有任何的报错或者警告吗?meRsvd16应该是me_Rsvd16,与第一行语句一致

TMS320F28062F: SCI RX fifo数量问题

阅读(10)

Part Number:TMS320F28062F

我使用28062f的SCI功能时,发现参考手册两处关于接收fifo数量的说法不一样,一个地方说只有4个fifo,另一个地方说16个fifo装满以后才会溢出,想请教一下哪一个是对的?

还有我想发图片,竟然传不了

Yale Li:

选择本地图片上传即可

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1