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.

[参考译文] CCS/MSP430FR6047:DSP LEA 命令

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/888721/ccs-msp430fr6047-dsp-lea-command

器件型号:MSP430FR6047

工具/软件:Code Composer Studio

LEA 专家您好:

LEACMD__polynomial 命令和相关结构 MSP_LEA_Poly_Params 是什么意思?

您能否举例说明多项式系数矢量和多项式系数顺序分别代表什么?

您能给我一个此命令的示例吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    LEA 专家您好:

    software-dl.ti.com/.../structMSP__LEA__POLY__PARAMS.html

    以上 URL 是命令所在的位置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    函数操作的一个示例是

    y =scaleFactor*(p4x4 + p3x3 + p2x2 + p1x1 + p0) 、其中 coeff =[p0  P1  p2 p3   p4]且 order = 4是多项式阶数、x 是输入、y 存储在 输出中。  

    Srinivas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Srinivas Lingam、您好!

    系数定义为 uint16_t、而不是数组。

    如何将[P0 P1 P2 P3 P4]转换为 uint16_t

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    它在内部转换为 uint16_t*。

    您将注意 到与输出声明相同。 即使它被声明为 uint16_t、它在内部也被用作 uint16_t*。 我认为它在 DSPLIB 内部相应地进行了转换。 您可以看到与所有其他函数类似的声明。

    Srinivas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Srinivas Lingam、您好!

    在 FR6047上、我修改 DSPLIB_1_30_00_02\examples\Matrix 中 matrix ex1_add_Q15.c 的内容、如下所示

    为什么结果的内容是20005而不是28693?

    我不知道我的代码有什么问题。 请帮帮我、谢谢!

    // p4 = 20004 * 2^-15 = 0.610473633

    // P3 = 20003 * 2^-15 = 0.610443115

    // P2 = 20002 * 2^-15 = 0.610412598

    // P1 = 20001 * 2^-15 = 0.61038208

    // p0 = 20000 * 2^-15 = 0.610351563

    //比例因子= 20006 * 2^-15 = 0.610534668

    //顺序= 4

    // x = 20005* 2^-15 = 0.61050415

    /*输入 x */
    DSPLIB_DATA (输入 A、4)
    _q15 inputA;

    /*输入系数*/
    DSPLIB_DATA (输入 B、4)
    _q15 inputB[5];

    /*结果 y */
    DSPLIB_DATA (结果、4)
    _Q15结果;

    void polynomial _Q15 (const _Q15 * SRCA、const _Q15 * srcB、_Q15 * dst)

       MSP_LEA_Poly_Params * leaParams;

       //初始化 LEA (如果未启用)。 *
       if (!(LEAPMCTL & LEACMDEN)){
           MSP_LEA_init ();
       }
           
       /*分配 MSP_LEA_Poly_Params 结构。 *
       leaParams =(MSP_LEA_Poly_Params *) MSP_Lea_allocMemory (sizeof (MSP_LEA_Poly_Params)/sizeof (uint32_t));

       /*设置 MSP_LEA_Poly_Params 结构。 *
       
       
       leaParams->output = MSP_LEA_convert_address (dst);
       leaParams->coeff = MSP_LEA_convert_address (srcB);
       leaParams->order = 4;
       leaParams->scaleFactor = 20006;// 20006 * 2^-15

       /*将源参数加载到 LEA。 *
       LEAPMS0 = MSP_LEA_convert_address (SRCA);
       LEAPMS1 = MSP_LEA_convert_address (leaParams);

       /*调用 LEACMD__polynomial 命令。 *
       MSP_LEA_INOPKECommand (LEACMD__polynomial);

       /*免费 MSP_LEA_Poly_Params 结构。 *
       MSP_Lea_freeMemory (sizeof (MSP_LEA_Poly_Params)/sizeof (uint32_t));

       /* LEA 模块的自由锁定和返回状态。 *
       MSP_Lea_freeLock ();
       返回;


    void main (void)

       /*禁用 WDT。 *
       WDTCTL = WDTPW + WDTHOLD;

    #ifdef __MSP430_has_PMM__
       /*禁用 FRAM 器件的 GPIO 上电默认高阻抗模式*/
       PM5CTL0 &=~LOCKLPM5;
    #endif

       InputA = 20005;// 20005 * 2^-15
       InputB[0]= 20000;// 20000 * 2^-15
       InputB[1]= 20001;// 20001 * 2^-15
       InputB[2]= 20002;// 20002 * 2^-15
       InputB[3]= 20003;// 20003 * 2^-15
       InputB[4]= 20004;// 20004 * 2^-15
       polynomial Q15 (&inputA、inputB、&result);
       
       /*程序结束。 *
       __no_operation();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Srinivas Lingam、您好!

    在 FR6047上、我没有得到正确的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我向我们的软件团队查询,他们的建议是仅使用 http://www.ti.com/lit/pdf/SLAA720 或 http://www.ti.com/lit/pdf/SLAA698中提到的 LEA 命令 。  LEACMD__polynomial 不包含在 LEA 支持的任何列表中。 很抱歉造成混淆。

    Srinivas