0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RX系列三角函数单元(TFU)的使用介绍

瑞萨MCU小百科 来源:瑞萨MCU小百科 2023-12-04 12:25 次阅读

硬件加速器三角函数单元(Trigonometric Function Unit)能够高速处理三角函数sin、cos、arctan和sqrt(x2+y2)函数的运算,可显著减少CPU负荷,在电机的矢量控制运算中非常有用。

本文介绍如何使用带有CC-RX编译器的三角函数单元。TFU现有两个版本TFUv1和TFUv2,配备TFU的芯片型号如下表所示。

三角函数单元TFU版本

配备TFU的芯片

TFUv1

RX72T/RX72M/RX72N

TFUv2

RX26T

1. TFUv1的使用说明

在工程中选择[Project][C/C++ Project Settings][Tool Settings][Compiler] [Optimization][Advanced],如果器件有TFU,则会有选项"Execution method of library function that can use trigonometric function unit",如需使用TFU,选择"Use trigonometric function unit ",如图1所示。

93de1758-925a-11ee-939d-92fbcf53809c.png

图1 TFU选择设置

如上设置后,标准数学库函数sinf()、cosf()、atan2f()和hypotf()的计算将由TFU执行,如图2中代码所示。由于TFU可以同时计算sin和cos、arctan和sqrt(x2+y2),所以CC-RX编译器对相同输入值的sin和cos、arctan和sqrt(x2+y2)可使用同时计算功能,以进一步提高运算速度。可以使用函数__sincosf()和__atan2hypotf()来同时计算,如图3中代码所示。

9404d686-925a-11ee-939d-92fbcf53809c.png

图2 使用TFU的代码示例

9412f1a8-925a-11ee-939d-92fbcf53809c.png

图3 TFU同时计算代码示例

2. TFUv2的使用说明

三角函数单元TFUv1已经通过进一步的改进升级到TFUv2。TFUv2与TFUv1相比有以下改进:

1单精度浮点数计算速度的进一步提升,如图4所示

94302d22-925a-11ee-939d-92fbcf53809c.png

图4 计算速度对比

2支持定点类型的计算

在TFUv2中,单精度浮点数的操作与TFUv1中相同;对于定点数据类型,使用内部函数:

__sinfx((int32_t)(x)) / __cosfx((int32_t)(x))

__atan2fx((int32_t)(x), (int32_t)(y)) / __hypotfx((int32_t)(x), (int32_t)(y))

或者同时计算的函数:

__sincosfx((int32_t)(x), (int32_t *)(y), (int32_t *)(z))

__atan2hypotfx((int32_t)(w), (int32_t)(x), (int32_t *)(y), (int32_t *)(z))

对于定点数据,可以更改输入/输出的单位和格式。如果使用Smart Configurator,选择scfg文件,在[Components][r_bsp]中选择"Enable initilize function for TFU (fixed-point numbers)"为"Enabled",下面有三个选项可以修改,如图5所示。如果没有使用Smart Configurator,可以在硬件初始化的时候加入TFU的FXSCIOC和FXATIOC寄存器的设定来修改输入/输出的单位和格式。

944741d8-925a-11ee-939d-92fbcf53809c.png

图5 定点数据的单位和格式修改

3支持重入

TFUv2支持重入(TFUv1不支持),会在每个中断函数的入口和出口生成保存和恢复代码,但是会减慢处理速度。因此,如果不需要重入,可以禁止保存和恢复代码的生成。如果只是一个特定的中断禁止重入,可以在中断函数的申明中写"no_tfu"

#pragma interrupt func(no_tfu)

也可以使用选项禁止所有中断功能的保存和恢复,选择[Project][C/C++ Project Settings][Common][CPU],取消选中[Saves and restores the output by trigonometric function unit in interrupt functions],如图6所示。

9458ed7a-925a-11ee-939d-92fbcf53809c.png

图6 TFU取消重入设置

在图6设置下,如果仅对某个特定中断允许重入,可以在中断函数的申明中写"tfu"

#pragma interrupt func(tfu)

