STM32单片机芯片与内部111 STM32 DSP内核 介绍 功能 库与源码

devtools/2025/3/5 0:56:18/

目录

一、STM32F4 的 DSP 功能介绍

二、Cortex-M4 内核的 DSP 和专业 DSP 的区别

三、相关功能

1、BasicMathFunctions

2、FastMathFunctions

3、ComplexMathFunctions

4、FilteringFunctions

5、MatrixFunctions

6、TransformFunctions

7、ControllerFunctions

8、StatisticsFunctions

9、SupportFunctions

10、CommonTables

四、DSP库与源码

1、获取方式

2、DSP库说明

(1)、Examples 文件夹中的文件如下,主要是提供了一些例子

(2)、Include 文件夹里面是 DSP 库的头文件

(3)、Lib 文件夹里面是 MDK(ARM) , IAR 和 CGG 版库文件

(4)、Projects 文件夹里面的文件如下, 提供了三个版本的工程模板, 每个模板里面都是把所有源码文件添加了进来(占用较多flash ram)

(5)、Source 文件夹中的文件如下,这个是 DSP 的源码文件

3、DSP 库版本的区别


一、STM32F4 的 DSP 功能介绍

DSP

        DSP 单元集成了一批专用的指令集(主要是 SMID 指令和快速 MAC 乘累加指令) ,可以加速数字信号处理的执行速度。

FPU

        Cortex-M4 内核支持单精度浮点,可以大大加速浮点运算的处理速度。

  • M4 和 M7 系列有相同的 DSP 指令集。
  • M7 相比 M4 系列要多一些浮点指令集。
  • 同时这里要注意一个小细节,浮点指令都是以字符 V 开头的。 通过这点,我们可以方便的验证是否正确开启了 FPU

  • Cortex-M7 内核的 DSP 性能最强。
  • Cortex-M3, M4 和 M33 是中等性能,其中 M3 最弱。
  • Cortex-M0, M0+和 M23 性能最弱。

二、Cortex-M4 内核的 DSP 和专业 DSP 的区别

三、相关功能

1、BasicMathFunctions

        提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算。

2、FastMathFunctions

        主要提供SIN, COS以及平方根SQRT的运算。

3、ComplexMathFunctions

        复杂数学运算,主要是向量,求模等运算。

4、FilteringFunctions

        主要是滤波函数,如IIR, FIR, LMS等。

5、MatrixFunctions

        主要是矩阵运算。

6、TransformFunctions

        变换功能。 包括复数FFT(CFFT) , 复数FFT逆运算(CIFFT) , 实数FFT(RFFT) , 实数 FFT 逆运算。

7、ControllerFunctions

        控制功能,主要是PID控制函数和正余弦函数。

8、StatisticsFunctions

        统计功能函数,如求平均值,最大值,最小值,功率, RMS等。

9、SupportFunctions

        支持功能函数,如数据拷贝, Q格式和浮点格式相互转换。

10、CommonTables

        arm_common_tables.c 文件提供位翻转或相关参数表。

四、DSP库与源码

1、获取方式

  • 每个版本的 Cube 软件包都会携带 CMSIS 文件夹, 只是版本比较老,不推荐。即使是最新的 CubeH7软件包, 包含的 CMSIS 软件包版本也有点低。
  • 大家安装了新版 MDK 后, CMSIS 软件包会存在于路径: ARM\PACK\ARM\CMSIS\5.6.0\CMSIS。如果有更新的版本,推荐大家使用最新版本, MDK 的软件包下载地址:http://www.keil.com/dd2/Pack/
  • 通过 GitHub 获取也比较方便,地址: https://github.com/ARM-software/CMSIS_5 。点击右上角就可以下载 CMSIS 软件包了。

2、DSP库说明

(1)、Examples 文件夹中的文件如下,主要是提供了一些例子

(2)、Include 文件夹里面是 DSP 库的头文件

(3)、Lib 文件夹里面是 MDK(ARM) , IAR 和 CGG 版库文件

(4)、Projects 文件夹里面的文件如下, 提供了三个版本的工程模板, 每个模板里面都是把所有源码文件添加了进来(占用较多flash ram)

(5)、Source 文件夹中的文件如下,这个是 DSP 的源码文件

3、DSP 库版本的区别

  • arm_cortexM4lf_math.lib

        Cortex-M4 内核, l 表示小端格式, f 表示带 FPU 单元, M4 仅支持 Single Precision 单精度浮点。

  • arm_cortexM4l_math.lib

        Cortex-M4 内核, l 表示小端格式。

  • arm_cortexM4bf_math.lib

        Cortex-M4 内核, b 表示大端格式, f 表示带 FPU 单元, M4 仅支持 Single Precision 单精度浮点。

  • arm_cortexM4b_math.lib

        Cortex-M4 内核, b 表示大端格式。

        STM32F4 是 M4 内核, 单精度浮点, 一般使用小端格式,所以我们选择库arm_cortexM4lf_math.lib.


http://www.ppmy.cn/devtools/164607.html

相关文章

Python 如何实现烟花效果的完整代码

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…

mybatis相关的面试题及答案第一弹

1. MyBatis的核心组件有哪些?它们的作用是什么? 答案: MyBatis的核心组件包括: SqlSessionFactory:负责创建SqlSession对象,是MyBatis的核心工厂。SqlSession:用于执行SQL语句、获取映射器&am…

L-Lipschitz Gershgorin ResNet 网络

大家读完觉得有帮助记得关注和点赞!!! 抽象 深度残差网络 (ResNets) 在计算机视觉任务中取得了巨大的成功,这归因于它们能够保持通过深度架构的梯度流。同时,控制神经网络中的 Lipschitz 绑定已…

[密码学实战]Java生成SM2根证书及用户证书

前言 在国密算法体系中,SM2是基于椭圆曲线密码(ECC)的非对称加密算法,广泛应用于数字证书、签名验签等场景。本文将结合代码实现,详细讲解如何通过Java生成SM2根证书及用户证书,并深入分析其核心原理。 一、证书验证 1.代码运行结果 2.根证书验证 3.用户证书验证 二、…

算法系列之动态规划

动态规划(Dynamic Programming,简称DP)是一种用于解决复杂问题的算法设计技术。它通过将问题分解为更小的子问题,并存储这些子问题的解来避免重复计算,从而提高算法的效率。本文将介绍动态规划的基本概念、适用场景、复…

计算机网络 (第一章)

第一章 计算机网络 概述 1. 定义: 计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号).这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的…

实战-使用 Playbook 批量部署多台 LAMP 环境

实战-使用 Playbook 批量部署多台 LAMP 环境 playbooks 使用步骤 playbook 是一个不同于使用 ansible 命令行执行方式的模式,功能更强大更灵活。 1、在 playbooks 中定义任务: - name: task description #任务描述信息 module_name: modul…

Google chrome拦截某些下载内容

现在越来越多的单位和个人都开始使用Google chrome了,本人也觉得chrome浏览器很好用,页面加载速度极快,能快速呈现网页内容,提升浏览效率。扩展程序丰富,涵盖办公、学习、娱乐、开发等众多领域,可满足各种个…