你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32L053 的 GPIO 翻转速度测试

[复制链接]
STMCU小助手 发布时间:2022-2-27 16:23
一. 前言
2 k) V) K5 @' F. d; L测试 STM32L053 芯片在系统时钟 8Mhz 的情况下,其 GPIO 电平的翻转速度。) o+ M5 [- I* @5 {8 |5 j

4 m$ C- n' n, f7 S( b: L1 P% C二. 说明
! O1 M! [8 L6 O$ b8 FSTM32L053 芯片是 M0+的内核,其 GPIO 的外设直接挂在内核上。
( \% ~8 C: D$ y9 ]! L2 V
) I1 ?1 E; l0 @: \  A 3TAO0[`GI~9L4J8V6ZG~J]T.png
2 z; Y5 J" |( |# W
% s" t( Z9 t9 b三.测试环境
/ {7 E8 h( ^% u" n6 N. s# h软件环境:IAR 7.20,STM32CubeMX Version 4.3.0,STM32Cube V1.0
; A/ _( K4 h8 C+ c8 B硬件环境:STM32L053 Nucleo,MB1136# L" b  g8 |) X7 r  m3 L
( g4 u" D/ K' ~' ]5 h
四.测试流程
: g6 E& Z, H8 }7 v" [5 ?打开 CubeMX 的软件,点击新建工程,选择与目标硬件板相同的芯片型号,GPIO 口选择 PA5。系统时钟通过内部 HSI 实现 8MHz。如下图:
6 R2 T1 S& K# q1 \" A! }
. [8 X* V7 e5 R0 ?6 P H2H)_N{5J`624%4{CAT6_HY.png - \4 u+ W8 j; D3 [+ _# m, \
& @$ y) Y6 l8 L. U+ }
点击 OK 按钮,弹出另外一个对话框,选择设置系统时钟 8Mhz。HIS 最终通过 PLL 锁相环输出 8MHz的时钟。
0 w. w: h! F/ G( U7 u5 z! s3 |6 W6 G7 b, A

' F( v& `# ?& p APES638CPRB)M0ON44XESP3.png
8 U5 ~! A1 J' L. _8 b* I; G. ~" k9 s+ t9 _( M$ [" D
设置 PA5 为普通 IO 口输出模式。# L- B3 ?4 e, E3 G; B  T

! j* b% M3 F% ~$ }7 ^, ^5 T( W U%8U(M1Z3)ESQG6UZB6%JBS.png / v& \9 O) z4 x5 O4 p- B
; a) ?2 C. t( n! e8 _; s
并配置其端口的摆率为 High Speed.8 b$ N( t: {% `, t

1 q% K* H4 r9 r
1 j6 u+ `+ b% Y1 E# y9 h 9Q4P{C6VP%_H39_X7O$N{U6.png ; X/ c3 `$ A1 \6 H2 p! e4 k' T/ Z) N

+ g4 U6 d* r/ G8 M5 }基本上这里想要的设计完成了,让 cube 生成相应的代码,然后去验证 GPIO 的电平翻转速度。
( b  _$ Z' ]" K5 {% ^* i( Q4 a1 z
% [( C9 I1 L7 R+ l
& j* P/ V8 u- X `EY(]`MVLMC)C~[D5LSGN~6.png
  `$ W8 y/ R7 H4 a& t. d
4 W- W8 K7 c) H7 e* X打开项目工程。
; r6 F' L1 Y0 S4 [" y6 k7 h在 main 函数的 while 循环中,添加 GPIO 口的翻转语句。期望的 GPIO 翻转速率能够达到 4MHz,在系统时钟 8Mhz 的情况下。按照 8Mhz 与 4Mhz 的关系,需要单周期的指令去执行电平的高低切换,显然此时运用调用库函数的方法是不可取的。应该直接操作寄存器。5 X) L3 ]2 P1 E1 i
按照上述思路,实现方法如下图,用示波器观察 GPIO 口的波形。8 G) f7 f8 b& H  x+ @
1 d! i4 `, j1 L- o! K" a8 b
" n" l2 y% ?! l
XM)(OQH`@66PMIX0IGC}A.png
0 m, c+ f2 e3 @$ d& A' T
0 w: k6 R  x' X& h" ~测试发现,只能有 1.005Mhz。
& M1 P7 N% i( O1 {5 G! R和自己的想法差别很大,究竟怎么回事呢?查看反汇编语句,发现虽然自己是直接对寄存器的操作,但是反汇编却执行了多条语句。
- c2 ^& k# J" Z7 m2 ?0 D: g$ y8 Q- x( e9 }
, g/ t' }1 ]0 X! ^! p9 b
C4V15X007PDI_E7KOU`P}~K.png
( D* O1 X* Q9 q9 u3 ~, H7 k
& @* p6 A* ~( H  }8 U, H哦,立马查看编译器的优化等级。原来我是设置了代码不优化的。; X2 g! x4 c& Y" p3 S$ K! g
' Q0 U9 q% C5 b( V2 O: R

4 L" b7 P/ D# L SDFV70K7TY`1B8(TR~OP$RR.png
! z. D4 Q- V& r8 t+ R1 s
0 P$ f% p% a" ~6 v% p% f# p; f, `立马更新优化等级,逐个变更,看看各自的对比:: V- g. z  e+ [  s+ i  v
优化等级为 Low 时:和没有优化时的波形一样。% ]5 }2 v# Z) r0 J0 }8 W' F
优化等级为 Medium 时:编译器旁边的 Enabled transfomations 的设置保持默认,GPIO 口的翻转速度达到了 4Mhz.# k9 a5 H8 k$ B6 E8 I* X* l: D

+ S. d0 I; K- G7 ]
7 i6 v, @% ^/ q. d% V- j& I {I[P]U0TY3OA{M1)0XBVZ{B.png
  f9 ], n/ O- [4 L" n  w  ?1 t6 \$ B& I, Y. h& B; K
优化等级为高时,和优化等级为 Medium 的波形一样。3 V! B$ Y' A, [1 e) _
其实,也可以通过反汇编的执行语句看出 GPIO 口的翻转速率。只要执行单周期指令,GPIO 口的翻转速度就可以达到最高- w5 G% I- g2 q/ @

$ x, C0 a2 i: s, ?5 @, A+ m5 u& a% U! [
4Y3{8IER6}PYZWQZ1`WSQGK.png
- L! J. c- Q5 O4 Y% [: u
赞 收藏 评论0 发布时间:2022-2-27 16:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版