
1.1 初学者重要提示 关于学习方法问题,可以看附件章节A。 这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。& a% ^7 Q5 B T* `& W- p* z 当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON3 O( B% B/ @( G# u0 i 1.2 STM32H7的DSP功能介绍 STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下: ![]() 重点看如下两个设计单元:) X$ Q" w6 W' C5 b1 A) K 7 x: p" e, U- n' I DSP DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。 FPU7 a3 `; T! f7 s* O( K Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。 * W/ I( [$ D' ]$ ~& _/ ` 下面是Cortex-M3,M4和M7的指令集爆炸图: ![]() 通过这个图,我们可以了解到以下几点:, R( s2 n$ ]7 ` M4和M7系列有相同的DSP指令集。2 k! e! `+ O' y' F* u% d M7相比M4系列要多一些浮点指令集。' T- f; H* k# \ 同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。) W; n$ I! H4 o1 b 0 z6 d8 T6 q7 v) ^6 m 不同M内核的DSP性能比较: ( Q% _; }8 k( n7 o K' u. R% ? ![]() . q4 H9 }( Y! g4 G$ d Cortex-M7内核的DSP性能最强。 Cortex-M3,M4和M33是中等性能,其中M3最弱。 Cortex-M0,M0+和M23性能最弱。 1.3 Cortex-M7内核的DSP和专业DSP的区别0 n5 w9 E0 @; A M核的DSP处理单元与专业DSP的区别: c- m* B* H: I. _4 t1 h8 P ![]() 1.4 ARM提供的CMSIS-DSP库5 r# p; M- T3 L% n 为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法: BasicMathFunctions 提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图:2 B% s( r/ E# _' Z6 N ![]() " x. j; Y4 ?' o5 C* n FastMathFunctions4 q0 a% O3 k8 u1 h* [$ ~ 主要提供SIN,COS以及平方根SQRT的运算。 O- f2 r8 t! K/ Q 8 g# `6 B4 F7 h4 L9 q) u) j2 J ![]() ComplexMathFunctions! T8 N0 s8 u" i# [ 复杂数学运算,主要是向量,求模等运算。下面是部分API截图:8 O* S% v" A/ e/ U ! S: ~ F; ~0 t9 h2 G7 X) q ![]() , }2 H3 [4 A7 Z! X FilteringFunctions; b8 C/ r, V) q( i2 |5 e! | 主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:, F }' n) k/ _ L( ]8 w- p" d ![]() ' p' Y' t. k/ r3 d4 f MatrixFunctions% r6 |& F+ \# m! q 主要是矩阵运算。( a" M4 x6 ^8 V/ Q V/ e' w- D: R ; I5 T1 I& k% ] ![]() TransformFunctions 变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图: ' }. Q$ W+ a' c9 K- B: j% a* c2 A" D ![]() ControllerFunctions 控制功能,主要是PID控制函数和正余弦函数。 7 `( t: F6 h) o) t+ X- f ![]() 2 ]" I2 y" X8 j+ @3 g3 y StatisticsFunctions 统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。 7 A' K$ \8 B- x1 s# Z3 h ![]() SupportFunctions 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。 ![]() CommonTables arm_common_tables.c 文件提供位翻转或相关参数表。 ( c2 r" V/ z0 [$ Q) y- @0 ^ ![]() 1 ^7 D3 B6 A0 N& n. A ?! q+ P, l 1.5 TI提供的32位定点DSP库IQmath, Q9 x, q: o6 d4 [6 A5 w' y 初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。 $ I, S6 s2 Z8 v/ M7 X8 q) j 所以本次教程也会对IQmath做个介绍并配套一个例子。 ' K" n$ R# q) p- W0 Y9 g5 i, N1 v- k 1.6 ARM DSP软件替代模拟器件的优势3 t3 F: u/ x k7 v 我们日常生活中用到DSP的地方很多,以生活中的设备为例: ![]() 4 Y* q0 }& q+ s$ _5 M# e. ^/ Z 通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。 降低BOM成本: a$ p8 P1 U, T- V, p 将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。6 ~% r+ ^$ l- b, ~' ^) Q& J9 L" x 提高设计灵活性, T6 ]: a/ v+ q) m5 P3 h9 B3 J' P 使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。" O# o5 n1 d& L8 N. ]( ^; Q9 [ 减少产品尺寸 降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。4 [* a3 k0 T @3 A( _ ' b$ c/ j7 f3 R# t, I 缩短设计周期时间 将模拟电路转换为软件有助于缩短设计周期。这有几个原因:" h/ a$ c E3 c( N 首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。 其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。 4 f( T+ B# ?! R# k1 @" N 现场适应性0 @9 b0 ^' P! A+ [/ _ 在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。' [5 e7 i4 H, p: @! {6 o; V1 \ # m/ l- N C* W# a. E 用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。0 O. j+ D" s8 D" V6 L2 I 1.7 Matlab安装2 u# U" e4 h. C9 y* V Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。 1.8 总结 本期教程主要是做一些入门性的介绍,下期教程将开始实战。7 F# j* W& n. u. D# e 5 B. X5 U/ [( t( o( Z$ x5 Q6 I |
拷打cubemx【002】——自定义还需基于芯片的工程
STM32硬件结构学习
STM32中BOOT的作用
STM32H7的TCM,SRAM等五块内存基础知识
STM32H7的TCM,SRAM等五块内存基础知识
简单了解一下STM32H7的BDMA
有奖预约 | STM32H7R7基于RT-Thread RTOS的智能终端GUI解决方案
【STM32H745I-DISCO】基于TouchGFX的工业控制器界面设计
STM32H745I-DISCO串口打印
【STM32H745I-DISCO】TouchGFX探索——3、触屏滑屏操作与中文显示