![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
1.1 初学者重要提示. r; p0 v) U# _+ h8 l9 x+ Y" m* q 关于学习方法问题,可以看附件章节A。 这几年单片机的性能越来越强劲,DSP芯片的中低端应用基本都可以用单片机来做。9 q8 E5 D9 V- K# y 当前单片机AI也是有一定前景的,ARM一直在大力推进,很多软件厂商和研究机构也在不断的努力。通过此贴可以了解下:单片机AI的春天真的来了,ARM最新DSP库已经支持NEON 1.2 STM32H7的DSP功能介绍 STM32H7是采用的Cortex-M7内核,而DSP功能是内核自带的,下面我们通过M7内核框图来了解下: ! ^! g' b! N8 y6 @% {# Y @" a ![]() 7 e/ P( Y2 x% T6 ~) D! E) w 重点看如下两个设计单元:% c N: M8 N: B . c3 k4 x0 q4 b. Q. J DSP' J4 h0 Z5 \$ |' o9 f DSP单元集成了一批专用的指令集(主要是SMID指令和快速MAC乘积累加指令),可以加速数字信号处理的执行速度。! x7 }, |, @) t& I; S2 m FPU Cortex-M7内核支持双精度浮点,可以大大加速浮点运算的处理速度。 下面是Cortex-M3,M4和M7的指令集爆炸图: ![]() 通过这个图,我们可以了解到以下几点:8 R; g6 Y% }( F* r3 ?/ G2 _3 a M4和M7系列有相同的DSP指令集。 M7相比M4系列要多一些浮点指令集。 同时这里要注意一个小细节,浮点指令都是以字符V开头的。通过这点,我们可以方便的验证是否正确开启了FPU(MDK或者IAR调试状态查看浮点运算对应的反汇编是否有这种指令)。 ; D% R$ G0 q% D( q 不同M内核的DSP性能比较:: z/ P C: K; F+ G8 j # @2 D4 M) _) A0 X$ G3 ? ![]() / v5 p7 w d4 l8 r0 q2 N+ V Cortex-M7内核的DSP性能最强。 Cortex-M3,M4和M33是中等性能,其中M3最弱。 Cortex-M0,M0+和M23性能最弱。2 E' |8 Q* T' h( ^' T$ n" V( p 1.3 Cortex-M7内核的DSP和专业DSP的区别 M核的DSP处理单元与专业DSP的区别: ( ?6 H, r9 Y( N6 ], f9 R o0 W ![]() $ r+ U) O0 m" p 1.4 ARM提供的CMSIS-DSP库 为了方便用户实现DSP功能,ARM专门做了一个DSP库CMSIS-DSP,主要包含以下数字信号处理算法:5 X( v0 ^$ p, a( [9 E* U2 m BasicMathFunctions; }7 Y' g9 \' a4 @- }5 f 提供了基本的数据运算,如加减乘除等基本运算,以_f32结尾的函数是浮点运算,以_q8, _q15, _q31,结尾的函数是定点运算,下面是部分API截图: + Q2 g! W7 X9 x- T7 Z$ r7 { ![]() ; _8 q0 U' G3 h: Q) F2 K, M* h FastMathFunctions 主要提供SIN,COS以及平方根SQRT的运算。 ![]() ComplexMathFunctions: e! C- g. ^6 j3 N0 _ 复杂数学运算,主要是向量,求模等运算。下面是部分API截图: / s7 E" |- U! o8 k: V ![]() 9 e5 Q( x) V) B9 T FilteringFunctions 主要是滤波函数,如IIR,FIR,LMS等,下面是部分API截图:, i0 s8 r7 X& z ![]() 5 s; A; R# y5 z/ Z* L MatrixFunctions 主要是矩阵运算。 9 H, x+ J0 _% W2 t* v% } ![]() TransformFunctions) ~" X+ }" X6 p$ g, c 变换功能。 包括复数FFT(CFFT),复数FFT逆运算(CIFFT),实数FFT(RFFT),实数 FFT 逆运算,下面是部分API截图: $ Q4 D7 f% U: \' Z ^7 b8 v ![]() ControllerFunctions 控制功能,主要是PID控制函数和正余弦函数。 ![]() ~5 F, Y7 ]' ]2 x StatisticsFunctions! F, M. _7 u: _ 统计功能函数,如求平均值,最大值,最小值,功率,RMS等,下面是部分API截图。/ ]9 d& g) a/ c ]$ w* J- N- B ![]() - s5 T7 B- k3 i- @) V2 N k SupportFunctions 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换。 : W7 M5 I1 Z+ ~- p8 ` ![]() 8 L, q$ h$ j' X/ O" Z( T" [5 c CommonTables arm_common_tables.c 文件提供位翻转或相关参数表。9 R( a; `& J9 ]* f( F& l( t" n ![]() 8 l9 e* j9 @& ~' W 1.5 TI提供的32位定点DSP库IQmath 初次使用这个定点库,感觉在各种Q格式的互转、Q格式数值和浮点数的互转处理上更专业些,让人一目了然。 所以本次教程也会对IQmath做个介绍并配套一个例子。 1.6 ARM DSP软件替代模拟器件的优势6 q) q/ E6 m) k" C# n 我们日常生活中用到DSP的地方很多,以生活中的设备为例:" N1 X7 g% {1 s 3 j% d3 }* y- }8 y# u ![]() 9 U V7 D! q; W% Q* q$ z! ? 通过ARM DSP软件替换模拟组件可以降低成本,PCB的面积和设计时间,同时提高灵活性和适应性。$ F( {3 f4 S& v: |$ X3 X* G) X% ~ 1 E! @' d9 F p% V9 i 降低BOM成本 将模拟电路转换为软件的最明显的好处是材料清单成本(BOM)减少。) z& R- M8 v5 b" j) F ' b2 Z0 e3 _" e; k 提高设计灵活性% _4 D4 t0 ^( c9 s( { 使用模拟滤波器来不断调节电路以获得最佳性能时,这种情况并不少见。较小的电路板修改会导致新的电气特性突然改变寄生电容或电感,从而导致模拟电路达不到预期。将模拟电路转换为DSP算法不仅可以消除这种风险,还可以根据软件的需要进行调整,且更具灵活性。4 c$ f5 V; A: h/ I 减少产品尺寸+ P* @3 W7 u8 q6 \# s' t. Q 降低BOM成本具有额外的好处,也允许开发人员减少其产品的尺寸。- t |# |; W4 S3 l 缩短设计周期时间2 H# e' A- R2 a7 C; X1 e3 { 将模拟电路转换为软件有助于缩短设计周期。这有几个原因:$ B0 u; l; d+ U' V 6 K; x6 {# |( C 首先,有很多工具可供软件设计人员模拟和生成替换模拟电路所需的DSP算法。这通常比通过电路仿真和测试调整电路所需的时间快得多。* b6 {7 ?5 h0 u 其次,如果需要进行更改,可以在软件中进行更改,这可以在几分钟内完成,而不必重新调整电路板或进行硬件修改。. e7 E0 _1 k& |, |6 X# N1 C / G8 W0 O2 D+ A9 G! O7 b 现场适应性! ?( z# q7 V0 ~$ O- x- B 在某些产品中,设计者很难预料用户在现场所遇到的各种情况。使用DSP算法,设计者甚至用户都可以进行实时调整,以适应现场条件,而无需进行大量硬件修改。 用数字信号处理算法替换模拟电路有很多好处。需要设计者在实际应用中权衡利益,选择最合适的方案。 ) M: I9 c& K: ]( R4 v! p 1.7 Matlab安装 Matlab是学习DSP过程中非常重要的辅助工具,也是需要熟练掌握的,本教程的第2章到第5章进行了入门介绍。 : M! W& L$ H, {3 |1 M. ] 1.8 总结 本期教程主要是做一些入门性的介绍,下期教程将开始实战。 2 p, }; ^0 Y: e+ w: |% }! O( o" Q : ]0 ?( m" j: u* \" r" h3 c |
NUCLEO-H723ZG开发板试用 ——串口点灯测试
兔哥的杂谈【002】——如何性价比更高地去编译STM32
【Wio Lite AI视觉开发套件】+简单刷个屏
工程师笔记 | STM32H7 RAMECC功能及应用
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理