STMCU小助手
发布时间:2022-4-16 20:00
|
01、DSP简介 提到DSP,作为电子专业的学生,大部分第一时间想到的是DSP芯片,DSP芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的DSP指令,可以用来快速的实现各种数字信号处理算法。 1 b5 P: ~8 H- B" f! X 实际上,DSP的全称是数字信号处理(DigitalSignalProcessing,简称DSP)。在过去的二十多年时间里,数字信号处理已经在通信等领域得到极为广泛DSP技术图解的应用。* Y0 W$ Z' b% d" E1 u* ?) I' h e 4 K( k8 D6 b3 [( V# [ 如下面ARM官方描述的,ARM处理器是支持DSP的。
; x( R& n3 U. Y" I7 H. }+ N 主要是在cortex-R和Cortex-M内核支持。 1 G7 v# D: F3 [) o$ }
Arm 的数字信号控制器Cortex-M4、Cortex-M7、Cortex-M33、Cortex-M35P和Cortex-M55处理器满足了对高性能通用代码处理以及数字信号处理应用的需求。
向Thumb 指令集添加DSP 扩展和可选浮点单元(FPU),旨在提高数值算法的性能。此外,它们提供了直接在 Cortex-M处理器上执行信号处理操作的机会,同时保持Cortex-M程序员模型的易用性。% v+ C# N% T8 }6 _8 ^, p ) a$ F l2 w' K7 s6 i* p8 @6 ^ 02、IAR中DSP Libary的使用+ Q0 @1 u) h) @" u: B ArmCortex-M3 /M4处理器提供信号处理指令,例如SIMD(单指令多数据)。特别是Cortex-M4专为DSP应用而设计,它支持高级SIMD,MAC(乘法和累加)指令。此外,Cortex-M4F器件具有FPU(浮点单元),用于处理浮点计算。& Z* T, C2 E/ _- E 有几种方法可以使用这些指令,例如使用汇编程序例程或内部函数,但最实用的方法之一是使用ArmCortex微控制器软件接口标准(CMSIS)DSP库。CMSIS-DSP库专为Cortex-M处理器而设计,它为数字信号处理提供优化的功能,如矩阵函数,统计函数,高级数学函数等。! Q9 Y) n7 W+ A% B* J 0 s r- l4 a; H! [2 g2 T' r6 ?- Z6 c IAREmbedded Workbench forArm中提供了预构建的CMSIS-DSP库及其源代码,在本文中,我们将了解如何将CMSIS-DSP库与IAREmbedded Workbench for Arm一起使用以及如何改进性能。" K$ m- b5 I! [" x9 N8 u# W / V3 e" q; d& |! J5 h0 e Configuringthe CMSIS-DSP library 配置CMSIS-DSP库4 `, I( P5 K* p : V9 O* v0 v6 t
6 r5 _+ E5 Y3 }: R% ~2 [- o& ~ 让我们看看如何调用CMSIS-DSP功能及其性能。这里我们将使用sqrt(平方根)函数并与标准数学函数进行比较:. {6 i& ~5 D w* O6 u ^
结果如下- w5 v( `& C; x( I4 x 1 l# b: y' V& N4 l# _
接下来,让我们来看看性能。# \& y# d9 Z4 n4 @ IAREmbedded Workbench中的CYCLECOUNTER寄存器可用于检查正在运行的代码所消耗的周期数。在检查上次执行的C/ C ++源代码或汇编程序步骤期间的循环次数时,CCSTEP寄存器非常方便有用。 i" m1 ~- r" a( e3 C( X
设置断点并记下sqrt函数的CCSTEP值:* A2 a6 y6 T6 |! M* d& }0 b1 z 1 o! ?$ ]! p# e/ O2 e' t* v$ y
, E l! J. H! a( a, b7 m- H. B 在这种情况下,CMSIS-DSPsqrt功能比标准数学函数快10倍以上。
从这个简单的例子中,我们可以看到CMSIS-DSP非常易于使用,并且显着提高了性能。 F9 }/ Y# H& L, s/ j5 z* R% D d3 L7 T8 f2 }4 i; F% r% O7 z Q+ |- L- M E. O: r' d |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版