智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 18708|回复: 43
打印 上一主题 下一主题

让 K60 跑起 DSP 数字信号处理单元

  [复制链接]

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
跳转到指定楼层
1#
发表于 2012-3-27 17:54:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        M4 相对于 M3来说,最大的特点就是多了个DSP内核,而很多人都不知道该如何用这个DSP内核,那就相当于把 M4 当成 普通的单片机来用,o(︶︿︶)o唉!!!

{:soso__792744410530523221_1:} 如果不用 DSP 内核 ,那就好比拿牛刀来切豆腐……浪费啊……


        其实,M4 的 DSP 内核挺容易用的,ARM公司已经写好了 函数库,我们直接调用就可以了。非常方便……

        在这里,野火就把 CMSIS 的 库放进工程里面,你们可以参考官方给参考资料,从而控制 DSP 内核。

什么是CMSIS?看ARM公司的介绍吧:
ARM® Cortex™ 微控制器软件接口标准 (CMSIS) 是 Cortex-M处理器系列的与供应商无关的硬件抽象层。nbsp;使用CMSIS,可以为接口外设、实时操作系统和中间件实现一致且简单的处理器软件接口,从而简化软件的重用、缩短新微控制器开发人员的学习过程,并缩短新设备的上市时间。
该标准完全可扩展,可确保其适合于所有 Cortex-M 处理器系列微控制器,从最小的 8 KB 设备到具有复杂通信外设(如以太网或USB-OTG)的设备。 (内核外设访问层的 CMSIS 内存要求少于 1 KB 代码,少于 10 字节 RAM)。


工程里的库,就是ARM公司出的CMSIS里DSP库,例程也是根据官方例程修改的,改成容易初学者接受的方式。

o(∩_∩)o 哈哈,数字信号处理没学好,只好先个个简单的例程。

  • /************************************************************************
  • *                             野火嵌入式开发工作室  
  • *                            CMSIS库cos、sin测试实验  
  • *  
  • *  实验说明:野火CMSIS库cos、sin测试实验  
  • *  
  • *  实验操作:无  
  • *  
  • *  实验效果:测试成功,则LED流水灯  
  • *  
  • *  实验目的:熟悉CMSIS库函数的调用  
  • *  
  • *  修改时间:2012-3-26     已测试  
  • *  
  • *  备    注:  
  • ************************************************************************/  
  • #define DELTA           (0.000001f)             //浮点数精度   
  •   
  • float32_t a = 0.45454;                          //乱来的数据   
  • float32_t cosa, sina, cos2a, sin2a;      
  •                                 //a 的余弦值、正弦值、余弦值平方、正弦值平方
  • float32_t test;                                           //测试结果   
  •   
  • void main(void)   
  • {   
  •     float32_t diff;                                  //差值   
  •   
  •     LED_init();                                        //初始化LED   
  •   
  •     cosa = arm_cos_f32(a);                      //求cos值,cosa = cos(a);  
  •     sina = arm_sin_f32(a);                      //求sin值,sina = sin(a);   
  •   
  •     arm_mult_f32(&cosa, &cosa, &cos2a, 1);      //乘法,cos2a = cosa * cosa ,即平方   
  •     arm_mult_f32(&sina, &sina, &sin2a, 1);      //乘法,sin2a = sina * sina ,即平方   
  •   
  •     arm_add_f32(&cos2a, &sin2a, &test, 1);  
  •                             //加法,test = cos2a + sin2a = cosa * cosa  + sina * sina = 1
  •   
  •     diff = fabsf( 1.000000000 - test);          //求绝对值   
  •   
  •     if( diff <= DELTA)                          //如果测试结果在精度范围之内   
  •     {   
  •         while(1)   
  •         {   
  •             water_lights();                     //流水灯表示成功   
  •         }   
  •     }   
  • }



代码里面,arm_xxx_f32  这些就是ARM公司给的DSP库 的函数。其实,就是熟悉那些函数接口而已……

而函数接口,ARM公司的帮助文档里写得非常详细,只不过是英文,害怕了很多人……



我们用的是 从 ARM 公司下载来,编译的库,2.10 ,已经打了5个补丁的了。(现在也出了 3.0 的库)
不是用 IAR 自带的 CMSIS库,当然,我们也可以用 IAR 自带的库 ,但库比较旧。


