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

STM32的GPIO配置不同输出速度会有什么影响?

[复制链接]
STMCU小助手 发布时间:2020-12-24 14:04
STM32的GPIO配置不同输出速度会有什么影响?
4.1.jpg
今天有人问:GPIO配置不同输出速度会有什么影响? 你知道答案吗?
1写在前面
这个问题看起来比较简单,我相信很多人都能说出答案。
但是,很多人都只是停留在表面,至于深层次的含义,估计很少有人思考。
需要更深理解其中含义,可能需要结合特定场景来说,我自己也是在项目中才深刻体会其中含义。
2GPIO输出速度
不管标准外设库,还是STM32CubeMX配置GPIO输出引脚,都会有速度GPIO_InitStruct.Speed这个选项。
类似如下:
  
  1. GPIO_InitStruct.Pin = GPIO_PIN_5;
    3 z! d7 n5 B" ~" d8 n: {" E* V& P' D, r
  2. ! ]( B7 E6 C. E+ a' \! c) D
  3.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;3 Q  o4 r) F2 y% M6 \

  4. " ?; [' I- }! ~
  5.   GPIO_InitStruct.Pull = GPIO_NOPULL;
    + A( [. @( F# E& u+ e* a7 r5 f" j- ~

  6. ' w' W# W+ o9 ~  C7 J! Y4 j
  7.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;2 d. J( I9 G/ B# p' j1 _, ~8 c; Q

  8. ; r% a2 l& R4 L$ r" o# ~& [% A2 v) R
  9.   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
复制代码

" {  J# w3 `# q) `% x7 M! C
根据不同MCU型号,速度选项,有些有3个,有些有4个。一般定义在xxx_gpio.h文件中。
  1. #define GPIO_Speed_2MHz  GPIO_Speed_Level_1   /*!< I/O output speed: Low 2 MHz  */
    , F3 K% D% D& M4 g* d9 Y" y
  2. $ t* g! y4 k  P
  3. #define GPIO_Speed_10MHz GPIO_Speed_Level_2   /*!< I/O output speed: Medium 10 MHz */" ?6 d. ^' L% b( B+ F: q
  4. 9 G- P$ ~! V4 \2 q4 e7 W  \
  5. #define GPIO_Speed_50MHz GPIO_Speed_Level_3   /*!< I/O output speed: High 50 MHz */
复制代码
  1. #define  GPIO_SPEED_FREQ_LOW        (0x00000000u)  /*!< Low speed       */
    ' z1 A" `/ E  j$ D2 R; {
  2. - f- M: y8 R, G  {& c! S7 {
  3. #define  GPIO_SPEED_FREQ_MEDIUM     (0x00000001u)  /*!< Medium speed    */
    1 k4 I4 i: R! [) \3 V
  4. 2 J" r& m$ N3 S
  5. #define  GPIO_SPEED_FREQ_HIGH       (0x00000002u)  /*!< High speed      *// |. w1 i5 V6 S, _- {" c

  6. 8 E  }' y$ _3 d  p" q# m0 f
  7. #define  GPIO_SPEED_FREQ_VERY_HIGH  (0x00000003u)  /*!< Very high speed */
复制代码
+ }5 N  L( C' M6 u7 @# J; P& L
对于普通输出GPIO,使用STM32CubeMX配置,默认配置低:
4.2.png
当然,如果配置成其他模式,有可能是中,或高。
比如:配置UART、CAN引脚,速度会是高。
提问:你想过为什么会是低、高吗?
3实验:测量GPIO输出波形
不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。
我以前经常测量MCO引脚输出时钟,测量过的人应该都知道,如果输出速度和配置速度不匹配,会明显看到波形不正常。
波形会出现不完整,幅度低等失真现象。
相信不用我说,有一定常识的人都能理解。
4具体原因
速度的配置,就是决定IO口驱动电路的响应速度。
我们需要结合实际情况配置速度,不同速度会有不同的影响。
高低速差异:
配置高速:输出频率高,噪音大,功耗高,电磁干扰强;
配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;
看到差异,相信很多人就能理解了。
实际情况中,比如:低功耗的产品,你会考虑功耗。
环境不好的场合,通信不稳定,你会考虑电磁干扰等。
举例:
如果你使用9600波特率UART通信,建议速度配置为低。
所以,如果你想使产品更加完美,速度配置也是关键的一项。
文章出处: strongerHuang

  A; A' Q# L  C& c' y) p2 h
赞 收藏 评论0 发布时间:2020-12-24 14:04

举报

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