使用C2000 CLA时出错

15次浏览(过去30天)
Balint伊
Balint伊 2021年8月9日
回答: 成员Mukul Choudhury 2021年10月1日
我正在从事一个嵌入式项目,目标硬件是德州仪器C2000 F28379D MCU。我想利用CLA(在CPU1上),但我遇到了一个无法自行解决的问题。我使用数据存储CLA和CPU之间的通信。数据存储被分配到适当的内存部分(CpuToClaMsgRAM和ClaToCpuMsgRAM)。
我的触发顺序如下:PWM中断触发ADC转换,然后ADC EOC触发CLA任务1。我通过切换两个gpio来验证CLA正在运行(并测量速度),一个在PWM中断中,另一个在CLA中断中。
请注意,下面的代码段运行正常。我简化了电路,并专注于代码出错的部分。
这样,有了Constant块(采样时间-1)来驱动Gain块的输入,CLA就能按预期运行。
然而,我想用一个变量来代替常量块,因此我使用了一个数据存储读块。它所链接的数据存储位于CpuToClaMsgRAM中。下图显示了变化。
然而,现在CLA没有运行。在CLA中断中切换的GPIO是常量高(而不是切换)。请注意,数据存储变量类型是一个自定义总线,由3个单一信号组成。其他两个信号可以连接到相应的位置,CLA运行良好。如果我将3个信号中的任何一个连接到图中的增益块,CLA不会执行。
请帮忙和CLA解决这个问题。如果需要,我很乐意提供额外的信息。
编辑:在某种程度上,问题是正弦块。如果我移除sin块,CLA运行。

答案(1)

成员Mukul Choudhury
成员Mukul Choudhury 2021年10月1日
嗨Balint,
CLA不支持正弦函数,在TI提供的万博1manbetxCLAMath库中定义了它自己的正弦函数。
为了计算一个值的正弦值,使用TI提供的“CLAsin()”函数。这可以在Simulink中通过使用MAT万博1manbetxLAB函数块来完成,并使用以下语句来执行函数。
Y =编码器。ceval (CLAsin, u);
u是正弦函数块的输入。
您还可以参考示例:c28035pmsmfoc_cla。SLX中已经实现了正弦函数。
在本例中,在下面的路径中查看公园改造块内部 c28035pmsmfoc_cla/FOC算法/转矩控制算法/生成空间向量/生成裸空间向量/公园变换 看三角函数在CLA中的实现。
我希望这对你有所帮助。如果您有进一步的疑问,请让我知道。
谢谢,
成员Mukul Choudhury