微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 第16章 ControllerFunctions的使用(二)

第16章 ControllerFunctions的使用(二)

时间:10-02 整理:3721RD 点击:
第16章  ControllerFunctions的使用(二)

    本期教程主要讲解控制函数中的cos和sin函数数值的获取,这里使用的函数比起第10章中使用的sin和cos函数数值的获取要方便很多。

    16.1 浮点数SIN和COS

    16.2 定点数SIN和COS

    16.3 Clark正变换和逆变换

    16.4 Park正变换和逆变换

    16.5 总结


16.1  浮点数SIN和COS
16.1.1  arm_sin_cos_f32

函数定义如下:

    void arm_sin_cos_f32(float32_t theta, float32_t *pSinVal, float32_t * pCosVal)

参数定义:

     [in]  theta    input value in degrees   

      [out] *pSinValpoints to the processed sine output.   

     [out] *pCosVal points to the processed cos output.  

注意事项:

       1.    参数theta的单位是角度。这里输入角度-180到179就能得到一个周期的正弦或者余弦数值。


16.1.2  实例讲解

实验目的:

    1. 学习ControllerFunctions中SIN和COS的求解

实验内容:

           1. 按下按键K1, 串口打印函数DSP_SIN_COS的输出结果

实验现象:

           通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:




程序设计:

  1. /*
  2. *********************************************************************************************************
  3. *    函 数 名: DSP_SIN_COS
  4. *    功能说明: 浮点数cos和sin计算
  5. *    形    参:无
  6. *    返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void DSP_SIN_COS(void)
  10. {
  11.      int16_t i;
  12.      float32_t pSinVal;
  13.      float32_t pCosVal;

  14.      for(i = -180; i < 180; i++)
  15.      {
  16.          arm_sin_cos_f32(i, &pSinVal, &pCosVal);                                                       (1)
  17.          printf("i = %d pSinVal = %f pCosVal = %f\r\n", i, pSinVal, pCosVal);
  18. //       printf("%f\r\n", pSinVal);                                                                    (2)
  19. //       printf("%f\r\n", pCosVal);                                                                    (3)
  20.      }
  21. }

复制代码

1.     sin和cos数据的求解。

2.     通过matlab绘制sin函数的输出数据的曲线(绘制方法见第10章的10.4小节)




3.     通过matlab绘制cos函数的输出数据的曲线(绘制方法见第10章的10.4小节)




16.2  定点数SIN和COS16.2.1  arm_sin_cos_q31

函数定义如下:

    void arm_sin_cos_q31(q31_ttheta, q31_t * pSinVal, q31_t * pCosVal)

参数定义:

    [in]  theta   input value in degrees   

     [out] *pSinVal points to the processed sineoutput.   

    [out] *pCosValpoints to the processed cos output.  

注意事项:

    1.    参数theta的单位是角度。这里输入角度 -2^31 ~ 2^31-1 就能得到一个周期的正弦或者余弦数值。

16.2.2  实例讲解

实验目的:

    1. 学习ControllerFunctions中SIN和COS的求解

实验内容:

           1. 按下按键K2, 串口打印函数DSP_SIN_COS的输出结果

实验现象:

           通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:




程序设计:

  1. /*
  2. *********************************************************************************************************
  3. *    函 数 名: DSP_SIN_COS_Q31
  4. *    功能说明: 定点数cos和sin计算
  5. *    形    参:无
  6. *    返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void DSP_SIN_COS_Q31(void)
  10. {
  11.      int16_t i;
  12.      q31_t pSinVal;
  13.      q31_t pCosVal;

  14.      for(i = -256; i < 256; i++)
  15.      {
  16.          arm_sin_cos_q31(i*8388608, &pSinVal, &pCosVal);                                              (1)
  17.          printf("i = %d pSinVal = %d pCosVal = %d\r\n", i, pSinVal, pCosVal);                       
  18. //       printf("%d\r\n", pSinVal);                                                                   (2)
  19. //       printf("%d\r\n", pCosVal);                                                                   (3)
  20.      }
  21. }

复制代码

1.    sin和cos数据的求解。

2.    通过matlab绘制sin函数的输出数据的曲线(绘制方法见第10章的10.4小节)




3.    通过matlab绘制cos函数的输出数据的曲线(绘制方法见第10章的10.4小节)





16.3  Clarke 正变换和逆变换

    暂时没有研究,留待以后解决。

16.4  Park 正变换和逆变换

    暂时没有研究,留待以后解决。

16.5  总结

    本期教程就跟大家讲这么多,有兴趣的可以深入研究下算法的实现。


                         谢谢分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top