你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【安富莱——DSP教程】第16章 ControllerFunctions的使用(二)

[复制链接]
baiyongbin2009 发布时间:2015-3-27 11:35
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接
1 r3 y$ F1 F9 G
第16章 ControllerFunctions的使用(二)

7 r% B3 ?8 Z; g! o: s
    本期教程主要讲解控制函数中的cos和sin函数数值的获取,这里使用的函数比起第10章中使用的sin和cos函数数值的获取要方便很多。
16.1 浮点数SIN和COS
16.2 定点数SIN和COS
16.3 Clark正变换和逆变换
16.4 Park正变换和逆变换
16.5 总结
16.1 浮点数SIN和COS16.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] *pSinVal points 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光盘里面有此软件)查看打印信息现象如下:
16.1.png
程序设计:
  1. /*
    / U3 }6 g" E4 Z+ u+ s7 u/ [' F
  2. *********************************************************************************************************  w- S5 }& b# }+ e
  3. *        函 数 名: DSP_SIN_COS
    0 e- t+ W$ @7 o
  4. *        功能说明: 浮点数cos和sin计算
    3 o7 A( i- x% q
  5. *        形    参:无5 h! I( X8 Y, B6 o! T
  6. *        返 回 值: 无
    3 [- ^: k! N1 w* w1 e" ~
  7. *********************************************************************************************************
    & M9 l# m5 h4 `* g7 U4 x
  8. */" R+ u* m. s2 P0 t# ?6 z
  9. static void DSP_SIN_COS(void)9 @. X/ }1 ?0 Y, o+ Y8 k& u
  10. {* \/ g' b& t( ^) R( ?+ G1 |
  11. int16_t i;: [. O% f( R8 G% d/ I
  12. float32_t pSinVal;5 `* B7 l, D% o, P- I
  13. float32_t pCosVal;- m' X5 e& `" Y4 x  r

  14. 7 F8 {8 y/ Q. h2 g# w3 Z
  15. for(i = -180; i < 180; i++)2 P0 `* D# I7 Z
  16. {* R4 D' L/ U$ C' u+ [$ \, N
  17. arm_sin_cos_f32(i, &pSinVal, &pCosVal);                                                            (1)3 E, t# C$ W' L4 N& a
  18. printf("i = %d pSinVal = %f pCosVal = %f\r\n", i, pSinVal, pCosVal);0 I) |) {+ ^7 u" A& o. M( O
  19. //         printf("%f\r\n", pSinVal);                                                                    (2)" M$ K/ C+ x9 E1 @* |
  20. //         printf("%f\r\n", pCosVal);                                                                    (3)0 i. c/ f, L( `
  21. }
    1 `6 r4 b' _- M5 o& z- [
  22. }
复制代码
1. sin和cos数据的求解。
2. 通过matlab绘制sin函数的输出数据的曲线(绘制方法见第10章的10.4小节)
16.2.png
3. 通过matlab绘制cos函数的输出数据的曲线(绘制方法见第10章的10.4小节)
16.3.png
16.2 定点数SIN和COS16.2.1 arm_sin_cos_q31
函数定义如下:
    void arm_sin_cos_q31(q31_t theta, q31_t * pSinVal, q31_t * pCosVal)
参数定义:
      [in]  theta    input value in degrees   
      [out] *pSinVal points to the processed sine output.   
      [out] *pCosVal points 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光盘里面有此软件)查看打印信息现象如下:
16.4.png
程序设计:
  1. /*
    ( _' A0 e' c) ^6 C' a% S' y3 Y) G
  2. *********************************************************************************************************$ C: Z) z' Q' W- }
  3. *        函 数 名: DSP_SIN_COS_Q31
    % X1 ~+ C. H- ?/ l( n
  4. *        功能说明: 定点数cos和sin计算
    6 t( P1 H1 o+ g5 d" k9 c% g
  5. *        形    参:无+ t5 w; E1 P3 s
  6. *        返 回 值: 无' {1 a, S0 ]; h& h' `) B) [3 l
  7. *********************************************************************************************************
    " O. s! L8 R0 y% v  z
  8. */
    & z8 _5 K& E  l5 h
  9. static void DSP_SIN_COS_Q31(void)2 Q* [( L, a% G2 y5 h3 a
  10. {! g( C7 m9 A: g4 L0 {6 M3 Q
  11. int16_t i;
    2 k* v* p8 W. r
  12. q31_t pSinVal;
    8 u: ^+ r" r3 u3 H/ ?
  13. q31_t pCosVal;5 f# n0 I! F/ G. O0 S; P$ u
  14.   b! y: a# D$ ?' c
  15. for(i = -256; i < 256; i++)
    6 C4 x/ j+ B2 P3 ?3 ~9 _" P
  16. {/ `2 Z3 o- Z9 t# \: V* r
  17. arm_sin_cos_q31(i*8388608, &pSinVal, &pCosVal);                                                  (1)$ T4 M* b6 y# _0 k
  18. printf("i = %d pSinVal = %d pCosVal = %d\r\n", i, pSinVal, pCosVal);                        
    , U; J' ]2 o( g; K
  19. //         printf("%d\r\n", pSinVal);                                                                   (2)
    ) @5 u  I3 r. R8 E
  20. //         printf("%d\r\n", pCosVal);                                                                   (3)
    ; C5 {# L9 G, d7 o6 w3 k' z/ w9 H
  21. }
    ( i" p' ~. a- z' I+ C, _
  22. }
复制代码
1. sin和cos数据的求解。
2. 通过matlab绘制sin函数的输出数据的曲线(绘制方法见第10章的10.4小节)
16.5.png
3. 通过matlab绘制cos函数的输出数据的曲线(绘制方法见第10章的10.4小节)
16.6.png
16.3 Clarke 正变换和逆变换
    暂时没有研究,留待以后解决。
16.4 Park 正变换和逆变换
    暂时没有研究,留待以后解决。
16.5 总结
    本期教程就跟大家讲这么多,有兴趣的可以深入研究下算法的实现。
3 k! R+ `3 g! U( A% X: w
收藏 评论2 发布时间:2015-3-27 11:35

举报

2个回答
kqh1120 回答时间:2015-3-28 15:00:23
学习了啊 3.gif
wu1169668869 回答时间:2015-3-28 19:56:29
谢谢分享 3.gif

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版