淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 开源电子 网 公众平台:“正点原子” 官方网站:www.alientek.com 联系电话:13922348612 ddddd ALIENTEK 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 《手把手教你学STM32》 DSP测试实验 适用平台 STM32F1xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) ddddd 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP测试实验 参考资料: 探索者STM32F4开发板 《STM32F4开发指南-库函数版本》-第52章 DSP测试实验 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 目录 DSP功能介绍-STM32F4 1 DSP源码库介绍 2 DSP库运行环境搭建 2 DSP库使用实例讲解 3 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 DSP功能描述 STM32F4除了带有32单精度硬件FPU外,在数字信号处理方面还增加了DSP指令集。 支持诸如单周期乘加指令(MAC),优化的单指令多数据指令(SIMD),饱和算数等多种数字信号处理指令集。 M4执行所有的 DSP指令集都可以在单周期完成,而M3需要多个指令和多个周期才能完成。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 Cortex-M4支持SIMD指令集,这在-M3/M0系列是不可用的。 上述表中的指令,有的属于SIMD指令。与硬件乘法器一起工作(MAC),使所有这些指令都能在单个周期内执行。 受益于SIMD指令的支持,Cortex-M4处理器能在单周期内完成高达32×32+6464的运算,为其他任务释放处理器的带宽,而不是被乘法和加法消耗运算资源。比如一个比较复杂的运算:两个16×16乘法加上一个32位加法,如图所示: 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP功能介绍 以上图片所示的运算,即:SUM = SUM +(A* C)+(B *D),在STM32F4上面,可以被编译成由一条单周期指令完成。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 DSP源码库介绍 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 软件包目录: 光盘8,STM32参考资料STM32F4xx固件库STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDSP_Lib Source文件夹是所有DSP库的源码,Examples文件夹是对应的测试实例。测试实例都是带main函数的,也就是拿到工程中可以直接使用。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 DSP库介绍 BasicMathFunctions 基本数学函数:提供浮点数的各种基本运算函数,如向量加减乘除等运算。 CommonTables arm_common_tables.c文件提供位翻转或相关参数表。 ComplexMathFunctions 复杂数学功能,如向量处理,求模运算的。 ControllerFunctions 控制功能函数。包括正弦余弦,PID电机控制,矢量Clarke变换,矢量Clarke逆变换等。 FastMathFunctions 快速数学功能函数。提供了一种快速的近似正弦,余弦和平方根等相比CMSIS计算库要快的数学函数。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 FilteringFunctions 滤波函数功能,主要为FIR和LMS(最小均方根)等滤波函数。 MatrixFunctions 矩阵处理函数。包括矩阵加法、矩阵初始化、矩阵反、矩阵乘法、矩阵规模、矩阵减法、矩阵转置等函数。 StatisticsFunctions 统计功能函数。如求平均值、最大值、最小值、计算均方根RMS、计算方差/标准差等。 SupportFunctions 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换,Q任意格式相互转换。 TransformFunctions 变换功能。包括复数FFT(CFFT)/复数FFT逆运算(CIFFT)、实数FFT(RFFT)/实数FFT逆运算(RIFFT)、和DCT(离散余弦变换)和配套的初始化函数。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 对于DSP库源码,代码量很大,ST为我们提了.lib格式的文件,方便使用。这些.lib文件就是由Source文件夹下的源码编译生成的,如果想看某个函数的源码,大家可以在Source文件夹下面查找。 .lib格式文件路径:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISLibARM 总共有8个.lib文件,如下: 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP源码库介绍 arm_cortexM0b_math.lib (Cortex-M0大端模式) arm_cortexM0l_math.lib (Cortex-M0小端模式) arm_cortexM3b_math.lib (Cortex-M3大端模式) arm_cortexM3l_math.lib (Cortex-M3小端模式) arm_cortexM4b_math.lib (Cortex-M4大端模式) arm_cortexM4bf_math.lib (Cortex-M4小端模式) arm_cortexM4l_math.lib (浮点Cortex-M4大端模式) arm_cortexM4lf_math.lib (浮点Cortex-M4小端模式) 我们得根据所用MCU内核类型以及端模式来选择符合要求的.lib文件,本章我们所用的STM32F4属于CortexM4F内核,小端模式,应选择:arm_cortexM4lf_math.lib(浮点Cortex-M4小端模式)。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库运行环境搭建 DSP库运行环境搭建 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库运行环境搭建 DSP库运行环境搭建步骤 添加文件。 Include文件夹,是直接拷贝:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISInclude 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库运行环境搭建 ②添加arm_cortexM4lf_math.lib文件到工程,并把include文件夹包含到path。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库运行环境搭建 添加全局宏定义 为了使用DSP库的所有功能,我们还需要添加几个全局宏定义: 1,__FPU_USED :这个如果在MDK中开启了,就不需要再填 2,__FPU_PRESENT :这个在stm32f4xx.h默认开启,可以不填 3,ARM_MATH_CM4 4,__CC_ARM 5,ARM_MATH_MATRIX_CHECK 6,ARM_MATH_ROUNDING 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库运行环境搭建 在Define处要输入的所有宏为:STM32F40_41xxx,USE_STDPERIPH_DRIVER,ARM_MATH_CM4,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库测试 DSP库测试 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库测试 DSP库测试实例介绍 sin(x)2+cos(x)2=1 MDK的标准库(math.h)提供我们:sin、cos、sinf和cosf等4个函数,带f的表示单精度浮点型运算,即float型,而不带f的表示双精度浮点型,即double。 STM32F4的DSP库,则提供我们另外两个函数:arm_sin_f32和arm_cos_f32(注意:需要添加:arm_math.h头文件才可使用!!!),这两个函数也是单精度浮点型的,用法同sinf和cosf一模一样。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库测试 本例程测试: arm_sin_f32 & arm_cos_f32 和 sinf&cosf 的速度差别。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com DSP库测试 DSP FFT测试大家参考教程自行测试。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 谢谢您对“正点原子”团队的支持 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com