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:
好的,非常感谢你的反馈。