STMCU小助手
发布时间:2022-8-3 21:13
|
1. 引言& V) f- Z3 M$ p9 F( M 客户在使用 Cordic 进行运算时候,对 Cordic 打断 CPU 的时间存有疑问,认为时间不是按照芯片手册中所描述的时钟周期,本文针对 Cordic 时间测试用于澄清计算周期,同时可作为客户评估使用,本文以 STM32G431 作为示例。$ {: M6 m) N& c 6 q$ q" Q: V% j% b# r - e, y% ?( }7 G6 ^/ m0 a 2. 执行周期1 F+ w# A/ `. ?: f 在 STM32G431 参考手册中有关于 Cordic 的精度及迭代次数描述,另外还有执行周期的对应值,从图上我们了解到设定精度数据等同于指令执行时间,因为 Cordic 执行时会自动耗损CPU 执行周期,因此我们可以了解执行速度等同于精度数据设定。 ' z2 ?+ k; r# c3 x8 B- K# | Y" q $ n# i3 }5 a" f" t9 }+ m3 H
' R2 U; N7 `. i) \ : P# Q+ C8 [" x& G 3. 测试方法 我们分两种写法: ~/ {+ C" y- i6 l7 ]( Y 1.单次执行测试 2.多次测试取平均值3 @, [+ u0 C6 T5 Q9 M/ | 测试代码中 hcordic.Instance->也可以写为 CORDIC->;读取 TIM3 的寄存器数据就可以知道这段代码执行的时间,其中 TIM3 配置时钟为 170MHz 等同于 CPU 执行时间;TIM3 的 CNT数据即指令执行周期。( K$ }! N) U' ~- P2 j6 X6 ^ 3.1. 单次执行测试# Q( W$ |; }; H7 o, B* d9 _ 当使用单次测试时,我们使用 16 次迭代测试,精度配置字为 4; 图 2.单次执行时间测试代码
# m9 ?! X6 W. d9 z/ _% e" P
去除数据 load 设定时间以及 TIM3 执行停止指令时间,可以看到真正 Cordic 运算正弦运算的指令执行周期为: 24cycle -(3+2+2+1+2+3+5+1+1)cycle = 4 cycle;1 N4 d( f# C+ X 也就是在写入 WDATA 和读取 RDATA 之间的 CPU 占用时间为 4 个 CPU 时间。 ' E5 c5 G p. u/ { 完整版请查看:附件8 s1 c" B0 ~& `, D |
LAT1059_STM32_Cordic运算速度评估_V1.0.pdf
下载702.11 KB, 下载次数: 45
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版
突然宽裕了一路铁路推了推他