STMCU小助手
发布时间:2021-12-28 21:00
|
1.1 初学者重要提示( @% d! c! O. c0 K" K 关于学习方法问题,可以看附件章节A。 这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。1 u$ n3 y: H5 r \* H 当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON( i7 l% e, s) l+ x* d, i 1.2 STM32H7的DSP功能介绍 STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下:
1 W O) X$ x, y. {$ C 重点看如下两个设计单元: * u' @7 C! Q7 N! E DSP DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。+ x$ W d3 c2 f. J/ k- Z& j : d) t# _& G- F! y3 | FPU Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。6 P" S: [. J+ _* U' _ 9 h8 b7 P" c% l( R 下面是Cortex-M3,M4和M7的指令集爆炸图: * `# w8 e" \" |: r) d+ t
通过这个图,我们可以了解到以下几点: p! N$ ]1 }8 w# o7 b4 ` M4和M7系列有相同的DSP指令集。: H' B: ?3 m! a/ I9 T+ ~ M7相比M4系列要多一些浮点指令集。; e5 b( W; ?3 F J9 E( V 同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。: ^8 l+ R% l- ~ 不同M内核的DSP性能比较:
Cortex-M7内核的DSP性能最强。 Cortex-M3,M4和M33是中等性能,其中M3最弱。 Cortex-M0,M0+和M23性能最弱。! U$ V6 |# r2 s3 f3 `) R3 v % i+ h* v$ b8 A K. v$ f* m 1.3 Cortex-M7内核的DSP和专业DSP的区别2 s! w% r: I3 d M核的DSP处理单元与专业DSP的区别:
; y% K' D- ?4 n' q& G' S, B 1.4 ARM提供的CMSIS-DSP库# v' b/ e" y8 f# f5 d. D2 o 为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法: BasicMathFunctions, p- a4 G9 P# X3 @* V4 L4 x1 L 提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:# g' O. U3 a" K, |0 x" L# e * O0 s1 F g' j& o9 T8 v5 Q# e
6 {. G- T0 w0 @ FastMathFunctions2 n4 _8 u/ B9 s9 H# `: B 主要提供SIN,COS以及平方根SQRT的运算。7 G* v! { U" Q4 k - _& k3 D3 V0 _% ~$ v- c$ v) [
5 ]- U# N. J0 \- p" J! u ComplexMathFunctions 复杂数学运算,主要是向量,求模等运算。下面是部分API截图:7 R' s) ~' w1 p) h# x+ X/ N
: J2 V& P2 r. H9 w FilteringFunctions 主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:! |# z6 l& D9 g1 O% s0 B
! P6 b5 C- b( _, N MatrixFunctions9 ^. w0 L7 S* q2 s( F7 R 主要是矩阵运算。
TransformFunctions3 \: ?$ }) s% O7 }; ^7 |7 b8 e 变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图:; R1 S9 f. D) w7 O( Q' Y q- h6 ~! x
ControllerFunctions 控制功能,主要是PID控制函数和正余弦函数。 ' B2 O3 Z) E9 W0 y% D6 w
StatisticsFunctions9 I3 P- O" O# ?8 _+ k( R. ` 统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。 $ E- N9 ]2 g: c& D& J
+ L! j5 M7 v# j# J* @0 X6 u. [ SupportFunctions* S: ]+ O% L. Y0 _- F 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。
CommonTables' \( K0 t! D# q' N, ] arm_common_tables.c 文件提供位翻转或相关参数表。
1.5 TI提供的32位定点DSP库IQmath 初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。 所以本次教程也会对IQmath做个介绍并配套一个例子。- o( _0 A+ y! ]6 i* J 1.6 ARM DSP软件替代模拟器件的优势' [: f) K) U" G8 B! ], H. n 我们日常生活中用到DSP的地方很多,以生活中的设备为例: & d+ X- H: t6 V- K6 B
+ {2 X" s; x0 c' O1 M( k4 B- e 通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。 5 C* U/ z' z" J3 l) d& _6 ? 降低BOM成本 将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。, Y/ E2 }! ^+ S$ Y3 W; K 5 g5 h+ ~& g: H2 O3 K$ H- x7 [! s 提高设计灵活性1 @" p0 I q# N2 G; c 使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。 6 R$ B' r( P6 I2 |$ C, Q b 减少产品尺寸 降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。0 i" i; ?1 r! |9 f { 2 G: p/ g, ~' o& ? 缩短设计周期时间6 ~# o* o l! s4 M: s4 }- ` 将模拟电路转换为软件有助于缩短设计周期。这有几个原因:$ C! b2 [1 d( }: L) x9 e2 G 首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。 其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。& e* f0 P0 B& H+ `& B R N 现场适应性9 _% Z) O ~% N' T" N1 @; Z! H 在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。 用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。 $ B3 h# m( c. x. {5 U2 A. K 1.7 Matlab安装' w6 l$ P. t! d P% t; ~( g/ ` Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。6 g1 u( |* q p. V& [ 1.8 总结 本期教程主要是做一些入门性的介绍,下期教程将开始实战。, ]$ v* V1 t* S9 ?" B+ U# E- }! I, a) i 2 T2 n, A% h! f3 H) U. g . Z8 T( R' G# F" b |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版