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

置顶/星标公众,不错过每一条消息

640?wx_fmt=png

今天有人问:GPIO配置不同输出速度会有什么影响? 你知道答案吗?

1写在前面

这个问题看起来比较简单,我相信很多人都能说出答案。

但是,很多人都只是停留在表面,至于深层次的含义,估计很少有人思考


需要更深理解其中含义,可能需要结合特定场景来说,我自己也是在项目中才深刻体会其中含义。

2GPIO输出速度

不管标准外设库,还是STM32CubeMX配置GPIO输出引脚,都会有速度GPIO_InitStruct.Speed这个选项。


类似如下:

  GPIO_InitStruct.Pin = GPIO_PIN_5;	
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;	
  GPIO_InitStruct.Pull = GPIO_NOPULL;	
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;	
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

根据不同MCU型号,速度选项,有些有3个,有些有4个。一般定义在xxx_gpio.h文件中。

#define GPIO_Speed_2MHz  GPIO_Speed_Level_1   /*!< I/O output speed: Low 2 MHz  */	
#define GPIO_Speed_10MHz GPIO_Speed_Level_2   /*!< I/O output speed: Medium 10 MHz */	
#define GPIO_Speed_50MHz GPIO_Speed_Level_3   /*!< I/O output speed: High 50 MHz */

#define  GPIO_SPEED_FREQ_LOW        (0x00000000u)  /*!< Low speed       */	
#define  GPIO_SPEED_FREQ_MEDIUM     (0x00000001u)  /*!< Medium speed    */	
#define  GPIO_SPEED_FREQ_HIGH       (0x00000002u)  /*!< High speed      */	
#define  GPIO_SPEED_FREQ_VERY_HIGH  (0x00000003u)  /*!< Very high speed */


对于普通输出GPIO,使用STM32CubeMX配置,默认配置低:

640?wx_fmt=png

当然,如果配置成其他模式,有可能是中,或高。


比如:配置UART、CAN引脚,速度会是高。

提问:你想过为什么会是低、高吗?



3实验:测量GPIO输出波形

不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。


我以前经常测量MCO引脚输出时钟,测量过的人应该都知道,如果输出速度和配置速度不匹配,会明显看到波形不正常。


波形会出现不完整,幅度低等失真现象。


相信不用我说,有一定常识的人都能理解。



4具体原因

速度的配置,就是决定IO口驱动电路的响应速度。


我们需要结合实际情况配置速度,不同速度会有不同的影响

高低速差异:

配置高速:输出频率高,噪音大,功耗高,电磁干扰强; 


配置低速输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;

看到差异,相信很多人就能理解了。


实际情况中,比如:低功耗的产品,你会考虑功耗。


环境不好的场合,通信不稳定,你会考虑电磁干扰等。


举例:

如果你使用9600波特率UART通信,建议速度配置为低。


所以,如果你想使产品更加完美,速度配置也是关键的一项。

推荐阅读:

1.关于GPIO的几种模式

2.STM32开发工具之STM Studio调试和诊断工具讲解

5最后

我的知乎:strongerHuang

我的网站:www.strongerhuang.com

若觉得文章对你有帮助,随手点“在看、转发分享,也是我继续更新的动力。

扫描下面二维码、关注公众号,在底部菜单中查看更多精彩内容!

640?wx_fmt=jpeg

长按识别图中二维码关注

  • 25
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值