对于大多数MCU来说,浮点运算、三角函数永远是可望不可及的。说他可望是因为在编译环境函数库中,这些运算都可以通过软件来实现,但他付出的代价是较长代码长度和大量的CPU运算时间。代码长度也许是系统可以承受的,但大量的CPU运算时间则是实时控制系统无法接受的。
在Xinnova(www.xinnovatech.com)新推出的一系列低成本、高性能划时代MCU产品XN62L和XN12L中,三角函数得到了彻底解决。它通过集成高达32位CORDIC矢量计算机,可以轻易并高速实现复杂三角函数在各种实时系统上的矢量控制算法。如直流无刷电机(BLDC)矢量控制,步进电机的细分控制,逆变控制和坐标系的旋转计算。
Xinnova CORDIC的软件接口非常简单: 一个控制寄存器,三个计算输入寄存器X,Y,PH和三个计算结果寄存器RLT_X, RLT_Y, RLT_PH。
使用步骤如下:
CORDIC x, y 寄存器转换: 只有精度范围内的有效值参与计算(寄存器[RES:0]),其中RES位是符号位。在这里, -1 到 +1同样被映射到有效的寄存器位。例如:如果使用32位精度 CORDIC运算, -0x7FFF FFFF被映射到 -1,+0x7FFF FFFF 被映射到 +1。
如下是采用CORDIC运算后在DA端口输出的正弦波。
另一个例子来自使用CORDIC做步进电机细分控制的电流波形。
结论:
使用CORDIC算法可以让MCU拓展其三角函数计算能力,Xinnova公司MCU是一个很好的尝试。
文章评论(0条评论)
登录后参与讨论