智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 18710|回复: 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

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
55
威望
39
贡献
12
兑换币
13
注册时间
2015-4-26
在线时间
2 小时
毕业学校
成都理工大学工程技术学院
44#
发表于 2015-5-28 17:06:01 | 只看该作者
请问一下,你是用的哪个版本的IAR呢?
回复 支持 反对

使用道具 举报

14

主题

75

帖子

0

精华

高级会员

Rank: 4

积分
695
威望
365
贡献
194
兑换币
219
注册时间
2014-3-2
在线时间
68 小时
毕业学校
江苏师范大学
43#
发表于 2014-8-9 14:27:09 | 只看该作者
楼主  有傅里叶arm_rfft_init_f32(); arm_rfft_f32() ;的测试例程吗?
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

高级会员

Rank: 4

积分
503
威望
270
贡献
161
兑换币
175
注册时间
2013-10-9
在线时间
36 小时
42#
发表于 2014-6-30 22:33:28 | 只看该作者
是所有的K60芯片都可以吗,还是只有个别的一些的芯片可以?
回复 支持 反对

使用道具 举报

5

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1019
QQ
威望
506
贡献
343
兑换币
316
注册时间
2012-12-23
在线时间
85 小时
41#
发表于 2014-3-25 15:28:37 | 只看该作者
求添加的教程,湿了好几次都没成功
回复 支持 反对

使用道具 举报

5

主题

135

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1019
QQ
威望
506
贡献
343
兑换币
316
注册时间
2012-12-23
在线时间
85 小时
40#
发表于 2014-3-22 21:15:18 | 只看该作者
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复 支持 反对

使用道具 举报

26

主题

455

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6812

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
3067
贡献
2011
兑换币
1850
注册时间
2012-9-10
在线时间
867 小时
39#
发表于 2014-3-13 20:49:21 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
26
威望
24
贡献
2
兑换币
3
注册时间
2013-9-3
在线时间
0 小时
毕业学校
成都
38#
发表于 2013-9-3 19:40:09 | 只看该作者
谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
34
贡献
8
兑换币
10
注册时间
2013-7-5
在线时间
2 小时
毕业学校
bupt
37#
发表于 2013-7-26 15:46:41 | 只看该作者
添加头文件arm_math.h
#include "arm_math.h"
的时候出现编译错误:Fatal Error[Pe1696]: cannot open source file "arm_math.h"
searched: "E:\Program File\IAR Systems\Embedded Workbench 6.0\arm\inc\"
searched: "E:\Program File\IAR Systems\Embedded Workbench 6.0\arm\inc\c\"

不知道怎么添加搜索路径E:\Program File\IAR Systems\Embedded Workbench 6.0\arm\CMSIS
求助!
回复 支持 反对

使用道具 举报

0

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
628
威望
350
贡献
196
兑换币
211
注册时间
2012-11-12
在线时间
41 小时
36#
发表于 2013-5-26 19:02:24 | 只看该作者
感谢!野火哥!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 10:09 , Processed in 0.099515 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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