IAR自带的库所在默认路径为:   C:\Program Files\IARSystems\Embedded Workbench 6.0\arm\CMSIS\Lib\IAR  :

     iar_cortexM0b_math.a
    iar_cortexM0l_math.a
    iar_cortexM3b_math.a
    iar_cortexM3l_math.a
    iar_cortexM4bf_math.a
    iar_cortexM4b_math.a
    iar_cortexM4lf_math.a
    iar_cortexM4l_math.a

iar 指编译器 ;  cortexM*  指的是内核   ,  l 表示小端 ,b表示大端   ,f 表示带浮点单元



下载地址






注意:我们新版本的教程: 三天入门M4——Kinetis(V2).pdf  ,里面有讲解如何查看官方的帮助文档。







补充内容 (2012-3-27 18:38):
新版本的PDF教程,可以在3楼下载……

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

5

主题

366

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2124
威望
1227
贡献
555
兑换币
29
注册时间
2011-7-23
在线时间
171 小时
2#
发表于 2012-3-27 17:58:31 | 只看该作者
顶野火。。。
回复 支持 反对

使用道具 举报

1

主题

43

帖子

0

精华

高级会员

Rank: 4

积分
665
威望
350
贡献
141
兑换币
16
注册时间
2009-10-13
在线时间
87 小时
3#
发表于 2012-3-27 18:01:17 | 只看该作者
  野火 ,我帮你附上教程吧:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
4#
 楼主| 发表于 2012-3-27 18:03:00 | 只看该作者
山外メ雲ジ 发表于 2012-3-27 18:01
野火 ,我帮你附上教程吧:

呵呵,打算新开个帖子来发……

回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
5#
 楼主| 发表于 2012-3-27 18:11:56 | 只看该作者
zy317409314 发表于 2012-3-27 17:58
顶野火。。。

哥们的头像,都漏口水啦?o(∩_∩)o 哈哈

谢谢支持……

回复 支持 反对

使用道具 举报

32

主题

646

帖子

0

精华

常驻嘉宾

Mechanical Engineering

Rank: 8Rank: 8

积分
4785

热心会员奖章优秀会员奖章在线王奖章活跃会员奖章

QQ
威望
2078
贡献
819
兑换币
378
注册时间
2011-11-14
在线时间
944 小时
6#
发表于 2012-3-27 18:38:26 | 只看该作者
   顶顶
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
7#
 楼主| 发表于 2012-3-27 18:42:49 | 只看该作者
常用的几个函数:
函数名                                        作用
arm_cos_f32                               求余弦值
arm_sin_f32                                求正弦值
arm_sin_cos_f32                         求正弦值和余弦值
arm_abs_f32                               求绝对值
arm_add_f32                               求加法
arm_sub_f32                               求减法
arm_max_f32                              求数组元素的最大值
arm_min_f32                               求数组元素的最小值
arm_mult_f32                              乘法
arm_mat_mult_f32                       矩阵乘法
arm_mean_f32                            平均值
arm_sqrt_f32                               求平方根
arm_power_f32                            求平方和
arm_shift_q31                              数组元素的移位
arm_var_f32                                求数组元素的方差
arm_std_f32                                求数组元素的标准差
arm_rms_f32                                求均方根
arm_fill_f32                                  填充数据
arm_copy_f32                              复制数据
arm_dot_prod_f32                         点乘
arm_negate_f32                             取反
arm_offset_f32                               偏移
arm_rfft_init_f32                             傅立叶初始化
arm_rfft_f32                                   傅立叶
arm_split_rfft_f32                            分布傅立叶
回复 支持 反对

使用道具 举报

5

主题

315

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2729
QQ
威望
1332
贡献
539
兑换币
76
注册时间
2011-2-27
在线时间
429 小时
8#
发表于 2012-3-27 18:50:03 | 只看该作者
回复 支持 反对

使用道具 举报

6

主题

110

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1037
威望
387
贡献
590
兑换币
8
注册时间
2011-2-16
在线时间
30 小时
9#
发表于 2012-3-27 18:59:56 | 只看该作者
哎,来晚了,顶火锅

回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
10#
 楼主| 发表于 2012-3-27 22:24:41 | 只看该作者
blueskywalker 发表于 2012-3-27 18:59
哎,来晚了,顶火锅

有心不怕迟……

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 07:23 , Processed in 0.048002 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表