结合以上内容,对于内部配备硬件加速单元TFU的芯片,建议在电机矢量控制的运算中使用TFU,从而提高芯片在电机控制方面的性能。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机控制
    +关注

    关注

    3465

    文章

    1704

    浏览量

    264420
  • 加速器
    +关注

    关注

    2

    文章

    743

    浏览量

    36598
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48614
  • 三角函数
    +关注

    关注

    0

    文章

    13

    浏览量

    6657

原文标题:RX系列三角函数单元(TFU)的使用介绍

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么在Hightec编译环境中调用三角函数,是需要包含某些库吗?

    怎么在Hightec编译环境中调用三角函数,sin(),cos(),tan(),求教,是需要包含某些库吗?
    发表于 02-18 08:44

    STM32G4芯片怎么使用最新功能三角函数

    求助各位大佬: STM32G4芯片怎么使用最新功能三角函数
    发表于 04-15 08:17

    MATLAB三角函数命令

    MATLAB三角函数命令Sin 正弦 Sinh 双曲正弦 Asin 反正弦 Asinh 反双曲正弦 Cos 余弦 Cosh 双曲余弦 Acos 反余弦 Acosh 反双曲余弦 Tan 正切&
    发表于 09-22 16:04

    ARM7如何实现三角函数

    ARM7中如何编程实现三角函数sin,cos,软件用的是TKStudio,求大神
    发表于 11-12 16:31

    labview的三角函数pi在哪

    labview的三角函数pi在哪
    发表于 03-23 09:29

    STM32 UCOSIII下MPU6050 DMP解算,反三角函数的问题

    UCOSIII运行正常.裸机运行DMP得出四元数,反三角函数计算角度正常。UCOSIII运行DMP读取四元数正常。但是UCOSIII下,再对四元数进行atan2处理,程序就跑死了。我有一个小灯闪烁
    发表于 07-04 17:34

    请问一下,28035的cla支持三角函数运算吗

    请问一下,28035的cla支持三角函数运算吗,为什么使用sin函数时,编译有错,那该怎么使用三角函数
    发表于 05-14 00:58

    请问LM3S怎样调用库函数三角函数

    求助!LM3S怎样调用库函数三角函数
    发表于 08-21 11:24

    TMS320C6701 计算三角函数sin cos出错

    1.硬件是TMS320C67012.CCS版本为V8.3.13.调用三角函数,计算结果不对。链接路径已经包含rts6700.lib。头文件已经包含mathf.h。4.具体代码和调试如附件。5.希望大神能给点思路。
    发表于 01-15 16:41

    电磁波为什么要用三角函数表示?

    怎样形象的理解傅里叶变换?电磁波为什么要用三角函数表示?什么是三角函数中的相位?
    发表于 10-25 08:57

    labview中的三角函数问题

    我想使用三角函数中的余弦函数(输入是角度的那种)我试了一下,发现cos90°算出来不是0,为什么呀,算别的角度是对的,就是算值等于0的度数会有问题。用了弧度角度换算、公式节点、直接输入π/2,这种方法出来都不是0
    发表于 04-09 14:18

    MounRiver Studio环境下math头文件如何进行三角函数计算?

    需要用到atan2和asin函数,include了math.h后报错函数不存在;和keil下的math文件内容对比了一下发现确实少了三角函数的申明,为什么会存在这种差异?该如何进行三角函数
    发表于 06-01 06:18

    MounRiver Studio编译ch32v103芯片,三角函数未定义是为什么?

    在include math.h的情况下为什么调用三角函数会显示未定义呢,第一张图如果把shudu()注释掉的话就不会报错,第张图把p换成具体值也不会报错,这是为什么呢?并且当把引用的三角函数变量p的两个因子J 和a设置为局部变
    发表于 06-09 08:11

    基于DSP的三角函数快速计算

    基于DSP的三角函数快速计算
    发表于 04-07 14:33 53次下载
    基于DSP的<b class='flag-5'>三角函数</b>快速计算

    三角函数arcranx运算电路

    三角函数arcranx运算电路
    发表于 04-09 10:16 2606次阅读
    反<b class='flag-5'>三角函数</b>arcranx运算电路