This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于在concerto f28m35上使用sin函数的问题

Other Parts Discussed in Thread: CONTROLSUITE

请教:在f28m35上如何使用sin函数,精度能达到多少度?我应该从哪些文档中找这些问题的说明呢?

         我看芯片手册,发现有两种方法,不知道理解的对不对:1,TI提供了sin.c,sin.h,直接利用查表实现,而且表只有129项,精度不是很高。2,TI在BootRom中有个IQMath库,好像也提供sin函数,但这个我不知道怎么用,精度有多高。

          求高手指点

  • 这两个精度都不会很高,第一种方法你很清楚怎么用,第二种其实根本上也是查表的方法(使用的是芯片BOOT ROM区的数据),具体如何使用可以在controlSUITE里找到对应的说明文档:C:\TI\controlSUITE\libs\math\IQmath\v160\doc (v160是对应的版本)

    其实速度跟精度始终是一个需要权衡(tradeoff)的两方面,通常来说,目前计算三角函数最常用的两种方式就是查表或级数展开,查表简单但精度不高且占内存空间,级数展开精度稍高(具体多高也取决于你展开到几级),但占用代码空间以及执行时间,所以这完全取决于用户自己更关心哪一方面。

    另外,C2000后面的芯片将会加入一个硬件加速单元,来实现三角函数的运算,直接使用硬件指令的方式在单周期内完成运算,应该是在根本上来解决三角函数运算速度和精度的问题。

     

  • 文档里说sin函数是通过查表和泰勒级数展开实现的,也没说展开到多少级,但我做了下实验,sin(0.1度)也是能算出来的,我们以前在电机控制里是用arm芯片,求sin 是自己制表查表实现的,精度只计算到1度。

    请问:是不是如果用级数展开求的话,理论上多少度都可以求?

               另外问一下,TI提供的数学库有源码可以下吗?(现在只有.lib库可以链接)

  • 理论上是的,只要级数够高。

    源码没有提供,因为已经固化在BOOT ROM区。