STM32的GPIO配置不同输出速度会有什么影响? 今天有人问:GPIO配置不同输出速度会有什么影响? 你知道答案吗? 1写在前面 这个问题看起来比较简单,我相信很多人都能说出答案。 但是,很多人都只是停留在表面,至于深层次的含义,估计很少有人思考。 需要更深理解其中含义,可能需要结合特定场景来说,我自己也是在项目中才深刻体会其中含义。 2GPIO输出速度 不管标准外设库,还是STM32CubeMX配置GPIO输出引脚,都会有速度GPIO_InitStruct.Speed这个选项。 类似如下: - GPIO_InitStruct.Pin = GPIO_PIN_5;$ q2 B6 L) U% B r# U0 c' Y
- % U' f* F+ n& q$ T
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
% b# h: w, ?! ]0 t) P - 8 }0 v3 x% C+ ?9 I# y A
- GPIO_InitStruct.Pull = GPIO_NOPULL;. ~9 h: M i; g+ N* L/ e
& g4 u O* K" y: a$ h8 @: ?' ~- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;1 K% F7 j5 U. q( [/ {( ]( T8 N
$ d* ?/ B# z- r& u1 G- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
复制代码 + ]: o5 q1 P& X* T& ~
根据不同MCU型号,速度选项,有些有3个,有些有4个。一般定义在xxx_gpio.h文件中。 - #define GPIO_Speed_2MHz GPIO_Speed_Level_1 /*!< I/O output speed: Low 2 MHz */2 L7 d( j! b& g& _, `- n5 Q
; r- [# m9 l0 z5 Q( \$ L- #define GPIO_Speed_10MHz GPIO_Speed_Level_2 /*!< I/O output speed: Medium 10 MHz */
1 V8 g1 H0 P9 c3 J0 ] - # P0 h5 W% p7 o g4 P. N
- #define GPIO_Speed_50MHz GPIO_Speed_Level_3 /*!< I/O output speed: High 50 MHz */
复制代码 - #define GPIO_SPEED_FREQ_LOW (0x00000000u) /*!< Low speed */) ^: q. u x# Z3 L2 b5 [
- ' U3 [7 e1 {$ S' n# u
- #define GPIO_SPEED_FREQ_MEDIUM (0x00000001u) /*!< Medium speed */3 B; v! s6 L# C0 y8 M! [
- r* Q2 L" Z$ Q0 Q( c- #define GPIO_SPEED_FREQ_HIGH (0x00000002u) /*!< High speed */5 q& Y* N9 \( R
- _. c; o5 T- Z6 t- #define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003u) /*!< Very high speed */
复制代码- R W8 m# x; }% }+ J
对于普通输出GPIO,使用STM32CubeMX配置,默认配置低: 当然,如果配置成其他模式,有可能是中,或高。 比如:配置UART、CAN引脚,速度会是高。 提问:你想过为什么会是低、高吗? 3实验:测量GPIO输出波形 不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。 我以前经常测量MCO引脚输出时钟,测量过的人应该都知道,如果输出速度和配置速度不匹配,会明显看到波形不正常。 波形会出现不完整,幅度低等失真现象。 相信不用我说,有一定常识的人都能理解。 4具体原因 速度的配置,就是决定IO口驱动电路的响应速度。 我们需要结合实际情况配置速度,不同速度会有不同的影响。 高低速差异: 配置高速:输出频率高,噪音大,功耗高,电磁干扰强; 配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能; 看到差异,相信很多人就能理解了。 实际情况中,比如:低功耗的产品,你会考虑功耗。 环境不好的场合,通信不稳定,你会考虑电磁干扰等。 举例: 如果你使用9600波特率UART通信,建议速度配置为低。 所以,如果你想使产品更加完美,速度配置也是关键的一项。 文章出处: strongerHuang % c9 ]1 m+ W/ J# C
|