干货 | 单片机IO配置,不同速度有什么区别?
这是一个初学者不会去了解的问题,但会使老司机掉坑的问题。 这也是最近在技术交流群看到的一个问题,今天我们就简单聊一聊。
这个问题看起来比较简单,我相信很多人都能说出答案。 但是,很多人都只是停留在表面,没有在项目中经历过,也没有更深入的去了解。
很早以前的单片机可能没有输出速度这个配置选项,但后来的单片机基本都有配置速度的选项。下面,我们结合STM32简单介绍一下。
GPIO输出速度
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);
#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配置,默认配置低:
当然,如果配置成其他模式,有可能是中,或高。
比如:配置UART、CAN引脚,速度会是高。
测量GPIO输出波形
不知道大家用示波器测量过GPIO输出波形没有,特别是在高速(单位M)的时候。
差异原因
-
配置高速: 输出频率高,噪音大,功耗高,电磁干扰强;
-
配置低速: 输出频率低,噪音小,功耗低,电磁干扰弱;提高系统EMI(电磁干扰)性能;
推荐阅读
· END ·