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

TMS320F28069: CLA 不能独立于CPU 运行吗?

Part Number:TMS320F28069Other Parts Discussed in Thread:C2000WARE

我本来想通过ePWM6 来Trigger CLA Task6 执行修改

EPwm6Regs.CMPA.half.CMPA 的行为,如下图,从ePWM6 计数器触发中断属于硬件行为,

但明显修改 EPwm6Regs.CMPA.half.CMPA 的行为受到CPU 运行时的影响,这跟我对CLA 的理解不一样啊,是我有什么地方理解不对吗?

user6049953:

前面我做过测试,我把系统里面所有中断(除了ePWM6 和 CLA Task6 中断) 都关掉,统计这两个中断进入的次数,他们分别是相等的,说明是按单次准确触发的,但问题是为啥CLA 的运行总是不及时?

,

user6049953:

从手册上看,是可以i独立运行的,但我试用下来怎么没有呢?

,

user6049953:

我感觉吧,即便我这里配置了:Cla1Regs.MPISRCSEL1.bit.PERINT6SEL = CLA_INT6_EPWM6INT;

需要进到ePWM 的ISR 去走一趟才会真正触发CLA,也就是要经过CPU 中转一把才会触发CLA 的任务,如果此时CPU正在干其他事情,CLA 任务是不能得到及时触发的;

也就是不能真正的通过硬件中断直接走底层触发CLA 任务;;

,

Green Deng:

你好,CLA1_INTx的优先级确实是在中断优先级中比较低的,基本外设中断的优先级全都高于CLA1_INTx。可能这点会影响CLA中断的执行。不知道你说的“通过硬件中断直接走底层触发CLA 任务”是类似什么样的方式?

,

user6049953:

我并不关心CLA1_INTx, 我关心CLA 的Task 能不能不受到CPU 的执行的影响;

我的意思是说,通过EPWM6 来触发CLA Task6,能不能直接通过硬件触发,但貌似不行呢;

,

user6049953:

另外0x9000 开始的CLA Prog Ram 一旦启用了CLA,即使我没有用完,也不能给CPU 端使用了?

,

Green Deng:

是的,CLA task只能通过外设或者软件触发,没办法硬件触发。

问题2我没有理解,0x9000是什么?

,

user6049953:

,

user6049953:

另外,我想使用CLASin 和 CLACos,我添加了cla0_math_library_fpu32.lib,提示不兼容,怎么办? "C:/E/Material/DSP_Code/ti_f28069/libs/FPUfastRTS/rts2800_fpu32_fast_supplem ent.lib<sin_f32.obj>" specifies ISA revision "C28FPU32", which is not compatible with ISA revision "C2700" specified in a previous file or on the command line我到哪里能找到一个与C28FPU32 的CLAmath 库啊?

,

Green Deng:

这个报错找了很久,没找到靠谱的回答。不知道你的库路径是不是从C2000WARE中复制出来的,如果是C2000WARE中的,选择的库文件应该也是没错的。

这样的话可以试一下换其他库文件:C:\ti\c2000\C2000Ware_4_00_00_00\libraries\math\CLAmath\c28\lib

以及参考一下这个帖子的做法:e2echina.ti.com/…/c28fpu32-is-not-compatible-with-isa-c2700-c2800-is-not-compatible-with-isa-c2800

,

user6049953:

我从这里找了Lib,现在编译已经没问题了,但新的问题是,我是用CLASin() 完全得不到我想要的结果呢,怎么回事呢?

,

Green Deng:

这个,要不重新发个帖子详细描述一下CLASin()的具体情况?

,

user6049953:

CLASin() 的问题,也解决了,主要还是我偷懒,给CLAmath Table 分配到CLAProg 的内存了,

要确保CLAsin 分配在CLARAM0, CLARAM1, CLARAM2 中的一个,由于我想把CLARAM2,CLARAM0 给CPU 用,所以我就分配到了CLARAM1 上,也就是代码里面这么设置:

claMemCopy(&Cla1funcsLoadStart, &Cla1funcsLoadEnd, &Cla1funcsRunStart); claMemCopy(&CLA1mathTablesLoadStart, &CLA1mathTablesLoadEnd, &CLA1mathTablesRunStart);

Cla1Regs.MMEMCFG.bit.RAM2E = 0; Cla1Regs.MMEMCFG.bit.RAM0E = 0; Cla1Regs.MMEMCFG.bit.RAM1E = 1;

CMD 文件这样设置: CLA1mathTables : LOAD = FLASHBA, RUN = CLARAM1, LOAD_START(_CLA1mathTablesLoadStart), LOAD_END(_CLA1mathTablesLoadEnd), LOAD_SIZE(_CLA1mathTablesLoadSize), RUN_START(_CLA1mathTablesRunStart), PAGE = 1

最后map 文件里面看到:00008c00 230 (00008c00) _CLAsinTable00008c00 230 (00008c00) _CLAsincosTable00008c00 230 (00008c00) _CLAsincosTable_Sin0

这样,CLA 三角函数运行起来看来没什么问题了;

,

Green Deng:

好的,非常感谢你的反馈。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28069: CLA 不能独立于CPU 运行吗?
分享到: 更多 (0)

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