stm32f4的dsp库有什么作用
发布网友
发布时间:2022-04-19 09:47
我来回答
共1个回答
热心网友
时间:2023-08-26 01:16
如何使用STM32F4的DSP库
我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如1.1+1.1的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。
现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。
首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED
/*
FPU
settings------------------------------------------------------------*/
#if
(__FPU_PRESENT
==
1)&&
(__FPU_USED
==
1)
SCB->CPACR
|=
((3UL<<
10*2)|(3UL
<<
11*2));
/*set
CP10
and
CP11
Full
Access
*/
#endif
这样就使能了FPU。
对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。但是对于复杂的如三角运算、开方运算等,我们就需要加入math.h头文件。但是如果单纯的加入他,那么Keil会自动调用内部的math.h,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将math.h换成ST的库,即arm_math.h。在该头文件中,涉及到另一个文件core_cmx.h(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4.h即可。
到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用三角函数如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于math.h,所以你调用的仍旧是Keil库中的标准math.h。要使用arm_math.h中的arm_sin_f32()函数(见Line.5780,原函数见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是三次样条插值法快速求值(见Line.263
/*
Cubic
interpolation
process
*/)。
注意一下例外函数,sqrt(),在arm_math.h中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED
==
1)
&&
defined
(
__CC_ARM
)才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方
stm32f4的dsp库有什么作用
对于使用了FPU的STM32F4是没有任何作用的。所以,需要将math.h换成ST的库,即arm_math.h。在该头文件中,涉及到另一个文件core_cmx.h(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4.h即可。到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如...
STM32F103,了解一下?
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了ARM Cortex-M3内核,主频高达72MHz。2. 内置IO口和存储器接口,便于与外部器件进行通信和控制。3. 支持外部时钟和复位功能,可通过端口配置实现其他功能。4. 具有容忍5V电压的能力,适用于较宽的工作电压范围。5. 内置看门狗定时器和电源管理单元,可提高系统的稳定性和功耗效率。6. 支持多种外设接口,如ADC、DAC、UART、SPI等。7. 集成了…STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过1000个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服...
如何使用STM32F4的DSP库
1、 安装DSP库文件 2、 配置编译环境,上述添加是在project→options→C/C++→Define中添加,并且分割用逗号,即 __FPU_PRESENT=1,__FPU_USED=1,ARM_MATH_CM4,__CC_ARM11 3、 在需要调用DSP函数的文件中加上 include "arm_math.h" 11 4、 需要在project中添加用到的.c文件,看...
stm32f4的DSP库可以做4096点FFT吗
可以,函数 arm_cfft_radix4_init_f32,用于初始化 FFT 运算相关参数,其中: fftLen 用于指 定 FFT 长度(16/64/256/1024/4096)
STM32F4的简介
STM32F4系列微控制器集成了单周期DSP指令和FPU(floating point unit,浮点单元),提升了计算能力,可以进行一些复杂的计算和控制。STM32 F4系列引脚和软件兼容于当前的STM32 F2系列产品。
请教STM32F4 的DSP库 FFT运算的问题.求高手指点
代码如下;int32_t main(void){ for(index=0;index<2048;index++){ testInput_f32_10khz[index]= 100*sin(3.14*index/512);} arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize...
STM32F4 ADC模块使用不同DMA模式的区别和对比
的模式。一句话,STM32F4似灰常强滴。。。更多猛招,敬请留意后续文章。。。ST的ADC功能确实是比较强的,激活DMA DUAL Circular Buffer以后,可以利用FPU单元的DSP指令配合前台信号采集,在后台同步完成实时信号分析。简单的说,原先要用200MIPS以下的DSP来做的事情,STM32F4都有机会取代,性价比超强。
STM32是否完全替代DSP?
STM32它能够运算跟只会运算是两码事,DSP它就是一块为了运算而生的芯片,两者之间的指令集都不一样,你STM32有很高性能的芯片,那DSP也有啊,况且DSP对算法处理比STM32稳定得多了。可以看看网页链接
stm32 f4 fpu与cpu可以同时工作吗
_CC_ARM编译后会汇编代码的差别巨大差别。当然,对于arm_sqrt_f32()函数还是有些麻烦,如果你确认被开方的书是大于等于0的,那就直接使用__sqrtf()函数完成运算,即一条简单的VSQRT指令。STM32F4固件库还提供了其他很有用的数学函数,都位于DSP_Lib文件夹,请大家慢慢探索,Discovery!
stm32f407和tms320f28335的对比
论坛上看到的比较。这几天刚拿到STM32F4的评估板,STM32F4这次的卖点就是FPU和DSP指令集,关注了挺长时间,这次就想测试一下STM32F4的浮点性能,如果满足就升级自己飞控的架构。本来用STM32F103+28335双核架构,F28335当浮点处理器用,调试起来比较麻烦,所以一直想换了。测试代码就是用的我飞控的算法,...
arm103和407区别
便于ST的用户扩展或升级产品,而保持硬件的兼容能力。三、集成功能不同1、stm32 f103:集成定时器,CAN,ADC,SPI,I2C,USB,UART,等多种功能。2、stm32 f407:集成了新的DSP和FPU指令,168MHz的高速性能使得数字信号控制器应用和快速的产品开发达到了新的水平。提升控制算法的执行速度和代码效率。